NEW FEATURES
First of all, apologies for the late release, life got in the way. However, there are some exciting new features in this release that you need to know of!
Client-Side only support
Inventory Sorter no longer requires server side support! I know a lot of you have been waiting for this! This is still a solution that is much more brittle on the system so please use the server side whenever you can, it will make for a much better experience for the underlying systems.
In client-side only mode, we're simulating a bunch of clicks that you would do to sort at the same time, basically blasting Minecraft with a burst of things it needs to do. This is how all client-side sorters work and it's really not ideal. On the server side, it's much more data driven and way less taxing on Mincraft itself.
Sorting rules!
Sorting rules let you tell Inventory Sorter that some items deserve special treatment, without having to replace the normal sorting mode.
For example, you can put all shulker boxes first, send bundles to the end, keep named tools in place, or move anything with container-like item data away from the middle of your sorted inventory.
Rules live in the settings screen under Sort Priority Rules. Each rule has two parts:
- a match expression, which decides which stacks the rule applies to
- a position, which decides what happens to those matching stacks
The available positions are:
First: matching stacks sort before everything elseDefault: matching stacks use the normal sort orderLast: matching stacks sort after everything elseIgnore: matching stacks are not sorted at all, and stay in their current slots
Ignore is the odd one out, and it is intentionally stronger than the others. If an item matches an ignore rule, it is removed from the sorting process before the first/default/last rules are considered. This is useful for "do not touch this" cases, such as tools, a named kit, or a special item you always keep in a specific chest slot.
Rule order matters
Rules are checked in the order they appear in the list.
If two rules use different positions, the position decides the broad placement. First items go first, normal/default items stay in the middle, and Last items go last.
If two rules use the same position, the rule higher in the list wins the tie. For example:
[
{ "match": "#minecraft:shulker_boxes", "position": "first" },
{ "match": "#minecraft:bundles", "position": "first" }
]
With this setup, shulker boxes come before bundles because the shulker rule is first. Both groups still sort internally using your selected sort type, such as name, mod, category, or id.
Ignore rules do not work like normal priority ties. If an item matches any ignore rule, it stays in its original slot even if it also matches a first or last rule.
Matching item ids
The simplest rule is an item id:
minecraft:bundle
This matches only bundles. For vanilla Minecraft items, the minecraft: part can be left out:
bundle
For modded items, use the full id:
some_mod:example_item
Matching item tags
Tags match whole groups of items:
#minecraft:shulker_boxes
This matches every shulker box color, not just one specific shulker box item.
Useful vanilla examples include:
#minecraft:shulker_boxes
#minecraft:bundles
Tags are especially useful for modpacks because datapacks and mods can add more items to a tag without needing to rewrite every sorting rule.
Matching item data components
Component rules match items that carry a specific kind of Minecraft item data:
@minecraft:container
This can be useful for broad categories of items that store something internally. For example, an item with container data can be sent to the end so filled storage-like items do not mix into the middle of ordinary blocks and materials.
Another useful example is:
@minecraft:bundle_contents
That matches bundle stacks that have bundle contents data.
Matching names
Name rules match the display name shown for the item:
name:"Meza's *"
The * means "any text here", so this matches names like:
Meza's Pickaxe
Meza's Fortune Pickaxe
Meza's Axe
Name matching is case-insensitive, so MEZA'S Axe and Meza's Axe both match the same rule.
Name patterns must match the whole displayed name. This matters:
name:"Meza's"
That only matches an item whose whole name is exactly Meza's. It does not match Meza's Pickaxe.
Use * when you want a prefix, suffix, or contains-style match:
name:"Meza's *"
name:"*Pickaxe"
name:"*meza's*"
Name rules can match custom item names and vanilla display names. On multiplayer servers, the server's language is what matters for vanilla translated names, so name rules based on translated vanilla names are best treated as a convenience rather than the most portable option. Item ids, tags, and components are more reliable for shared servers and modpacks.
Combining rules with logic
Match expressions can be combined:
name:"Meza's *" & !minecraft:diamond_pickaxe
This means "items named Meza's ..., but not diamond pickaxes".
Supported operators are:
!for not&for and|for or- parentheses for grouping
For example:
#minecraft:shulker_boxes | #minecraft:bundles
matches shulker boxes or bundles.
@minecraft:container & !#minecraft:shulker_boxes
matches items with container data, except shulker boxes.
Invalid rules
Invalid rules are ignored while sorting. They do not stop the whole inventory from sorting.
The config screen and commands try to report syntax problems so you can fix them, but if an invalid rule makes it into the config file, Inventory Sorter skips that rule and continues with the rest.
Examples
Put all shulker boxes first:
{ "match": "#minecraft:shulker_boxes", "position": "first" }
Put bundles last:
{ "match": "#minecraft:bundles", "position": "last" }
Keep any item named Vault ... exactly where it already is:
{ "match": "name:\"Vault *\"", "position": "ignore" }
Put your named tools last, except one specific kind of tool:
{ "match": "name:\"Meza's *\" & !minecraft:diamond_pickaxe", "position": "last" }
Put shulker boxes first, then bundles first after them:
[
{ "match": "#minecraft:shulker_boxes", "position": "first" },
{ "match": "#minecraft:bundles", "position": "first" }
]
Swap those two rules if you want bundles before shulker boxes.
Bundle Sorting
Bundle sorting lets Inventory Sorter use bundles during a sort, instead of treating them only as ordinary items.
If a bundle already contains an item, loose stacks of that same item can be moved into the bundle while the inventory is being sorted. For example, a bundle that already contains apples can collect loose apple stacks from the same inventory, as long as Minecraft says there is enough space.
This uses Minecraft's own bundle rules. Inventory Sorter does not try to invent a separate capacity system, so bundle fullness, nested bundle weight, item restrictions, and component matching follow vanilla behavior.
Existing contents decide what goes in
Bundles only pull in items they already directly contain.
An empty bundle does not become a general "dump everything into this" target during sorting. This keeps bundle sorting predictable, because the contents of the bundle tell Inventory Sorter what that bundle is for.
For example:
- a bundle containing apples can receive more apples
- a bundle containing string can receive more string
- an empty bundle stays empty during bundle sorting
- a bundle containing apples does not receive sticks, redstone, or unrelated items
The match is exact. If a bundle contains a named apple, it matches the same named apple, not every apple. The same applies to other Minecraft item data such as damage, enchantments, custom names, and components.
Small stacks go first
Bundles work best with smaller stacks, so Inventory Sorter tries the lowest-count matching stacks first.
If there are several loose stacks that could go into a bundle, the small ones get the first chance. If one bundle fills up, Inventory Sorter can continue into the next matching bundle if there is one.
Minecraft still decides how much actually fits. If only part of a stack fits, the remainder stays in the inventory and continues through the normal sort.
Nested bundles are not expanded
Only the direct contents of a bundle are considered.
If a bundle contains another bundle, and that inner bundle contains string, the outer bundle is not treated as a string bundle. That keeps the behavior understandable and avoids Inventory Sorter trying to reason through every nested storage item.
Non-empty bundles are also not moved into other bundles as part of this feature. If you have a bundle that already contains items, Inventory Sorter treats that bundle as its own meaningful item rather than trying to pack it away inside another bundle.
Player inventory and hotbar bundles
When sorting the player inventory, bundles on the hotbar can also be used as bundle targets. This is controlled by the Use Hotbar Bundles When Sorting Player Inventory setting.
This only applies to player inventory sorting. Sorting a chest or another container will not pull items from that container into bundles sitting on your hotbar.
Sorting rules still apply
Bundle sorting happens as part of the normal sort, so sorting rules still matter.
Ignore rules win. If a loose item matches an ignore rule, it is not moved into a bundle. This lets you keep "do not touch this" items exactly where they are, even if a matching bundle exists.
First, Default, and Last rules still affect the final top-level inventory order after bundle insertion has been planned. For example, you can still put bundles first or last with a sorting rule while also allowing matching loose items to be packed into them.
Client-side only support
Bundle sorting works with server-side support and in client-side only mode.
With server-side support, Inventory Sorter can apply the result directly on the server. In client-side only mode, it performs the same kind of vanilla clicks a player would use manually: pick up the loose stack, click the bundle, let Minecraft insert what fits, then continue sorting.
The server-side path is still the better path when available, but bundle sorting does not require the server to have the mod installed.
Changelog
3.0.0-beta.1 (2026-05-06)
âš BREAKING CHANGES
- 26.1 support. Dropping active development for anything before 26.1
Features
- added display name based sorting rules (f1ae5f8)
- adding sorting ignore rule closes #232 (6607345)
- adding sorting rules closes #190 (25eede3)
- client side sorting fallback (185f031)
- sorting can now pack into bundles that contain the same item (52f2ba5)
Bug Fixes
- 26.1 support. Dropping active development for anything before 26.1 (38377f0)
- Adding compatibility hiding for CC:Tweaks Turtles closes #99 (277f2c6)
- l10n: additional Italian translations (#245) (10d07d9)
- l10n: additional Korean translations (#244) (452f4f4)
- l10n: additional translations (95bf8ba)
- l10n: additional translations (f2ff2ca)
