File Details
Prefix-2.0.0.jar
- R
- Apr 24, 2026
- 58.97 KB
- 40
- 26.1.2+24
File Name
Prefix-2.0.0.jar
Supported Versions
- 26.1.2
- 26.1.1
- 26.1
- 1.21.5-Snapshot
- 1.21.11
- 1.21.10
- 1.21.9
- 1.21.8
- 1.21.7
- 1.21.6
- 1.21.5
- 1.21.4
- 1.21.3
- 1.21.2
- 1.21.1
- 1.21
- 1.20.3-Snapshot
- 1.20.5-Snapshot
- 1.20.6
- 1.20.5
- 1.20.4
- 1.20.3
- 1.20.2
- 1.20.1
- 1.20
🚀 Prefix v2.0.0 | MODERN FOUNDATION
The biggest update in Prefix history. Completely modernized architecture, all critical bugs fixed, SOLID principles applied throughout.
🚀 PLATFORM UPGRADE:
- Java 17 — modern language features, pattern matching, records
- Spigot/Paper 1.20+ — compiled against the latest stable API
- Gradle build modernization — toolchain, UTF-8 encoding, release targeting
- Removed legacy BungeeCord chat JAR (now Maven dependency)
- Removed legacy 15-character limits on prefixes and team names
- Fixed deprecated HoverEvent constructor — uses modern Content-based API
- ⚡ Impact: Future-proof foundation that will support Minecraft updates for years
🔴 CRITICAL FIXES (5):
- Fixed: Chat no longer crashes when a player mentions another player's name
- ⚡ Impact: Eliminates server-wide ConcurrentModificationException crashes
- Fixed: /prefix chat and /prefix tab commands now correctly include the last word of the prefix
- ⚡ Impact: "/prefix chat admin &4[Admin]" now works as expected — no more empty prefixes
- Fixed: Players can no longer crash the server by typing %s or %d in chat
- ⚡ Impact: Closes a critical exploit that could be used to crash any server running Prefix
- Fixed: Tablist no longer throws NullPointerException during class loading
- ⚡ Impact: Reliable tablist display from the moment the plugin loads
- Fixed: Module initialization no longer enters an inconsistent state on failure
- ⚡ Impact: Clean error handling during plugin startup
🟡 BUG FIXES (14):
- Fixed: Group creation no longer has contradictory success/failure logic
- Fixed: Configuration reload no longer loads the file twice
- Fixed: Command handler is now thread-safe for concurrent players
- Fixed: Permission strings standardized across plugin.yml, code, and help messages
- Fixed: All exceptions now log full stack traces for easier debugging
- Fixed: Logger now shows [Prefix] tag in console output
- Fixed: Group null-check now correctly uses Result pattern
- Fixed: Group assignment validates group exists before saving
- Fixed: Color code commands no longer crash on single-character input
- Fixed: Group name field is now immutable — prevents silent config desync
- Fixed: Tablist character limits updated from legacy 15 to modern 64+ characters
- Fixed: Tab weight system now supports any integer, not just 0-9
- Fixed: Resource leak in configuration reload closed
- Fixed: Tablist getGroup() double call eliminated
🔧 SOLID ARCHITECTURE REFACTORING:
- SubCommand interface — all 10 subcommands now implement execute() pattern
- → Cleaner than constructor-based execution, testable, extensible
- PGroup factory methods — loadOrCreate() and create() replace I/O-heavy constructors
- → Constructor is now side-effect-free (no file reads/writes)
- Dependency Injection — Data passed via constructors throughout the codebase
- → No more static PrefixModule.getData() calls in model/event classes
- HelpMessage data-driven — 128 lines of duplicated code → 40 lines with HelpEntry record
- Chat event handler split into buildFormat() + handleMentions() (SRP)
- ⚡ Impact: Clean, maintainable, testable codebase ready for rapid feature development
🔧 CLEAN CONSOLE LOGGING:
- Logger.sendMessage() — players get colored messages, console gets clean [INFO] logs
- Logger.sendWarning() — config issues logged at [WARNING] level
- Logger.sendError() — real errors logged at [SEVERE] level
- All color codes automatically stripped from console output
- ⚡ Impact: Professional, readable server logs without formatting artifacts
🔧 CODE QUALITY:
- Result.java methods renamed to Java camelCase conventions
- Language.getLanguage() is now static — cleaner API
- Removed unnecessary type casts in configuration access
- Removed unused HTTP-style status enum values
- Removed unused MinecraftVersion utility class (dead code)
- Removed unused Data.plugin reference
- Arrays.copyOfRange replaces manual System.arraycopy
- isEmpty() replaces equals("") throughout codebase
- ITask Javadoc corrected (ticks, not milliseconds)
- Module.java CommandMap reflection with proper exception handling
- /prefix info now shows version, build number, and clickable website link
- build.gradle modernized — removed unnecessary manifest block, added UTF-8 encoding
⚠️ BREAKING CHANGES:
- Requires Java 17 or higher (was Java 8)
- Requires Minecraft 1.20 or higher (was 1.13)
- Looking for older versions? Use Prefix v1.3.1 for pre-1.20 support
📋 Config: Existing config files are fully compatible — no changes needed
🔄 Compatibility: Spigot/Paper 1.20+ | Java 17

