- Java 98.8%
- Shell 0.7%
- Python 0.5%
The 26.x jar runs across all of 26.1–26.2 via the runtime compat shim, so name it sorted-fabric-<ver>-mc26.x.jar instead of mc26.2. 1.21.x keeps its exact minecraft_version. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012wSCS1V1UUVZMYVeH8wNjc |
||
|---|---|---|
| 1.21.x | ||
| 26.x | ||
| extras | ||
| mappings | ||
| META-INF | ||
| .gitignore | ||
| build-all.sh | ||
| build_icons.py | ||
| CHANGELOG.md | ||
| features.md | ||
| icon.png | ||
| icon_c_quick_dump.svg | ||
| icon_c_quick_empty.svg | ||
| icon_c_quick_fill.svg | ||
| icon_c_quick_stack.svg | ||
| icon_c_search.svg | ||
| icon_c_sort.svg | ||
| icon_ideas.md | ||
| icon_preview.png | ||
| modrinth.md | ||
| README.md | ||
Sorted
A client-side Fabric mod that keeps your inventory organized automatically — and gives you powerful tools to manage chests and nearby containers without ever opening a menu you didn't ask for.
Supports Minecraft 26.x and 1.21.x.
Features
Auto-sort on pickup
Every time you pick up an item your inventory is re-sorted in the background. No button press, no delay. Items are grouped by category and placed on a consistent side of your hotbar and main inventory:
| Zone | What goes there |
|---|---|
| Hotbar left (slots 0–2) | Tools (pickaxe, axe, shovel, hoe, shears) |
| Hotbar center (slot 3) | Weapon (sword / trident) |
| Hotbar right (slots 4–8) | Freely used / overflow |
| Main inventory top rows | Blocks and building materials |
| Main inventory bottom rows | Food, potions, miscellaneous |
| Offhand | Never touched by auto-sort |
Categories and slot assignments are configurable in the mod config.
Sorting buttons
Small vanilla-styled buttons appear inside any inventory screen. They use sprite references from the vanilla GUI atlas so they inherit whatever texture pack you have loaded automatically — no custom textures shipped by the mod.
| Button | Action |
|---|---|
| Sort | Re-sorts your main inventory into the configured zone layout |
| Quick Empty | Moves every non-hotbar item into the nearest containers in range |
| Quick Stack | Stacks items from your inventory into matching stacks already in nearby containers |
| Quick Fill | Pulls items from nearby containers to top up existing partial stacks in your inventory |
Chest sorting
Open any chest and the sort button appears in the chest UI. Clicking it sorts the chest contents using the same category rules. Works on single chests, double chests, barrels, and any container that exposes a standard slot layout.
Chest search
Open the search UI (keybind or the ModMenu config button) to search across all containers the mod has scanned nearby. Results show the container's position, dimension, and how many of the matching item it holds.
The chest index is built from containers you have opened. It is cached locally per world/server via SQLite and updated the next time you open a container. The cache invalidates automatically — broken containers are dropped, and entries are validated when their chunk loads.
Quick stack to nearby containers
One keybind scans containers within the configured radius and pushes every item from your inventory that already has a matching stack somewhere in those containers. Essentially "deposit like items" from every Terraria player's wishlist.
Action throttle
Every sort, stack, or transfer is applied as a queue of slot-click actions, drained on the client tick. Firing them all at once can look like automation and get you flagged by strict anti-cheat.
By default the queue drains at 4 actions/tick (~80/sec) — a full inventory sort finishes in under a second without dumping the whole burst in a single tick. You can change the manual rate (Actions per tick) or set it to 0 for unlimited.
Adaptive per-server throttle. When Auto-lower on kick is enabled (default), the mod watches for server-initiated disconnects — a kick or shutdown packet, never your own "Disconnect" click. If one lands while a sort or transfer is in flight, it's treated as a possible anti-cheat kick: the action rate for that server is stepped down one rung and remembered, keyed by host.
- Step-down ladder (actions/sec): 80 → 40 → 20 → 10 → 5, never below the configurable floor (
Minimum auto rate, default5/sec). Because the drain runs on a fractional budget, rates below 20/sec spread one action across several ticks. - The learned rate persists across sessions and re-applies automatically. On rejoin you get a one-line chat notice showing the current cap and how many kicks were learned.
- Only kicks that coincide with active sorting count — bans, AFK timeouts, and restarts are ignored, so the rate doesn't ratchet down for unrelated disconnects.
- Per-server limits are individually resettable in the config, plus a "Reset all" button.
Server compatibility — built-in disabled list
Certain servers run their own anti-cheat or have rules that explicitly ban inventory automation. The mod ships with a built-in list of known servers where the mod fully disables itself the moment you connect — no buttons, no keybinds, no cache updates. Equivalent to not having the mod installed.
Built-in blocked servers (maintained in the mod, updated with releases):
| Server | Reason |
|---|---|
mineplex.com |
Anti-cheat + server rules |
hypixel.net |
Anti-cheat (Watchdog) + server rules |
cubecraft.net |
Anti-cheat + server rules |
hivemc.com |
Anti-cheat + server rules |
mccentral.org |
Anti-cheat + server rules |
minehut.com (lobbies) |
Shared anti-cheat across hosted servers |
funcraft.net |
Anti-cheat + server rules |
playmc.games |
Anti-cheat + server rules |
Matching is done on the resolved hostname. IP addresses that resolve to a blocked hostname are also blocked. Subdomains of a blocked host are blocked (e.g. lobby.hypixel.net matches hypixel.net).
Configuration
Accessed via ModMenu. All options are stored client-side.
Auto-sort
| Option | Default | Description |
|---|---|---|
| Enable auto-sort on pickup | true |
Triggers a sort every time the pickup event fires |
| Sort hotbar | false |
Whether auto-sort is allowed to rearrange hotbar slots |
| Category layout | (see above) | Which item categories map to which inventory zones |
Blacklist
Fine-grained control over what the mod never touches automatically. Any item or tag on the blacklist is skipped by auto-sort, quick stack, and quick empty.
Built-in presets (toggle individually):
- Never touch offhand — offhand slot is always left alone (on by default)
- Never auto-stack tools — tools are sorted but never moved into containers by quick stack / quick empty
- Only stack non-rare tools — allows common tools to be stacked out but protects enchanted or renamed tools
- Never auto-stack enchanted items — anything with an enchantment is treated as protected
- Never auto-stack named items — anything with a custom name is treated as protected
- Custom item blacklist — free text field accepting item IDs and tags (
minecraft:diamond_sword,#minecraft:swords, etc.)
Quick stack / nearby containers
| Option | Default | Description |
|---|---|---|
| Default search radius | Same room | Starting radius for quick stack and search |
| Max scan radius | 64 |
Hard cap on the slider in the search UI |
Action throttle
| Option | Default | Description |
|---|---|---|
| Actions per tick | 4 |
Manual cap on slot-click actions dispatched per client tick (20 ticks/sec). 0 = unlimited |
| Auto-lower on kick | true |
Step a server's rate down one rung if a server-initiated disconnect lands while a sort/transfer is running |
| Minimum auto rate | 5 |
Floor (actions/sec) the auto-throttle will never step below |
| Learned limits | (per server) | List of servers with a learned rate, showing the current cap and recorded kick count; each is individually resettable |
| Reset all learned limits | — | Wipe every server's learned rate and kick history |
Server blacklist
| Option | Default | Description |
|---|---|---|
| Built-in blocked list | enabled |
Toggle the entire built-in blocked server list on or off. Disabling it does not affect your custom list |
| Custom blocked servers | (empty) | Additional server addresses where the mod is fully disabled. Accepts hostnames, IPs, and wildcards (*.example.com). One entry per line |
| Block subdomains | true |
Whether a block on example.com also blocks play.example.com, lobby.example.com, etc. |
| Show disabled notice | true |
Displays a brief chat message on join when the mod is disabled for the current server |
How the UI is built
All UI elements are drawn using vanilla Minecraft's Screen and widget system with vanilla sprite and texture identifiers — no custom texture files are bundled. Buttons reference sprites from the vanilla GUI atlas, so any resource pack that retextures the vanilla GUI automatically retextures Sorted's UI as well.
Item manipulation uses standard slot-click packet emulation for survival-mode container interactions.
Building
Each version lives in its own subdirectory with its own Gradle wrapper.
# 26.x
cd 26.x && ./gradlew build
# 1.21.x
cd 1.21.x && ./gradlew build
Both build tasks automatically deploy the output jar to your ModrinthApp Dev profile.
License
MIT