ClickSorted 1.0.0
ClickSorted 1.0.0 is a ground-up modernization of the original ClickSort plugin,
rewritten for Paper 1.21.x with a clean architecture and no legacy dependencies.
Highlights
- New package & name — rebranded from
ClickSort(me.desht.clicksort) toClickSorted
(net.kccricket.clicksorted) with a fully reorganized, concern-based package layout. - No more SQLite — player sorting preferences are now stored in Bukkit's Persistent Data
Container; no database file, no async JDBC, no migration needed. - Paper-native commands — the old dhutils
AbstractCommand/CommandManagerframework
is gone; commands are a Brigadier tree registered viaLifecycleEvents.COMMANDS. - Adventure / MiniMessage messages — all user-facing text is now an Adventure
Component;
legacy § color codes are fully replaced andlang.ymluses MiniMessage format throughout. - Full integration test suite — 10 test classes covering sort behavior, commands, config
reload, cooldown messaging, player prefs, and resource updating via MockBukkit.
New Features
Add-only config merging
ResourceUpdater performs an add-only merge of bundled defaults into the plugin data
folder on startup. New keys added in a future release appear in your live config
automatically; existing customizations are never overwritten.
Expanded sortable inventory types
config.yml now includes additional inventory types (barrel, blast furnace,
dispenser, dropper, furnace, hopper, smoker) in the default sortable_inventories
list so more containers sort out of the box.
Updated item groups
groups.yml has been updated to reflect the full 1.21.5 creative-mode tab groupings,
giving GROUP sort a more intuitive ordering for current-version items.
Bug Fixes
SortEnginenull/empty-inventory edge cases hardened — operations on inventories
with no sortable slots no longer throw.InventorySortEventdefensive guard — the post-sort event is only fired when a sort
actually occurs, preventing spurious third-party handler calls.LangConfigmissing-key fallback — referencing an undefined message key now returns
a safe placeholder instead of throwing aNullPointerException.
Other Improvements
- Build system — migrated from Maven (
pom.xml) to Gradle (build.gradle.kts) with
the Shadow plugin for fat-JAR assembly. - Java 21 bytecode target — the build now emits Java 21 class files, matching the
minimum JVM required by modern Paper builds. - Removed dhutils — the entire embedded
me.desht.dhutilslibrary (≈3 000 lines) is
gone; only the handful of utilities actually used by the plugin were rewritten as
focused classes (Log,ItemNames,CooldownMessenger,Permissions). - Removed Essentials integration — the VALUE sort method (which relied on Essentials
item worth data) has been removed; NAME and GROUP remain. - Removed
coloured_consolesetting — console output is always plain text; the
config key had no effect on modern Paper and is no longer present. - Removed legacy version compatibility shims — version-parsing workarounds for
Minecraft 1.12 and earlier are gone. - Unified config lifecycle — all four config files (
config.yml,lang.yml,
groups.yml,items.yml) are managed through a singleConfigManager; reload via
/clicksorted reloadrefreshes all of them atomically. - Typed debug levels —
DebugLevelis now an enum (OFF,LOW,MEDIUM,HIGH)
replacing the old integer-based debug flag, with log calls gated by level comparison. - Documented YAML configs — all four bundled resource files now have inline comments
explaining every key. - Expanded README — covers installation, permissions, commands, configuration
reference, and the GROUP sort method.
Compatibility
✔️ Paper/Folia 1.20.6+
✔️ Java 21
Upgrading from ClickSort (original fork)
- Stop your server.
- Remove the old ClickSort jar from
plugins/. - Place
clicksorted-1.0.0.jarinplugins/. - Start your server. Fresh
config.yml,lang.yml,groups.yml, anditems.yml
files will be generated inplugins/ClickSorted/. - (Optional) Review your old
plugins/ClickSort/settings and migrate any
customizations to the new config files. Note that player sorting preferences
were stored in SQLite and cannot be migrated; players will start with defaults.
Upgrading from ClickSort (original fork)
- Stop your server.
- Remove the old ClickSort jar from
plugins/. - Delete
plugins/ClickSort/— player preferences were stored in SQLite and cannot
be migrated; players will start with default preferences. - Place
clicksorted-1.0.0.jarinplugins/. - Start your server. Fresh
config.yml,lang.yml,groups.yml, anditems.yml
files will be generated inplugins/ClickSorted/.