EndSectors 1.7.3
Logging improvements, exploit fixes & Paper 1.21.4 compatibility (Adventure API)
Overview
This release focuses on full migration to Adventure API across Paper and Tools modules, enhancing the logging system, and fully updating the project for Paper 1.21.4.
Why Adventure API?
We have completely moved away from legacy String-based text handling. This change was necessary to:
- Fix Font Issues: Resolved the "distorted/italic" font bug that occurred by default in Paper 1.21.4.
- Modern Color Support: Native support for MiniMessage and HEX/RGB gradients without "stripping" colors or causing ParsingException.
- Future Proofing: Following the latest Paper/Bukkit standards to ensure stability in future Minecraft updates.
The update improves stability, removes IDE/runtime warnings, and hardens the plugin against known and potential exploits across all project modules.
Technical Changes
UI & Text (Adventure API Migration - Paper & Tools)
- Refactored ChatAdventureUtil (Tools module):
Rewrote parsing logic to safely handle mixed formats (MiniMessage, Legacy §, and Ampersand &). Fixed ParsingExceptionImpl caused by legacy codes in modern strings. Implemented automatic italic decoration removal to ensure clean, readable fonts in all GUIs and messages.- Modernized StackBuilder (Paper module):
Fully migrated displayName and lore to use Component API. Fixed deprecated StackBuilder.type(Material) method.- WindowUI Improvements:
Updated inventory creation to use Component titles, removing deprecation warnings and ensuring 1.21.4 compatibility.
🛡 Exploit Fixes & Protection (Paper module)
- Anti-Duplication: Added preventive protection against item duplication exploits involving dispensers, sticky mechanics, and shulker boxes.
- Shulker Protection: Added listener to prevent interacting with shulker boxes inside sector border distance (works silently).
- Projectile Fix: Corrected ProjectileLaunchEvent handling to safely check shooter type, preventing ClassCastException from non-player entities.
Logging & Diagnostics
- Structured Logging: Added LoggerUtil.warn(String, Throwable) and replaced all printStackTrace() calls with proper logging.
- TPS Monitoring: Updated TpsUtil to log exceptions properly with a safe 20.0 TPS fallback.
- Error Handling: Unified handling in PlayerHeadUtil, ProtocolLibWorldBorderTask, and serialization classes.
Serialization, Logic & Cleanup
- Potion Effects: Refactored PlayerDataSerializerUtil to use the new registry-based API compatible with Paper 1.21+.
- SendSectorInfoTask: Replaced static instance usage with proper field-based paperSector instance.
- General Code Cleanup: Applied various minor formatting fixes (e.g., knockBorder logic), cosmetic code improvements, and simplified internal logic across multiple classes.
Build & Compatibility
- Updated Gradle to paper-api:1.21.4-R0.1-SNAPSHOT.
- Project fully compatible with Paper 1.21.4 and the latest Bukkit/Paper registry-based APIs.
Requirements
- Paper: 1.21.4
- Java / JDK: 21
Local Build
Code:./gradlew clean build
Full Changelog on GitHub
