MaceBorn v1.2.0 Changelog
Stability, Translations & Visual Polish
◆ Memory Leak Fix
- Fixed Per-victim key leak in MacePlayer - maces that store per-target data (Frostbite stacks, Gravity stacks, Harbinger doom marks, Chrono rewind positions, Necrotic decay stacks) were never cleaning up after a victim died. Keys now get purged via clearVictimKeys() in CombatEngine.onMaceKill, preventing gradual memory growth during long sessions.
◆ Bug Fixes
- Fixed BloodforgeMace - skill activation was missing its sounds.skill call. The lifesteal slam now properly plays its configured sound on cast.
- Fixed SoundEngine.play() - added null-check for the player parameter. Prevents rare NPE when a sound event fires on a disconnected player.
◆ Polish Translation (pl_PL) - 14 Missing Keys Added
- skill.no-target - No target found in range message
- skill.no-charge - No charge available message
- skill.triggered - Skill triggered notification
- skill.execution - Execution! combat message
- skill.doom-applied - Doom mark applied notification
- skill.stance-changed - Stance changed to {stance} message
- skill.rift-created - Rift created notification
- skill.rift-pulled - Target pulled to rift notification
- passive.rift-created - Rift created passive trigger
- kill.streak - Kill streak counter display
- kill.streak-high - High kill streak notification
- kill.streak-mega - Mega kill streak notification
- give.usage - /mace give command usage help
- info.usage - /mace info command usage help
◆ Visual Improvements
- Improved CelestialMace orbiting stars - stars now render every HUD tick instead of only during hit events. They continuously orbit the player as long as the mace is held, making the visual effect visible at all times.
- New hook AbstractMace.renderHudExtras(Player, MacePlayer) - called by HUDManager on every tick while the player holds a mace. Any mace can override this to render custom continuous visuals (particle orbits, auras, charge indicators). Default is no-op - no performance impact for maces that don't use it.
◆ Code Quality
- ParticleProfile - unsupported particle data types now log at WARNING level (previously FINE). Makes misconfigured particle sections in mace YAML files immediately visible in console during debugging.
◆ Full Audit - Summary
- Complete codebase audit performed across all 53 Java files and 20 mace configurations.
- Architecture rated 5/5 - clean separation, AbstractMace pattern, immutable MaceHitContext, EnumMap registry.
- Code quality rated 4.5/5 overall. All identified issues addressed in this release.
- Zero compilation errors. All changes verified against Paper 1.21.4 API.
◆ Upgrade Notes
- No config migration needed. All existing config files are fully compatible with v1.2.0.
- The new renderHudExtras() hook is backward-compatible - existing mace implementations require no changes.
- Polish server owners: update your pl_PL.yml or let MaceBorn regenerate it to get the 14 new translations.
MaceBorn v1.2.0 - Stability, Translations & Visual Polish
MaceBorn v1.1.0 Changelog
Performance, Config & Code Quality Update
◆ New Config Option
- Added hud.impact-window-title - toggle the "✦ IMPACT WINDOW" subtitle that appears when a perfect impact window opens. Set to false to disable it. Default: true.
◆ Bug Fixes
- Fixed ParticleEngine.spawnForNearby - particles were spawning once per nearby player instead of once total, causing N× particle multiplication when multiple players were in range. Now uses proper per-player spawning via Player.spawnParticle.
- Fixed Empty catch block in ParticleProfile - unsupported particle data types are now logged at FINE level instead of silently ignored, making debugging easier.
◆ Code Quality
- Removed dead constant LAST_DECAY_KEY from ReactorMace - was declared but never referenced.
- Extracted hardcoded mace ID list from ConfigManager into MaceType.allConfigIds(). Adding a new mace no longer requires editing two separate files - the enum is the single source of truth.
- Added ParticleProfile.spawnForPlayer() method - per-player particle spawning for future HUD and skill features.
◆ Upgrade Notes
- Config version bumped from 1 → 2. On first startup, MaceBorn will automatically back up your existing configs and add the new hud.impact-window-title key. No manual migration needed.
- All existing config values are preserved. The migration only adds missing keys.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MaceBorn v1.1.0 - Performance, Config & Code Quality Update
