• Added configurable Player Settings dialog mode (gui or dialog)
• Fully customizable dialog layout and buttons
• Falls back to the normal GUI if the Dialog API isn't available
• Improved settings GUI performance and dialog support
• Fixed a tablist rendering crash caused by missing player data
• Added sprite support for Player Settings dialogs with %sprite% placeholder and automatic material fallback
• Victory and defeat sounds now play immediately when the winning kill happens
• Removed duplicate victory/defeat sounds at the end of the match
• Players now hear each sound only once for a smoother match finish
• Fixed CopyPaste and CopyPasteSequence arena offsets
• Copied arenas now paste at the correct block position without shifting
• Arena positions, center, lobby, corners, and custom locations stay perfectly aligned
• Copied arenas now preserve build mode and Kill Below Y settings
• Added Party Team API & Placeholder support
• New placeholders for party teams, team membership, and same-team checks
• Added API methods for retrieving player team information and team comparisons
• Fixed leaderboard close button
• Leaderboard and profile menus now close correctly when pressing the close button
• Added Custom Kit duel support
• New command: /ck duel <player> <kit-slot>
• Saved custom kits can now be used directly in SwiftCore duels
• Improved Custom Kit party support
• Duel requests now display the custom kit name correctly
• Added /ck partyffa, /ck partysplit, and /ck partyvs commands for custom kit party matches
• Added Kit Statistics system
• New /kitstats commands for online players, leaderboards, and kit information
• Tracks stats across duels, ranked, unranked, and party matches
• Supports backfilling old match history
• Uses async database processing with in-memory caching for fast performance
• Added Kit Statistics GUI
• /kitstats now opens a configurable leaderboard GUI
• Text commands still work alongside the new GUI
• Added configurable menus/kitstats.yml
• Fixed & and hex color rendering for kit names
• Improved CustomKits
• Added armor fallback enchants (including Unbreaking) to the helmet enchant GUI
• Added private/public kit visibility with a settings toggle (private by default)
• Only public hosted kits appear in global browsing
• Added a kit copy button with slot selection
• Copied kits are private and unhosted by default
• Expanded PlaceholderAPI support for tablists
• PlaceholderAPI now works across all tab.yml text, including headers, layouts, nametags, player formats, and social/duel/party tab rows
• Improved FFA commands
• /ffa and /ffa gui now open the FFA menu
• Added /ffa join <arena> [position|-] [kit] for direct arena and kit joining from GUI buttons
• Added /spawn as an alias for /leaveffa for quick lobby return
• Added configurable Lobby Effects system
• Effects automatically apply in the lobby and are removed when entering gameplay
• Added /swiftcore reload lobbyeffect support
• Added Pillars of Fortune kit rule (pillarsoffortune)
• Uses a normal SwiftCore duel/party arena with the arena center as the generation point
• Players spawn on generated sky pillars and random item drops begin every 5 seconds
• Fixed inventory preview snapshots
• Post-match inventory viewing now correctly shows the defeated player's inventory at the moment of death
• Fixed duplicate defeat sound
• Players no longer hear the lose sound twice when a duel ends
• Improved nametag shadow support
• FFA now starts instantly when ffa-countdown: 0 (no countdown or spawn protection)
• Added new player and opponent head placeholders for MiniMessage and PlaceholderAPI
• Duel losers now stay at their death location during round transitions instead of being teleported
• Improved cross-server teleports and fixed multiple cross-server synchronization issues
• Added the CopyPasteSequence quality-of-life feature for easier setup and management
• 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
