• Further optimized social tab performance
• Replaced fake row UUID caching with lightweight per-viewer maps
• Cached social layout keys to reduce repeated processing during refreshes
• Improved social tab refresh efficiency and reduced overhead
• Added automatic cleanup of cached social data when tablists are removed or reset
• Fixed cross-server threading issues
• Improved Redis stability
- Match found effects and transfers now run safely on the main server thread
- Cross-server duel deny messages now send correctly without thread issues
• Improved FFA tablist support
- Redis message handlers now safely catch errors
- Prevents one bad Redis message from breaking the subscriber connection
- Reduces Redis/Jedis error chains and improves cross-server reliability
- Added support for nested FFA placeholders in tab.yml
- Added aliases for FFA player count placeholders
- FFA tab visibility now updates immediately when players join or leave
- Fixed players remaining visible in FFA tablists after leaving
- FFA player counts now refresh instantly without waiting for cache expiry
• Added disabled-kits support for round rewind
• New config: match.round-rewind.disabled-kits
• Kits listed in disabled-kits will skip the round rewind animation
• Affected kits now use instant teleport between rounds instead of rewind playback
• Added clan admin tools
• Added restricted clan names
- New admin command: /clan delete
- Clan delete and setpoints now work from console
• Improved clan cache handling
- New config options for blocked clan names and patterns
- Applies to both clan creation and renaming
• Fixed CustomKitEditor access checks
- Clan restrictions reload with config reloads
- Clan leaderboard cache now refreshes automatically after clan changes
• Optimized tablist performance
- CustomKits can no longer be opened while busy in SwiftCore activities
- Blocks usage during matches, queues, bot duels, FFA, party games, tournaments, events, and spectating
• Optimized database performance
- Reduced expensive PlaceholderAPI processing in animated tablists
- Added smarter placeholder caching to avoid unnecessary recalculations
- Cached tablist placeholder results for faster updates
- Cached player profiles to reduce repeated skin/profile rebuilding
- Reduced unnecessary tablist refresh packets
- Optimized team sorting performance
- Improved social tab layout performance and caching
- Reduced packet spam from social/friends tab updates
- Optimized fake row handling and UUID generation
• Improved kit rule safety checks
- Improved friend and match history cleanup queries
- Added better database indexing for faster history pruning
- Reduced scheduler-thread database load and cleanup overhead
• Optimized spawn item interactions
- Stickspawn, Sumo, and BlockDecay now only run during valid active matches
- Prevents rules from triggering during ended matches or round transitions
- Sumo and BlockDecay now wait until the round has fully started before activating
• Added kit editor safeguards
- Reduced unnecessary item metadata processing on player clicks
- Improved rematch item handling efficiency
- Optimized spawn item command lookups
- Reduces interaction-event overhead and improves overall responsiveness
• Fixed ranked rematch abuse
- Added configurable shulker box editor toggle
- Added protection against kit editing immediately after leaving FFA
- Prevents pearl teleport exploits after leaving FFA
- Automatically clears leftover editor sessions on FFA leave
• Fixed queue placeholders and queue tracking
- Ranked matches no longer create rematch data
- Ranked matches no longer give rematch items
- Prevents cross-server ranked rematch state from being stored
- %swiftcore_in_queue% now detects both ranked and unranked queues
- Cross-server queue placeholders now include ranked Redis queues
- Queue count placeholders now report ranked queue sizes correctly
- Queue state restoration now checks both ranked and unranked queues
• Fixed players joining queues while still in spectator mode
• Queue joining now automatically clears spectator state before matchmaking
• Improved matchmaking safety
• Improved spectator-to-queue transitions
- Prevents players from being matched against themselves
- Removes stale duplicate ranked queue entries
- Added extra validation for ranked and unranked matchmaking
• Fixed battle-state protection issues
- Players can move from spectating to queueing cleanly without lobby respawns or state issues
• Fixed tournament leave cleanup issue
- Players can no longer join queues while already fighting, spectating, or participating in events
- Duel requests are now blocked for busy or spectating players
- Prevents matches from starting if a player becomes busy before match start
- Fixed queue GUI, commands, signs, auto-requeue, and delayed requeue paths to properly respect failed queue joins
• Fixed Party FFA round handling
- Players who leave tournaments are no longer affected by delayed tournament cleanup
- Prevents being teleported, rewarded, or having titles applied after leaving a tournament
- Fixes players being pulled out of party fights by old tournament tasks
• Fixed round transition issues
- Party FFA no longer ends instantly when everyone dies at the same time
- Simultaneous deaths are now handled correctly
- Single survivors win the round normally
- Draw rounds continue to the next round instead of ending the match incorrectly
• Fixed party forfeit rejoin bug
- Prevents deaths, void damage, and boundary damage during round transitions
- Stops delayed countdowns from causing extra losses
- Blocks block breaking and placing during round processing and final victory delays
- Prevents stale next-round tasks from running after a match has already ended
• Fixed party tablist issues
- Players who surrender can no longer be pulled back into later rounds
- Properly removes forfeited players from all team, roster, spectator, and combat tracking systems
- Party members no longer appear twice in Friends and Party columns
- Party section now stays correctly positioned in the second column
- Fixed lobby social tab not switching correctly when party matches start
- Party FFA, Split, and VS Party now properly apply match tablists when the game begins
• Added Open Challenge system with clickable public duel broadcasts
• Challenges automatically expire and can rebroadcast until accepted
• Added /settings openchallengebroadcast and GUI toggle
• Permission: swiftcore.openchallenge
• Fully supports arena selection, random kits, kit permissions, and duel safety checks
• Fixed party elimination spectator issue
• Eliminated players in single-round Party FFA, Split, and VS Party now correctly enter spectator mode
• Prevents eliminated players from remaining visible inside active matches
• Fixed TNT Tag explosions triggering after players leave matches
• TNT Tag timers now properly cancel during duel end, surrender, party leave, and /leave
• TNT helmets and actionbars now clear correctly after cleanup
• Fixed /spectator leave item reliability
• Fixed arena outbound death messages
- Spectator leave items now work correctly even if spawn-item tracking resets
- Improved spectator cleanup execution for more reliable leaving
• Added more configurable messages
- Arena boundary deaths now correctly use the configurable arena-boundary-death message
- Applies to duels, party fights, and FFA outbound deaths
• Added right-click duel GUI toggle
- surrender-success
- opponent-surrendered
- arena-boundary-warning
• Improved arena reset cleanup
- New config: gui.right-click-player-duel-gui-enabled
- Can disable lobby right-click duel requests while keeping /duel and other duel menus working normally
- Setting is cached and refreshes automatically on reload
• Improved duel request safety
- Arena resets now remove leftover entities across all reset types
- Cleans dropped items, TNT, projectiles, minecarts, and other leftover entities before and after arena resets
- Prevents previous matches from affecting the next game
• Improved spectate safety checks
- Prevents multiple matches from starting through simultaneous duel accepts
- Clears stale duel requests when a duel begins
- Added extra validation for GUI, command, and cross-server duel accepts
- Players can no longer spectate while editing kits, queued, fighting, in parties, tournaments, or events
- Added extra validation for spectate GUI and cross-server spectating
• Improved overall server performance and reduced unnecessary processing
• Optimized tablist, scoreboard, queue GUI, HP indicator, and duel GUI systems
• Reduced lag spikes during player disconnects and states saving
• Improved arena reset and cached GUI handling
• Fixed invalid duel GUI sessions causing menu errors/crashes
• Added safer handling for broken or missing kit data
• Improved config/dialog caching for faster GUI response times
• Fixed kill message disabling
• Improved fight count placeholders
- kill-messages.enabled: false now fully disables custom kill messages
- Vanilla death messages still remain suppressed during duels
• Updated across multiple systems
- Fight counts now track real active players per kit
- Counts active duels and party games for that kit
- Excludes FFA arenas from totals
- Properly normalizes ranked and non-ranked kit names
• Added configurable Unranked placeholder text
- PlaceholderAPI: %swiftcore_in_fight_count_%
- Cross-server placeholder handling
- Queue GUI
- Ranked Queue GUI
• Added full per-kit permission system
- New config option: placeholders.unranked-tier-name
- Used by %swiftcore_tier_rank% and related placeholders
- Supports normal & colors and hex colors
• Permission checks now apply to:
- Cached permission-required and permission-node support from kits.yml
- Default permission format: swiftcore.play.
- Added configurable no-permission messages with placeholder support
- Added central permission helpers in KitManager
• Added new admin permission commands
- Unranked queue
- Ranked queue
- Duel requests and accepts
- Party FFA/Split/VsParty
- Party challenges
- Bot duels
- Cross-server duel requests
• Fixed MiniMessage formatting in inventory-see messages
- /kit permission required <true|false>
- /kit permission node <permission|default>
- Includes tab completion support
• Added ranked streak bonus system
- Fixed hover text breaking from apostrophes in names
- Prevents raw text appearing in chat
• Added ranked streak database tracking
- High win streaks can grant extra ranked points
- High loss streaks can remove extra ranked points
- Streak settings are cached in RankedManager
• Added Focus Mode system
- Added persistent win_streak and lose_streak database columns
• Fixed post-match restore issues
- Hides opponent names as ??? during active duels
- Applies to messages, placeholders, scoreboards, tablist, nametags, and bot duels
- Instantly refreshes when toggled
• Added Party Info GUI
- Tablist rows, prefixes, nametags, and player names now restore correctly after matches
• Fixed party item role filtering
- /party info can now open a configurable GUI
- Shows leader and members with player heads and roles
- Added split-team viewer support
- Chat fallback still works when GUI is disabled
• Improved spawn item actions
- Owner-only party items no longer appear for members
- Party Info item can still remain visible for everyone
• Fixed instant-start countdown delay
- Spawn item commands now use persistent metadata instead of display-name matching
- Spectator leave items now work more reliably
- Spawn item actions now support both left-click and right-click
- countdown-time: 0 now skips countdown waiting completely
- Players can now fight instantly when countdown is disabled
• Added TNT minecart spectator collision protection
• Optimized bed recoloring system
- Spectators no longer collide with TNT/explosive minecarts
- Collision is now safely cancelled using VehicleEntityCollisionEvent
• Added automatic bed cache refresh
- Added persisted bedLocations cache per arena
- Bed recoloring now only updates cached bed blocks instead of scanning the full arena
- Reduces match-start lag and unnecessary cuboid scans
- Refreshes when admins set corner1, corner2, or run /arena update
