• Rematch Item Optimization (High Impact)
- Cached rematch item at startup instead of loading spawnitems.yml every match.
- Eliminates repeated disk I/O and YAML parsing.
• FFA Sound Optimization (Medium Impact)
- Cached Sound enums at startup instead of using Sound.valueOf() repeatedly.
- Removes reflection overhead during countdowns, kills, and deaths.
• Cage Animation Fix (Low-Medium Impact)
- Ensures chunks are loaded before spawning cage entities.
- Prevents invisible/glitched cages and invalid entity spawns.
Result:
Reduced runtime overhead, improved stability, and more consistent gameplay behavior.
• AutoGG System Improved
- Cached auto_gg_messages (no more file read per match).
- Uses ThreadLocalRandom for better performance.
- Added 5-tick delay to ensure message sends after match cleanup.
- Now sends AutoGG for both winner and loser (if enabled).
• Kill Sound System Added
- Fully configurable killsound.yml with multiple sounds and permissions.
- Per-player selection with GUI, preview, and toggle support.
- Supports both Bukkit sounds and custom sound keys.
- Includes /killsound command (aliases: /ks, /killsounds).
• Integrated Across All Modes
- Works in Duels, FFA, Party games, and Bridge/Bedwars modes.
• Added Messages & Reload Support
- New messages for selection, deselection, disabled, and permission handling.
- Supports reload via /swiftcore reload killsound, menus, and all.
Result:
Better performance for AutoGG and a fully customizable kill sound experience across all game modes.
• Added global debug system controlled via config.yml:
debug: false
• Introduced plugin.isDebug() — single toggle for all debug logs across SwiftCore.
• Cleaned up FenceAnimation:
- Removed spam logs and local debug flags.
- Now only shows clean summary logs when debug is enabled.
• Added detailed debug logs:
- ArenaManager → arena loading, selection, usage, player assignment.
- DuelManager → match start/end, queue, arena selection.
- MatchFoundEffects → animations, effects, and conditions.
• ArenaResetManager logs are now debug-only and properly gated.
Result:
Clean console by default, with powerful debug insights available when enabled.
debug: true in config.yml
• Fixed placeholders not parsing in party challenge messages.
- Added missing %party% and %kit% placeholders in all relevant code paths.
• Fixed kit rules (stick spawn) not working in party vs party.
- Added PartyGame checks alongside DuelManager to correctly detect countdown state.
Result:
Correct message placeholders and proper kit rule behavior in party games.
• Fixed a client crash caused by duplicate scoreboard objective creation.
- Added a defensive REMOVE packet before CREATE to prevent duplicate objective errors.
• Fixed combat tag issue in protected regions (WorldGuard, etc.).
- Combat tagging is now handled at MONITOR priority with ignoreCancelled = true.
- Ensures players are only tagged when damage is actually applied.
- Fully compatible with protection plugins (WorldGuard, GriefPrevention, Towny).
Result:
Improved stability and accurate combat tagging behavior across protected areas.
• Added option to hide sidebar score numbers.
Config (scoreboard.yml):
scoreboard:
hide-numbers: true
How it works:
• When enabled, sidebar score numbers (1, 2, 3...) are completely hidden on 1.20.3+ clients.
• Uses the native NumberFormat system (no hacks or workarounds).
• When disabled, scores display normally using default Minecraft behavior.
Result:
Cleaner and more modern scoreboard appearance without red numbers.
Fix:
• removePlayerGlow now removes the player only from the correct team based on their glow color.
• Added viewer-scoped removal so packets are only sent to players in the same party game.
• Updated PartyGameManager to pass game players as viewers when removing glow.
Result:
Prevents client crashes during party duel kills or quits and ensures glow updates are correctly scoped to the active party game.
• Replaced hardcoded block break messages with configurable messages (arena-cannot-break-blocks, arena-cannot-break-outside).
• Added RandomFFA Inventory Persistence system:
- Saves inventory async on /leaveffa or disconnect.
- Restores inventory on rejoin if enabled.
- Skips save if inventory is empty.
- Combat log drops items on ground and does not save.
• Added RandomFFA configuration system:
random-ffa:
enabled: false
loot-drop: false
save-inventory: false
arenas:
axeffa:
mode: "include"
kits:
- axekit1
- axekit2
beastffa:
mode: "exclude"
kits:
- tiernodebuff
crystalffa:
mode: "include"
kits:
- crystalkit
- crystalpvpkit
• Arena Kit Rules
- mode: include → only listed kits are eligible.
- mode: exclude → all kits except the listed ones are eligible.
- Tier kits and random kits are automatically excluded where required.
- Kit eligibility is automatically filtered by arena type (build / non-build).
• Added randomffa_inventories database table for saved inventories.
• Integrated inventory logic into FFAManager:
- Save on leave/disconnect.
- No save on death.
- Restore on join if enabled, otherwise give random kit.
• Added /ffa random <arena> command with tab completion for configured arenas.
• All RandomFFA arena configs are cached in cachedRandomFFAArenaConfigs and refreshed on /swiftcore reload config or /swiftcore reload all.
Result:
Random kits are given only on death, while inventory can persist on reconnect/leave if enabled. Normal FFA (/ffa <arena>) remains completely unaffected.
