Multi-Language Architecture: Designed a modular localization system with native support for 10 languages (en, ru, uz, de, es, tr, fr, pl, pt, it). Built-in automatic generation of language files in the lang/ directory.
Dynamic Welcome Mechanics: Implemented comprehensive welcome triggers across key client UI components: Chat, Title/Subtitle, Actionbar, and BossBar.
Smart Content Randomization: Added support for string lists within localization files, enabling random welcome message rotation on each player join event.
First-Join Tracking: Integrated a dedicated first-join trigger featuring customizable visual effects (Firework) and unique community-wide welcome notifications.
Info Panel & Analytics: Implemented a customizable multi-line dashboard displaying real-time session statistics (Rank, Ping, Server Time, Online Count).
Refactoring & Code Quality
Adventure API Integration: Fully migrated text rendering to the modern Adventure framework. Standardized native HEX-color parsing and gradient formatting, eliminating legacy Bukkit color code dependencies.
Robust Localization Fallback: Overhauled the internal normalize() method. If an invalid or corrupted language pack is detected, the plugin isolates the issue and seamlessly falls back to the master en.yml profile.
String Processing Optimization: Segmented the LangManager#getRaw() logic to differentiate between single-line entries and multi-line lists. String arrays are now reliably transformed into clean structural blocks using String.join().
Bug Fixes
Compilation & Entity Lifecycle: Resolved a critical compilation failure triggered by invalid entity-hiding method signatures within the spawnPrivateFirework logic. Firework lifecycle hooks now strictly adhere to safe Bukkit API standards.
Task Management: Fixed a potential memory leak during runtime plugin reloads. Active BossBar visibility tasks are now explicitly terminated via Bukkit.getScheduler().cancelTasks().
Dependencies
PlaceholderAPI Support: Added an optional soft-dependency hook. When PAPI is detected at runtime, external placeholders are parsed dynamically across all configured text interfaces.