ClickSorted 1.1.0
ClickSorted 1.1.0 adds slot locking and bundle packing, restructures all player preferences under a single set command, and introduces a settings-migration framework so stored values survive future renames.
Highlights
- Slot locking — mark individual inventory slots to keep them untouched by sorting, managed through a visual
/clicksorted set lockGUI. - Bundle packing — sorting can now fold each item type's leftover remainder into the bundles you keep in an inventory, reclaiming slots in the same click. Opt in per region for your own inventory and for containers.
- Commands restructured under
set— per-player preferences now live under/clicksorted set …(sort-method,click-method,hover,lock,bundle), with a new/clicksorted statusto print your current settings. - Settings migration framework — a single catalog migrates renamed values and drops removed settings across both config and per-player data, so legacy values (e.g.
DOUBLE→DOUBLE_CLICK) convert automatically on load/join. - Per-player action throttle — caps how fast a scripted client can drive plugin work, with a
/clicksorted benchmarkdiagnostic for measuring the sort and repack paths.
Breaking Changes
- Preference commands moved under
set./clicksorted sortis now/clicksorted set sort-methodand/clicksorted clickis now/clicksorted set click-method; the old top-level forms no longer exist. Update any macros, command blocks, or aliases. (Theclicksorted.commands.sort/.clickpermission nodes are unchanged.) - Shift-click preference cycling removed. Shift-left/right-clicking in your inventory no longer cycles your sort and click preferences. The
/clicksorted shiftclickcommand, theclicksorted.commands.shiftclickpermission, and thedefaults.shift_clickconfig key are gone. Shift-left-click and shift-right-click are now available as explicit sort triggers instead (/clicksorted set click-method shift_left_click|shift_right_click). ClickMethodvalues renamed.DOUBLE→DOUBLE_CLICKandSINGLE→SINGLE_CLICK. Stored player preferences andconfig.ymlvalues are rewritten automatically on load/join, so no manual action is needed unless you script against the raw values.
New Features
Slot locking
/clicksorted set lock opens a chest GUI that mirrors your inventory — three rows for main storage and one for the hotbar, separated by a divider. Lime panes are unlocked, barrier icons are locked, and black panes mark slots outside the sortable range. Click a pane to toggle it; changes save immediately, and locked slots are neither read nor overwritten when you sort. Locks apply only to your own inventory (main region and hotbar) — containers always sort in full.
Bundle packing
When enabled, a sort first consolidates bundle-eligible items by type: full stacks stay loose in the inventory and only the leftover remainder is packed into a bundle — and only when it's an efficient trade (the remainder is at or below half a bundle's weight). The result is a pure function of the item multiset, so re-running on an unchanged inventory is a no-op. Toggle it per region with /clicksorted set bundle inventory on|off and /clicksorted set bundle others on|off, and cap distinct entries per bundle with /clicksorted set bundle stacklimit <n|off> (server defaults: defaults.bundle_inventory, defaults.bundle_others, defaults.bundle_stack_limit).
Command restructure & status
All preference commands moved under /clicksorted set (sort → set sort-method, click → set click-method, plus set hover, set lock, set bundle). A new /clicksorted status reports your click method, sort method, and sort-over-items state.
Settings migration framework
A new Migrations catalog owns "what is stored where," migrating both config.yml and per-player persistent data through one entry point each. Renamed values are declared as lineages that converge in a single pass; removed settings are dropped from the store. Legacy ClickMethod spellings migrate automatically and the deprecated shift_click setting is removed on upgrade.
Action throttle & benchmark
A global per-player rate limiter (action_cooldown_ms, default 150 ms) gates every plugin-driven action; players with clicksorted.throttle.bypass (default op) are exempt. /clicksorted benchmark [iterations] runs an in-situ micro-benchmark of the sort and bundle-repack paths.
Bug Fixes
- Empty-slot sorting, over-cancellation, and non-fungible item merge — sorting on empty slots, event over-cancellation, and merging of non-fungible items (bundles and non-stackables) are now handled correctly.
player_sort_maxis now treated as an exclusive bound (matching its default of 36) and is clamped to the armor boundary, so a misconfigured value can no longer scramble armor or off-hand slots.
Other Improvements
- Consolidated the throttle gate into
ActionThrottle.throttled()and routed all command handlers through sharedrequirePlayer/parseStatehelpers, removing duplicated guard logic. - Regenerated
groups.ymlfor Minecraft 26.1.2, correcting some mis-grouped items (e.g. chains). - README and CLAUDE.md updated for the
setcommand tree, bundle packing, the action throttle, and the new config/lang keys.
Compatibility
✔️ Paper/Folia 1.20.6 – 26.1.x
✔️ Java 21
Upgrading
- Stop your server.
- Replace the old jar in
plugins/with this release. - Start your server.
Note: Existing preferences migrate automatically — legacy click-mode values (
DOUBLE,SINGLE) are rewritten to their current spellings and the deprecatedshift_clicksetting is dropped on first load/join. No manual config edits are required.
What's Changed
- Add slot-lock GUI (
/clicksorted set lock) by @kccricket - Restructure commands under
set, rename click/sort, add status by @kccricket - Settings migration framework, hover command, and expanded ClickMethod by @kccricket
- Pool-and-repack bundle packing folded into a unified sort pipeline by @kccricket
- Per-player action throttle and in-situ benchmark by @kccricket
- Fix empty-slot sorting, over-cancellation, and non-fungible item merge by @kccricket
- Fix
player_sort_maxexclusivity and clamping by @kccricket - Fix Minecraft 26.1.2 item grouping (chains) by @kccricket