Skip to content

ClickSorted 1.0.0

Choose a tag to compare

@kccricket kccricket released this 07 Jun 20:08
Immutable release. Only release title and notes can be modified.
48681d5

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) to ClickSorted
    (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 / CommandManager framework
    is gone; commands are a Brigadier tree registered via LifecycleEvents.COMMANDS.
  • Adventure / MiniMessage messages — all user-facing text is now an Adventure Component;
    legacy § color codes are fully replaced and lang.yml uses 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

  • SortEngine null/empty-inventory edge cases hardened — operations on inventories
    with no sortable slots no longer throw.
  • InventorySortEvent defensive guard — the post-sort event is only fired when a sort
    actually occurs, preventing spurious third-party handler calls.
  • LangConfig missing-key fallback — referencing an undefined message key now returns
    a safe placeholder instead of throwing a NullPointerException.

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.dhutils library (≈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_console setting — 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 single ConfigManager; reload via
    /clicksorted reload refreshes all of them atomically.
  • Typed debug levelsDebugLevel is 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)

  1. Stop your server.
  2. Remove the old ClickSort jar from plugins/.
  3. Place clicksorted-1.0.0.jar in plugins/.
  4. Start your server. Fresh config.yml, lang.yml, groups.yml, and items.yml
    files will be generated in plugins/ClickSorted/.
  5. (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)

  1. Stop your server.
  2. Remove the old ClickSort jar from plugins/.
  3. Delete plugins/ClickSort/ — player preferences were stored in SQLite and cannot
    be migrated; players will start with default preferences.
  4. Place clicksorted-1.0.0.jar in plugins/.
  5. Start your server. Fresh config.yml, lang.yml, groups.yml, and items.yml
    files will be generated in plugins/ClickSorted/.