• 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
• Fixed unnecessary Bridge goal checks causing move lag
• Bridge goal checks now only run when needed
- Removed global bridge checks from PlayerMoveEvent handling
- Lobby players and non-match players no longer trigger bridge goal logic on movement
• Reduced profiler spikes from:
- Active BRIDGE rule matches now use optimized scheduled checks
- Duel move checks only run for players inside active bridge matches
• Result
- onPlayerMove → checkBridgeGoal → getMatch()
• Fixed bot duel block/place interaction issue
- Lower movement overhead in lobby
- Reduced unnecessary match lookups
- Better overall server performance during high player counts
• Fixed duel requests during bot fights
- Bot duel players no longer get blocked by pending match-transfer checks
- Prevents block placing/interactions from being cancelled during active bot fights
- Fixes QueueManager match-found state interfering with bot duels
- Players can no longer send or accept duels while in bot fights
- Covers commands, GUI accepts, backend accepts, and cross-server duel accepts
- Also blocks sending duel requests to players currently fighting bots
- Prevents normal duels from overriding active bot fights and leaving bots stuck in arenas
• Fixed /spectate while in party state
• Added Match & ELO History API
- Players can no longer spectate while inside parties
- Added extra cross-server safety validation
• Added Custom Kit Items system
- Match history endpoint with kit/ranked filters
- Added ELO history and summary endpoints
- Ranked matches now track global and per-kit ELO changes
- Added configurable 30-day ELO history retention
• Fixed API player name resolving
- New CUSTOM_ITEMS kit rule
- Added /kit customitems admin command
- Added admin and player custom item GUIs
- Supports paginated custom item browsing/editing
- Added refill protection to prevent duplication exploits
- Added full KitEditor integration for supported kits
• Fixed leaderboard overall calculation
- Added player_names table to store latest player names by UUID
- Player names now save automatically on join
- API now resolves names using cached names, stored names, and match history
- Removed random UUID-style fallback names
• Added new overall placeholder aliases
- Overall rankings now calculate from per-kit ratings and starting tiers
- Prevents incorrect overall ranks caused by outdated global points
• Fixed global ranked API data
- %swiftcore_overall_rank%
- %swiftcore_overall_tier%
- %swiftcore_overall_points%
- %swiftcore_overall_elo%
- %swiftcore_rank%
- All now use the updated overall ELO calculation system
• Fixed post-match ender pearl teleports
- /api/leaderboard/global now uses overall ELO averages instead of old global tier points
- ranked.elo and ranked.tier player lookups now use the same overall ELO logic
- Offline players from kitsrank.yml can now appear correctly in global rankings
- Added a short 5-second pearl teleport block after matches end
- Removes active pearls and cancels delayed pearl teleports only during cleanup
- Applied to normal duels, queue matches, party games, and bot duels
• Fixed party commands while queued
• Fixed party kick messaging
- Players can no longer use /p join, /p accept, and similar party commands while queued or after finding a match
- Players now receive:
"You cannot join or manage a party while queued! Leave the queue first, then try again."
• Fixed party kick match-state issues
- Party owners now correctly receive kick confirmation messages
- Kicked players now properly receive kicked notifications
• Fixed party FFA ending logic
- /party kick now fully removes players from active party fights before kicking them
- Prevents kicked players from remaining stuck in match state
• Fixed party tab positioning
- Alive player counting now ignores eliminated players, spectators, and temporary respawn spectators
- Fixes 3+ player party fights not ending correctly when only one active player remains
• Fixed party owner sync issues
- Added party-start-row setting in tab.yml
- Party section now always starts in a fixed column position regardless of friend count
- Default setup keeps Party in the second tab column cleanly
• Fixed NPC duel interaction issue
- Ownership transfer now keeps the same global party ID
- Tablist and scoreboard now properly sync the correct party leader after ownership changes
- Party-game owner changes now also update the real PartyManager owner during active matches
• Added new duel GUI placeholders
- Lobby duel interactions now ignore NPC and fake-player entities
- Clicking Citizens or NPC-tagged entities will no longer open the duel menu
• Updated default duelgui.yml
- Supported in display names and lore:
- %kit%
- %kit_id%
- %player%
- %target%
- Added display-name support for all default kits
• Removed hide/show player setting
• Fixed kit editor potion effect leak
- Removed visible-player option from player settings menu
- Removed old hide-player handling and toggle methods
- Players now always display normally in lobby
• Added lobby right-click duel shortcut
- Active potion effects are now cleared correctly when:
- Saving editor changes
- Auto-saving on close
- Resetting layouts
- Leaving the editor
- Disconnecting while editing
- Fixes issues like permanent Speed II remaining after editing kits
• Fixed /p leave cleanup during party fights
- Right-cliking a player in lobby now opens the duel kit GUI
- Only works while both players are in lobby state
- Automatically blocks usage during queue, duels, FFA, party games, tournaments, events, spectator mode, etc.
- Respects player duel request settings
- /p leave now uses the normal party-game quit handling
- Properly removes players from active game and team lists
- Match win/end checks now run correctly after leaving
- Remaining players are correctly returned to lobby with restored party state and items in 2-player party fights
