From 43d6f9265667ca56069fc765d12286a0374b87af Mon Sep 17 00:00:00 2001 From: XxFran10xX <318299142+XxFran10xX@users.noreply.github.com> Date: Sun, 25 Oct 2026 12:22:44 +0100 Subject: [PATCH 1/6] Add per-character hidden class unlocks Other plugins can unlock a hidden MMOCore class (options.display: false) for one character through ClassUnlocks. Unlocked classes are saved in the character file under "unlocked-classes" and appear in the class picker after the displayed base classes, priced like any other class change. Staff can use /rpcharacter admin unlockclass|lockclass . Co-Authored-By: Claude Opus 5.5 --- .../rpcharacters/classpick/ClassPickGui.java | 2 +- .../classpick/ClassPickService.java | 53 +++++++- .../classpick/ClassUnlockCommand.java | 89 +++++++++++++ .../rpcharacters/classpick/ClassUnlocks.java | 108 +++++++++++++++ .../database/CharacterClassPickFields.java | 25 +++- .../rpcharacters/managers/CommandManager.java | 8 +- .../rpcharacters/objects/RPCharacter.java | 17 +++ .../utils/CommandTabCompleter.java | 7 + .../rpcharacters/classpick/ClassPickTest.java | 20 +++ .../classpick/ClassUnlocksTest.java | 123 ++++++++++++++++++ .../CharacterClassPickFieldsTest.java | 53 ++++++++ .../managers/CommandManagerTest.java | 6 + .../utils/CommandTabCompleterTest.java | 23 +++- 13 files changed, 519 insertions(+), 15 deletions(-) create mode 100644 src/main/java/net/tfminecraft/rpcharacters/classpick/ClassUnlockCommand.java create mode 100644 src/main/java/net/tfminecraft/rpcharacters/classpick/ClassUnlocks.java create mode 100644 src/test/java/net/tfminecraft/rpcharacters/classpick/ClassUnlocksTest.java create mode 100644 src/test/java/net/tfminecraft/rpcharacters/database/CharacterClassPickFieldsTest.java diff --git a/src/main/java/net/tfminecraft/rpcharacters/classpick/ClassPickGui.java b/src/main/java/net/tfminecraft/rpcharacters/classpick/ClassPickGui.java index 0dcc99f4..7f12cbab 100644 --- a/src/main/java/net/tfminecraft/rpcharacters/classpick/ClassPickGui.java +++ b/src/main/java/net/tfminecraft/rpcharacters/classpick/ClassPickGui.java @@ -89,7 +89,7 @@ static void render(Holder holder, Player player) { holder.classBySlot.clear(); holder.choosable.clear(); List