US-007: 69 tests pass; both exact-head CI checks passed.
Purpur Inventory Helper
A Purpur 26.2 plugin that sorts inventories with a craftable Sorting Stick, automatically replaces broken tools with equivalent tools from the player's inventory, and adds a stackable-component Dispenser recipe.
The approved behavior is specified in the SoMC OKF wiki.
The repository, checkout and new JARs use purpur-inventory-helper. Runtime SpigotInventoryHelper, Java entrypoint/packages, data namespace and sorting-stick/recipe keys remain unchanged. Replace the old JAR instead of loading both distributions. Old tags and spigot-inventory-helper-* assets are retained; the previous v1.2.0 download was checked for identical bytes after the rename.
Requirements
- Purpur 26.2 build 2618
- Java 25 or newer
Build
./gradlew clean check jar
The plugin JAR is written to build/libs/.
check includes nativeInventoryTest. It downloads the exact Purpur 26.2 build 2618 launcher,
verifies SHA-256
4a32d046a118804d89ca74ba89b798c98f6d8d1f310c18077ac573597049de31, and runs Paperclip in
patch-only mode under build/inventory-runtime/; it does not start a server, open a port, create a
world, or accept the EULA. The native suite executes real ServerPlaceRecipe, ServerRecipeBook
known/highlight codec persistence, and ResultSlot ingredient consumption for both Sorting Stick variants and the alternative Dispenser recipe, including repeated batch completion.
CraftServer, CraftPlayer, and client boundaries are doubled, so this is not evidence of live client
rendering, search interaction, packet transport, or a full server lifecycle. Those remain
non-blocking live checks.
Sorting Stick recipe
Place these ingredients vertically in the crafting grid's center column:
Chest or Barrel
Redstone Dust
Stick
Either storage-block variant produces one Sorting Stick. Both variants are universally discovered in the recipe book's Equipment category for online and joining players. Discovery is persistent and idempotent; reloading the plugin retains player recipe-book knowledge and ordinary vanilla state. If the two recipes cannot register as one complete group, recipe-book discovery is disabled while existing manual crafting and inventory behavior remain available.
Alternative Dispenser recipe
One ordinary Dropper + Tripwire Hook produces one ordinary Dispenser through a shapeless recipe in the recipe book's Redstone category. The alternative is universally discovered for online and joining players, supports native autofill and batch completion, and leaves Minecraft's Bow-based Dispenser recipe unchanged. If the alternative cannot register safely, existing Inventory Helper behavior remains available and discovery retries after a later successful registration.
Sorting inventories
Hold an authentic Sorting Stick and right-click:
- A chest or either half of a double chest to sort its complete inventory.
- A barrel to sort its inventory.
- Air or another block to sort player inventory slots 9–35.
Player hotbar, armor, and off-hand slots remain unchanged during player sorting. Compatible stacks are consolidated first, then items are ordered alphabetically by Minecraft material. Dissimilar metadata variants of the same material retain their relative order. Locked containers and interactions cancelled by protection plugins are not sorted.
Automatic tool replacement
When a main-hand tool breaks, an item with the exact same material is moved into the broken tool's selected hotbar slot on the next server tick. Main-storage candidates are preferred before tools in other hotbar slots. The complete replacement item is moved unchanged, preserving durability, enchantments, custom names, and other metadata. Off-hand breaks are ignored, and no unrelated item is moved when a match is unavailable.
Releases
Gitea Actions checks pushes and pull requests and stores a development JAR. Pull requests validate conventional commits. Main-branch conventional commits drive semantic releases when the repository defines a RELEASE_TOKEN with contents-write permission.