Party Extension for Duels Optimized 1.16.2
A plug-and-play party extension for Duels Optimized - supports party team & party FFA modes.
Kit and map selection work again, and every player now sees your full kit list.
🛠 Menu Clicks Fixed
Clicking a kit or a map in the selection menus now works as it should.
🎒 Every Kit Visible
The kit menu was only showing a single kit to players without operator status. Non-op players now see all of your kits by default.
To hide a kit from someone, give them the negative permission -flexparty.kit.<kitname>. Nothing to set up unless you actually want a kit hidden.
🗺 Adding Maps to the Menu
The map menu lists the arenas that have FlexParty spawn points set, so an arena without them will not appear. To add one, stand at each spot you want a spawn and run this once per point:
/flexparty setspawns <arena>
🔍 Debug Modeconfig.yml has a new debug: false setting. If a menu ever misbehaves, set it to true, reproduce the problem once, and send the console output to support. It points straight at the cause and makes a fix far quicker.
📦 Install
Stop the server, replace the old jar in plugins/Duels/extensions/ with DuelsFlexParty-1.16.2.jar, and start it again. Your config stays exactly as it is.
Join the Discord
Enjoying the extension? A ⭐ review goes a long way!
GUI Selection Reset, Remember-Selections Toggle & Paper 1.21+ Compatibility
Combined 1.16.0 + 1.16.1 drop.
✦ Bug Fixes
- GUI no longer remembers stale picks picking a mode, size, kit, or map and then closing the creation GUI without clicking Create used to leave the selections in memory, so reopening would restore the old setup. Fixed, the GUI now resets to your config defaults on a real close. Navigation between the creation, kit, and map sub-menus still preserves your in-progress picks as expected
- Console spam fixed on Paper 1.21+ closing a FlexParty GUI on Paper 1.21.11 was logging a harmless but noisy error every time. Resolved, no more spam in console regardless of your server version
✦ New Feature: Remember GUI Selections
- New config key
remember-gui-selections(defaultfalse) false(default) GUI resets to config defaults every time it's opened, matches the bug fix abovetruelast picks are restored when the GUI reopens, opt-in preset behavior for servers that want it- Either way, navigating between the sub-menus while creating a party never loses your in-progress selections
✦ New Config
remember-gui-selections: false # set true to restore last picks when the GUI reopens
Auto-migrated on reload, your existing settings and comments are preserved.
✦ Version Breakdown
| Version | Focus |
1.16.0 |
GUI selection reset on close, new remember-gui-selections toggle |
1.16.1 |
Paper 1.21+ GUI close console spam fixed |
Defaults reset selections on close, flip
remember-gui-selections: true if you'd rather keep the last picks.Config Migration Hotfix
✦ Bug Fix
- Missing config keys now fill in on upgrade new keys (including the in-duel countdown messages from
v1.15.0) weren't being added to existing config files on upgrade, so the countdown ran but showed no text. Fixed, any missing keys now fill in automatically when you update, your existing settings and customizations are kept untouched
v1.15.0 or v1.15.1 and the in-duel countdown showed no messages.Drop in the new jar and restart, the missing keys are added automatically.
In-Duel Freeze Countdown + Sit Plugin Compatibility Fix
Combined 1.15.0 + 1.15.1 drop.
✦ New Feature: In-Duel Freeze Countdown
No more chaotic match starts where players are swinging the instant they spawn in.
- After players are teleported into the arena and kits are equipped, they're now frozen for a short countdown, look around but no movement, no damage, no PvP
- Once the countdown finishes, everyone's released to fight at the same moment, standard duel behavior
- Configurable separately from the lobby start countdown, so you can tune them independently
- Set
in-duel-countdown: 0to disable and keep the old instant-start behavior - Two new message keys:
match-freeze-countdownandmatch-freeze-go
✦ Bug Fix
- Sitting players can now join matches properly if a player was sitting (via GSit or any sit plugin) when their match started, they'd get stuck in the lobby while everyone else fought. Fixed, sitting players are now stood up automatically before being teleported in
✦ New Config
in-duel-countdown: 3 # seconds players are frozen in the arena before fighting (0 = disabled)
Auto-migrated on reload, your existing settings and comments are preserved.
✦ Version Breakdown
| Version | Focus |
1.15.0 |
In-duel freeze countdown, fair match starts where no one can move until the countdown ends |
1.15.1 |
Sit plugin compatibility fix (GSit and others) |
Defaults to a 3-second freeze, set
in-duel-countdown: 0 to keep the previous instant-start behavior.Mid-Match Leave, Stop Match, Unstuck Guarantees & Duels Stats Crediting
✦ New Features
1. Leave a Match Anytime
/fp leavenow works during a live match, not just in the queue- Leaving an active match counts as a forfeit, the player is removed, sent back, and their inventory and XP are restored
- If your leaving ends the match (last player standing on the other side), it wraps up normally
- No more "not in queue" message when you're clearly mid-fight
2. Leaders Can End a Match Early
/fp stopmatchlets the party leader stop a running match midway- Ends with no winner, all players are teleported back and restored
- Works even if the leader already died or is spectating
3. No More Stuck Players
- Even with command whitelist or blacklist enabled during matches,
/fp leave,/fp stopmatch, and/fp spec leavealways go through - Players can never be trapped inside a match by restrictive command lists
4. Optional: Count Results in Duels Stats
- Flip on
duels-statsand a finished FlexParty match credits winners a win and everyone else a loss on their Duels profile - Results now show on your Duels wins/losses leaderboards and in
%duels_...%placeholders - Off by default, opt in via config
- Wins and losses only (Duels has no kills or rating for non-duel matches), and draws,
/fp stopmatch, and server shutdowns credit nobody
✦ New Config
allow-leave-during-match: true
allow-stop-match: true
duels-stats:
enabled: false
credit-wins: true
credit-losses: true
Auto-migrated on reload, your existing settings and comments are preserved.
Leave/stopmatch default
on, Duels stats crediting defaults off, existing setups behave the same until you opt in.Critical Paper 1.21+ Startup Fix
✦ Critical Bug Fix
- Extension no longer fails to load on Paper 1.21+ the stuck kit item cleanup added in
v1.11.1was throwing an error during startup on newer Paper builds because of a stricter naming rule, which killed the entire extension before it could register commands. That's why/fp createand other commands silently did nothing on affected servers - Use Duels' own toggle instead the redundant cleanup check has been removed, Duels' built-in
protect-kit-items: falsesetting handles the "Kit contents cannot be used when not in a duel" spam properly, so the FlexParty-side workaround was no longer needed
✦ How to Update
- Drop the new jar into
plugins/Duels/extensions/ - Delete the old
DuelsFlexParty-1.12.0.jar(or any earlier version) - Restart the server
- If you're still seeing the "Kit contents cannot be used" message, set
protect-kit-items: falsein Duels' own config
No config changes needed, drop in the jar and restart.
Smart Config Updates That Preserve Your Customizations
✦ New: Comment-Preserving Config Migration
No more losing your formatting, comments, or custom keys when the plugin updates.
- Comments and formatting preserved every line of your
config.ymlandgui.ymlstays exactly as you wrote it on update, even after new keys are merged in - Your customizations stick any keys you've added that aren't in the defaults are kept untouched, no more rewriting them after each version
- New defaults merged in cleanly only the keys the plugin added in this release are appended, with their inline documentation
- Version-aware both config files now track a
config-versioninternally so upgrades from older installs are detected and handled automatically
✦ Changes
- Plugin tracking on bStats the bStats dashboard now tracks the actual FlexParty version, so you can see exactly which versions are running across servers
- Legacy GUI migration hardened the old
gui.*keys-in-config.ymlmigration path runs earlier in the load sequence so nothing gets stripped during the new config update process - Jar size up ~120 KB due to the bundled config library, total now around 663 KB
Fully backwards compatible, legacy installs are auto-detected and migrated, all your values and customizations preserved.
Overcrowded Arenas + Stuck Kit Item Fix
Combined 1.11.1 + 1.12.0 drop.
✦ New Feature: Overcrowded Arenas (Stacked Spawns)
Run parties bigger than the arena's spawn point count by stacking players onto shared spawns. Perfect for 30-50 player FFA matches on maps with only 8-15 configured spawns.
How it works
allow-overcrowded-arenas: false(default off) flip totrueto let parties exceed an arena's spawn point count, extra players are stacked onto existing spawns in a round-robinmin-spawns-per-player: 0.5caps how heavily spawns can be stacked
Stack ratio reference
| Value | Stack ratio | Example (10-spawn arena) |
1.0 |
No stacking | max 10 players |
0.5 |
2 per spawn | max 20 players |
0.25 |
4 per spawn | max 40 players |
0.0 |
Unlimited | only max-players caps |
GUI feedback
- Arenas that only fit your party via stacking now show as a yellow warning item in the map picker instead of being blocked
- Lore reads: ⚠ Your party is more than the set locations, there will be overcrowded situation.
- Arenas that exceed even the stack cap still show the barrier block as before
✦ Bug Fix: Stuck Kit Item Cleanup
- Stuck kit items finally cleared resolved a long-running issue where Duels' "[Duels] Kit contents cannot be used when not in a duel" message would keep firing on every interaction, surviving server restarts, on every kit, regardless of the
save-inventorytoggle - Root cause the previous restore was scheduled to run a tick after shutdown, but the server was already stopping the scheduler by then, so tagged kit items got saved into player files and triggered the message forever
- The fix inventory and XP are now written to disk synchronously on shutdown (no scheduler dependency), so
/stop, crashes, and evenkill -9all restore cleanly on the next start - Retroactive cleanup players already stuck before this patch just need to log out and back in once, a join-time scrub strips any lingering stuck items automatically
- Optional toggle
cleanup.scrub-stuck-kit-items: true(default on) controls the retroactive scrub
✦ Changes
- Single source of truth for max players every part of the plugin (arena lookup, GUI builder, preferred-arena gate) now computes "max players this arena can hold" from one place, so all paths agree on overcrowding rules
- FFA single-spawn floor relaxed arenas with just one spawn point can now run FFA matches (teams mode still needs at least two spawns for proper team placement)
- Extension manifest version synced
extension.ymlwas stale at1.9.0, now matches the actual plugin version
✦ New Config
allow-overcrowded-arenas: false # let parties exceed spawn count
min-spawns-per-player: 0.5 # cap stacking ratio when overcrowding is on
cleanup:
scrub-stuck-kit-items: true # retroactive scrub for stuck players
Auto-migrated on reload, no manual edits required.
✦ Version Breakdown
| Version | Focus |
1.11.1 |
Stuck kit item fix, synchronous shutdown restore, retroactive join-time scrub |
1.12.0 |
Overcrowded arenas with stacked spawns, yellow warning in map picker, single-source max-players calc, FFA single-spawn allowance |
Overcrowded arenas default to
off, existing setups behave exactly as before until you flip allow-overcrowded-arenas: true.Direct Party Invites with Built-In Spam Controls
✦ New Feature: Party Invite System
No more relying on the chat broadcast getting buried in conversation, invite players directly.
Commands
/fp invite <player>sends a clickable invite to a specific player/fp invite allinvites every online player at once (off by default, opt-in via config)- Clicking an invite joins the party through the normal join path, so your whitelist/blacklist still applies
Built-In Spam Controls
- 30-second per-target cooldown, re-inviting the same player tells you how long to wait instead of just "already invited"
- 120-second cooldown between
/fp invite alluses on the same party - Auto-skips players already in a party or match
- Stops sending invites once your party is full
- Configurable title and sound when someone gets invited
✦ New Config
invites:
allow-invite-all: false # flip to true to enable /fp invite all
Plus configurable invite title, sound, and cooldown values, all auto-migrated on first startup.
/fp invite all stays off by default, your existing setups behave exactly as before until you opt in.Manual Map Selection with Live Reservation
✦ New Feature: Pick Your Map
- A new map button is added to the party creation GUI, click it to pick a specific arena from a list, or leave it on
Any Mapfor the previous auto-pick behavior - Live arena reservation the chosen map is locked to your party the moment you create it, no more
/duelrequests or other parties sniping your arena while you're still filling slots - See what's taken other players see your reserved map shaded in their picker with your name on it, so they know to wait or pick something else
- Smart player-count adjustment pick a smaller map and the player count automatically scales down to fit
✦ New Config
manual-map-select: true # set false to hide the GUI button and stay auto-pick only
reserve-arena: true # already on by default, now covers both queue and match time
Auto-migrated on reload, no manual edits required.
Existing setups behave the same out of the box, leave the new GUI button untouched for auto-pick or set
manual-map-select: false to hide it.DuelsFlexParty v1.9.0
Kit-Arena Binding Fix & Cleaner Spawn Management
✦ Bug Fix
- Kit-bound arenas now respected FlexParty matches no longer try to start in arenas that are bound to a different kit in Duels. The arena lookup now checks each arena's kit binding before picking one, and risk-inventory matches treat every arena as available (since they don't use kits). If anything ever goes wrong reading an arena's binding, the system falls back to allowing the arena rather than blocking it, with a one-time log entry so you know
✦ New Feature: Targeted Spawn Removal
/flexparty removespawns <arena> <all|index>removes spawns precisely instead of all at onceallclears every spawn point for that arena<index>(1-based) removes a single spawn by its number- Running the command with no second argument shows usage only, so you can't accidentally wipe spawns by pressing Enter early
- Tab completion suggests
alland the valid index range for the arena - When the last spawn is removed, the arena entry is dropped automatically
✦ Changes
/flexparty setspawns <arena> clearremoved use the new/flexparty removespawnscommand instead, it's clearer and safer- Spectator spawn clear untouched
/flexparty setspawns <arena> spectator clearstill works exactly the same
✦ New Messages
spawn-removedremovespawns-usageremovespawns-invalid-indexremovespawns-out-of-rangeremovespawns-nonehelp-removespawns,help-removespawns-index
All auto-migrated on reload, no manual edits required.
Update now for proper kit-bound arena handling and cleaner, safer spawn management.
Drop in the new jar and restart, no config changes needed.
DuelsFlexParty v1.8.0
Shulker Boxes Allowed Mid-Match
✦ New Feature: Mid-Match Shulker Access
- Shulker boxes can now be opened inside an active match, even if Duels or other plugins would normally block them
- Perfect for risk-inventory loadouts where players bring a shulker full of gear and need to swap mid-fight
- Queue restriction still applies,
container-restriction-in-queuewill keep blocking shulkers before the match starts if you've enabled it - Disable with
allow-shulkers-in-match: falseif you want shulkers blocked during matches too
✦ New Config
allow-shulkers-in-match: true
Auto-migrated on reload, no manual edits required.
Update now to let players crack open shulkers mid-fight without third-party plugins getting in the way.
Defaults to on, queue-time restrictions remain untouched.
DuelsFlexParty v1.7.0
Manual Party Start, Begin Matches Without Filling Every Slot
✦ New Feature: Hybrid Manual Start
/flexparty start(alias/party start) lets the party leader kick off the match countdown without waiting for every slot to fill- Auto-start-when-full still works exactly the same, this is purely additive
- When the countdown is started manually, it won't auto-cancel if the party hasn't hit max players, partial-party starts are first-class
- Optional minimum, by default the leader needs at least
min-players(default 2) in the queue before/startis allowed - Teams mode honors your existing
odd-team-handlingconfig,denyblocks odd counts,allowdistributes 50/50 - Tab completion only suggests
startwhen manual start is enabled
✦ New Config
manual-start:
enabled: true
respect-min-players: true # leader needs at least min-players in queue
New messages added:
start-successstart-disabledstart-already-countingstart-not-enough-playershelp-start
All auto-migrated on first reload, no manual edits required.
Update now to let party leaders launch matches the moment the squad is ready, without waiting for the last slot to fill.
Auto-start-when-full keeps working untouched, manual start defaults to enabled with a 2-player floor.
DuelsFlexParty v1.6.3
Click-to-Join "Party Not Found" Race Fix
✦ Bug Fix
- Click-to-join no longer fails with "party not found" in some cases (especially during world transitions on Paper or right after a player logs in), clicking the join broadcast immediately would show "party not found" even though the party clearly existed, retrying a few seconds later worked. This was caused by the host's name briefly going unresolvable while their player session was settling. Host names are now cached when the party is created, so click-to-join, party access checks, broadcasts, and
/flexparty infoall resolve instantly without depending on a live player lookup
Update now for instant, reliable click-to-join on Paper and after-login flows.
No config changes needed, drop in the new jar and restart.
DuelsFlexParty v1.6.2
XP Save/Restore, Queue Container Lock & Cross-World Inventory Fixes
Combined 1.6.1 + 1.6.2 drop.
✦ New Features
1. XP Save & Restore
- Player XP level and progress are now saved alongside inventory and restored after matches
- Applies to both kit mode and risk-inventory mode, when their respective
save-inventorytoggles are enabled - No more losing levels to a match
2. Queue Container Restriction
- Optionally block opening chests, ender chests, shulker boxes, barrels, and trade menus while waiting for a match to start
- Stops players from stashing items in storage during the countdown
- Config:
container-restriction-in-queue: false(default off)
3. Force-Close GUIs on Match Start
- Any open menu (trade, chest, crafting) is automatically closed before the inventory snapshot is taken
- Items sitting in trade or crafting slots get returned to the player's inventory first, so the save always matches what they actually had
✦ Bug Fixes
- Inventory now saved at the right time on Paper and Purpur, the inventory save was happening too late, after the cross-world teleport to the arena, which let other server events modify or empty the inventory before it was captured. Now saved first, so the restored inventory matches what the player had going in
- Cross-world restore buffer all 5 restore paths (match end, death elimination, spectator leave, disconnect rejoin, player join) now add a small buffer between the teleport and the inventory restore, so the server doesn't overwrite the restored items on the same tick
- Arena no longer released early the arena is now released back to Duels a few ticks after match end instead of immediately, so Duels' cleanup can't fire before the inventory restore finishes
✦ New Config
container-restriction-in-queue: false
Auto-migrated on reload, no manual edits required.
✦ Version Breakdown
| Version | Focus |
|---|---|
1.6.1 |
Cross-world inventory save/restore fixes for Paper/Purpur, deferred arena release |
1.6.2 |
XP save/restore, queue container restriction, force-close GUIs on match start |
Update now to save player XP through matches, lock down inventory exploits in queue, and get rock-solid inventory restore on Paper, Purpur, and forks.
Container restriction defaults to off, existing setups behave exactly as before until you opt in.
DuelsFlexParty v1.6.0
Party Whitelist/Blacklist & Chat-Based Player Count Input
✦ New Feature: Party Whitelist & Blacklist
- Server owners pick the mode with
party-access.mode:none,whitelist, orblacklist - Players manage their own lists:
/fp whitelist add/remove/list/clear/fp blacklist add/remove/list/clear
- Lists persist across party creations, set them once and they stick
- Blocked players get a configurable title, message, and sound
- Using a command for the wrong mode tells you which mode is currently active
✦ Bug Fix
- Player count input the anvil input was instantly closing on some servers since the server-side anvil doesn't support typing. Replaced with chat input, click the paper, type a number in chat, and the GUI reopens with the new value. Type
cancelto go back
✦ New Config
party-access:
mode: none # none, whitelist, or blacklist
- Plus configurable blocked-player title, message, and sound, all auto-migrated on reload
Drop in the new jar and restart, new config keys are added automatically.
DuelsFlexParty v1.5.0
Party Disband & Kick, Better Player Count Controls & NotBounties Support
✦ New Features
1. Party Disband
/flexparty disbandremoves everyone from the queue and destroys the party- Leader only, cancels any active countdown, all members are notified
2. Party Kick
/flexparty kick <player>removes a specific player from the queue- Leader only, tab completion lists current members
- Kicked player and leader both get a message, you can't kick yourself (it suggests disband instead)
3. Social Group Behavior on Kick
- Control what happens to a player's social group when they're kicked, configurable under
social-groups.party-kick kick-leader(defaultcascade) kicking a group leader can pull their whole group from the queue, or just themkick-member(defaultmember-only) kicking a regular member can cascade to the whole group, or remove just that player- Cascade never removes the party leader doing the kicking, even if they share a group with the kicked player
4. Better Player Count Controls
- New
-5 / +5buttons flanking the existing-1 / +1in the creation GUI (teams mode steps by 10 to keep numbers even) - Click the player-count paper to open an anvil input and type an exact number, validates range and even-number rules for teams mode
5. NotBounties Integration
- Optional soft dependency, blocks bounty claims for kills during FlexParty matches
- Enable with
notbounties.block-bounty-claim: true, works fine if NotBounties isn't installed
✦ Changes
- GUI strings moved to gui.yml all menu names, lore, and titles now live in a separate
gui.yml. Existing customizations are migrated automatically on upgrade /flexparty helpnow lists the new disband and kick commands
✦ New Config
notbounties:
block-bounty-claim: false
social-groups:
party-kick:
kick-leader: cascade # cascade or leader-only
kick-member: member-only # cascade or member-only
- Plus new disband/kick messages, all auto-migrated on reload
Drop in the new jar and restart, gui.yml is created and your existing GUI customizations carry over automatically.
DuelsFlexParty v1.4.8
Match End Polish, Group Auto-Join Fixes, Configurable Sounds & 1.21.3+ Compatibility
Combined 1.4.7 + 1.4.8 + 1.4.8-2 + 1.4.8-3 drop.
✦ New Features
1. Configurable Match-End Sounds
- Separate win/lose sounds with volume and pitch
- Win default:
ENTITY_PLAYER_LEVELUP, lose default: empty (disabled) - Config under
match-end-sound.winandmatch-end-sound.lose(.sound,.volume,.pitch)
2. Configurable Title Duration
match-end-title.fade-in,.stay,.fade-outin ticks (20 = 1s)- Defaults:
10 / 60 / 20
✦ Bug Fixes
- 1.21.3+ Sound API crash string-based
playSoundreplacesSound.valueOf(). Fixes theIncompatibleClassChangeErrorthat was killing the match-end routine (and breaking titles as a side effect) on MC 1.21.3+ servers. Countdown sound rewritten the same way - getWinners() in teams mode returns all winning team members (including eliminated), not just alive. Dead teammates now see the win title and hear the win sound
- Killer not seeing win title title and sound are now deferred 2 ticks after the death event so the killer receives "Match Won!" properly
- Match-end titles for everyone all players in the match (winners, losers, spectators, eliminated) now get the title, previously only one team member saw it
- Group auto-join in cleanup window
isInActiveMatch()replacesisInMatch(), so members in the ended-match delay window can auto-join new parties - End-match restore guard deferred restore task now checks if the player moved to a new match before running, no more teleporting players out mid-match
- Risk-inventory subtitle scope "You have X seconds to pick up items" only shows for risk-inventory matches, kit mode shows the title alone
- Broadcast count + gate party creation announcement uses group size for
%count%(group of 2 in a 4-player party shows 2/4 instead of 1/4), and the broadcast is skipped entirely if the group already fills the party
✦ Improvements
- AutoJoin debug logging
[DuelsFlexParty] AutoJoin:lines in console show why members were skipped (offline, in queue, in active match, group null)
✦ Config
match-end-title:
fade-in: 10
stay: 60
fade-out: 20
match-end-sound:
win:
sound: ENTITY_PLAYER_LEVELUP
volume: 1.0
pitch: 1.0
lose:
sound: "" # empty = disabled
volume: 1.0
pitch: 1.0
Auto-migrated on reload, no manual edits required.
✦ Version Breakdown
| Version | Focus |
|---|---|
1.4.7 |
Titles show for everyone, configurable title duration, broadcast slot count fix |
1.4.8 |
Configurable sounds, getWinners() teams fix, killer title delay fix, auto-join + end-match guards, risk-inventory-only subtitle |
1.4.8-2 |
MC 1.21.3+ Sound API crash hotfix |
1.4.8-3 |
Broadcast count uses group size fallback, full-group broadcasts gated off, autoJoin debug logging |
Drop in the new jar and restart. Compatible with MC 1.21.3+.
DuelsFlexParty v1.4.6
Semantic Versioning, Match End Titles, Placeholders & CombatLogX Bypass
✦ New Features
1. Match End Titles
- Winners see a configurable title ("
Match Won!") with a subtitle showing how many seconds they have to pick up items - Losers see a separate title ("
Match Over") - Config keys:
match-end-title-winmatch-end-subtitle-win(supports%seconds%)match-end-title-losematch-end-subtitle-lose
- Set any to empty to disable that line
2. New Placeholders
%flexparty_warmup_remaining%seconds left in FFA warmup%flexparty_match_end_delay%config value%flexparty_match_time_limit%config value in minutes
3. CombatLogX Bypass
- Soft dependency, automatically prevents combat tagging for players in active FlexParty matches
- No config needed, activates when CombatLogX is detected
4. Config Migration Update Log
- New
update-log.ymltracks every config key added by auto-migration with version and default value - Helps debug missing config issues on customer servers, you can see at a glance what was added and when
- Config migration errors are now logged instead of silently swallowed
✦ Bug Fix
- Slot count in queue messages
joined-queue,player-joined, and the party creation broadcast now show the correct player count including auto-joined group members. Previously these messages fired before group members were added
✦ Changes
- Semantic Versioning adopted all future releases follow MAJOR.MINOR.PATCH starting from this version
- Internal
DuelPartyExtension.VERSIONconstant is now used throughout instead of hardcoded version strings
Drop in the new jar and restart, new config keys are added automatically and tracked in update-log.yml.
DuelsFlexParty v1.4.5.5
PlaceholderAPI Support, Team Colors for TAB & Nametags
✦ New Feature: PlaceholderAPI Integration
Use FlexParty team colors with TAB, nametag plugins, or anything that supports PlaceholderAPI.
Two Color Modes
- Absolute team 1 is always one color, team 2 is always another, everyone sees the same. Good for classic "red vs blue" setups
- Relative your teammates always show as one color and enemies as another, no matter which team you're on. In FFA, everyone else shows as enemy color
Player Placeholders
%flexparty_in_match%whether the player is in a match%flexparty_team_number%1 or 2%flexparty_team_color%the player's team color code%flexparty_match_mode%FFA or TEAMS%flexparty_match_kit%kit name%flexparty_is_alive%alive or eliminated%flexparty_is_spectator%spectating or not
Relational Placeholders
Perfect for TAB nametag prefixes and per-viewer coloring.
%rel_flexparty_team_color%color of the player you're looking at, based on whether they're on your team%rel_flexparty_is_ally%true if same team%rel_flexparty_is_enemy%true if different team or FFA
✦ Config
- All colors are configurable in
config.ymlunderteam-colors - PlaceholderAPI is optional, the plugin works fine without it, these placeholders just won't be available
- Auto-migrated on reload, no manual edits required
Swap the jar and restart. Install PlaceholderAPI if you don't have it already to enable team color placeholders.
DuelsFlexParty v1.4.5.4
Social Groups + Inventory Save/Restore
Combined 1.4.5.2 + 1.4.5.3 + 1.4.5.4 drop, the full Social Groups system with inventory fixes in one release.
✦ New Feature: Social Groups
A persistent group system, form a squad once and queue together every match without re-inviting.
Invites & Joining
/group invite <player>send an invite/group accept <player>accept (player must be in the spawn area if WorldGuard region is set)/group deny <player>deny- Invites expire after 60 seconds (configurable)
Queueing Together
- Group leader runs
/flexparty createlike normal, the whole group is pulled into the queue automatically - If anyone leaves the queue, the whole group is pulled out too
- The group itself stays intact, just queue again, no re-inviting needed
- Only the leader can create or join games, everyone else follows along
Teams Mode Priority
- Group members get priority placement on the same team
- Queue up 2v2 with a friend, you'll be on the same side
- Uses a greedy largest-group-first assignment so bigger groups stay together
- When a group is too large for one side (e.g. 4-player group in 2v2 or 3v3), members are split across teams using balance logic instead of all dumped on one team
Group Command Blocking
- Separate blacklist/whitelist for group-only contexts
- Trigger on group join, or only when entering a queue, your choice
Disconnect Handling
- Disconnecting removes the player from the group, everyone gets notified
- If the leader disconnects, leadership passes to the next member automatically
- Groups auto-disband when they drop to 1 person
✦ Risk-Inventory Save Option
- New config:
risk-inventory.save-inventory: false(default off) - When enabled, the original inventory is saved before the match and restored on all exits
- Disconnects skip item drops while this is on, items are restored on rejoin instead
- Lets you offer "soft" risk-inventory rounds where players don't actually lose their gear
✦ Bug Fixes
- Kit-mode inventory save/restore
beginMatch()was clearing inventory to equip kits but never saving the original, players ended up with an empty inventory after match end or death. Now saved before match start and restored on all exit paths: match end (winner + spectators), death elimination (non-spectating),/spec leave, disconnect and rejoin. Restore logic simplified, if a saved inventory exists it's restored, otherwise falls back to old behavior - Slot count in announcement the player count in the party announcement was hardcoded to
1, now uses%count%placeholder and reflects group auto-joins - Usage messages now respect command alias typing
/group inviteno longer shows "Usage: /socialgroup invite <player>", it shows the alias you actually used
✦ Commands
/group invite <player>send an invite/group accept <player>accept an invite/group deny <player>deny an invite/group leaveleave your current group/group disbandleader only, dissolve the group/group kick <player>leader only/group infoview current group details- Aliases:
/sgroup,/socialgroup,/socialg
✦ Config
save-inventory: true # kit mode (default on)
risk-inventory:
save-inventory: false # risk mode (default off)
social-groups:
enabled: false # off by default
- Social Groups feature is off by default, enable with
social-groups.enabled: true - Configurable: max group size, invite expiry, cooldowns, command blocking rules
- ~40 new group-related messages for full customization
- All config keys are auto-migrated on reload, no manual edits required
Swap the jar and restart. Set social-groups.enabled: true to turn on groups, all other keys are added automatically.
DuelsFlexParty v1.4.5.1
Faction PvP, Disconnect Recovery, Arena Reservation & Spectator Fixes
✦ New Features
1. Faction/Team PvP Override
- Same-faction or same-team players can now fight in FlexParty matches
- Overrides external faction/team plugin PvP blocking when both players are in the same match
- FlexParty's own rules (warmup, friendly fire, match ended) still apply on top
- Config:
force-allow-combat: false(set totrueto enable)
2. Arena Reservation
- FlexParty now reserves the arena while a party match is running, Duels can no longer send
/duelplayers into the same arena - Config:
reserve-arena: true(on by default)
3. Native Spectator Teleport Restriction
- Spectators can no longer teleport to other players via the spectator hotbar
- Built in natively, no external plugin required anymore
✦ Bug Fixes
- 3-player FFA respawn killing the second player no longer respawns them in the arena in survival, they're now teleported back correctly on match end
- Disconnect item drops in risk-inventory matches, disconnecting players now drop their items at their arena location instead of having them cleared, other players can pick them up
- Persistent location restore player locations are saved to disk when a match starts, so a server crash or restart no longer leaves players stranded, they're teleported back on rejoin
✦ New Config Options
force-allow-combat: false
reserve-arena: true
Drop in the new jar and restart, config keys are added automatically.
DuelsFlexParty v1.4.4.2
Spectator Reliability Pass + Instant Return + Boundary Limits
✦ Bug Fixes
1. Spectator Mode Activation, Reworked
- Root cause identified:
setGameMode(SPECTATOR)was being overridden during the respawn cycle - Now hooks into
PlayerRespawnEventto set the respawn location to the spectator spawn, then defersGameMode.SPECTATORby 1 tick after respawn completes - Much more reliable, works with the respawn system instead of racing it
2. Disconnect Restore Hardening
- Rejoin delay increased from 1 to 5 ticks to allow full player init before restoration
- Health, food, and active potion effects are now reset on rejoin
pendingSpectatorsis cleaned up on quit to prevent stale state from carrying over
✦ New Features
3. Instant Spectator Return on Match End
- New config:
spectator-on-death.instant-return-on-end: true - Spectators get a 1-tick teleport on match end so they don't sit watching dead air
- Alive players keep the normal
match-end-delayfor item pickup
4. Spectator Boundary Limit
- New config:
spectator-on-death.max-distance: 50 - Stops spectators flying off into the world to scout map areas they shouldn't see
- Checks horizontal (XZ) distance from arena center on block-change moves only (performance-safe, no per-tick cost)
- Teleports the spectator back and shows a warning when the limit is exceeded
- Set to
0for unlimited range
✦ New Config Options
Auto-migrated on reload, no manual edits required.
spectator-on-death:
instant-return-on-end: true
max-distance: 50
Update now for rock-solid spectator activation, faster match-end returns, and arena-bound spectators.
All changes layer on top of v1.4.4.1 with safe defaults.
DuelsFlexParty v1.4.4.1
Spectator Mode + Arena Spawn Polish + Hotfix Roll-up
Combined 1.4.3 + 1.4.4 + 1.4.4.1 drop, the full spectator system in one release.
✦ New Features
1. Spectator Mode on Death
- Eliminated players now enter
GameMode.SPECTATORinstead of being teleported back - Available in 3+ player matches only, smaller matches still teleport back instantly
- Lets eliminated players watch the rest of the match play out
2. /flexparty spec leave
- Exit spectator mode early at any time
- Returns the player to their pre-match location
- No need to wait for the match to end if you'd rather move on
3. Spectator Disconnect Handling
- If a spectator disconnects mid-match, they're restored to survival automatically on rejoin
- No more getting stuck in spectator mode after a crash or relog
4. Smart Spectator Spawn Location
- Spectators now teleport to the arena center (average of all spawn points) instead of staying at their death spot
- Optional per-arena spectator spawn, set it manually with
/flexparty setspawns <arena> spectator - Clear a custom spectator spawn with
/flexparty setspawns <arena> spectator clear - Falls back to auto-center if no custom spawn is set
- All spectator spawns stored in
arenas.yml
5. Left-Spectator Match-End Notification
- Players who used
/spec leavenow receive the normal match-end message plus an appended context line when their match finishes - Opt-in via
spectator-on-death.notify-on-match-end(defaultfalse) - New message key:
spectator-match-ended
✦ Bug Fixes
- Spectator mode now applies reliably previously, dying could teleport you to the arena center without actually entering spectator mode, you'd still be able to run commands and wouldn't get the spectator message. Fixed
- Disconnect-during-match restoration players who disconnect during a match are now teleported back to their previous location on rejoin (previously this only worked for spectators)
- Risk-inventory logout exploit closed disconnecting during a risk-inventory match now clears your inventory, no more keeping items by logging out
- Double teleport fix players who used
/spec leavemid-match were getting teleported again when the match ended.endMatch()now skips players already removed fromplayerMatches
✦ New Config Options
Auto-migrated on reload, no manual edits required.
spectator-on-death:
enabled: false
min-players: 3
notify-on-match-end: false
New messages added:
spectator-mode-startspectator-leftnot-spectatingspec-usagespectator-match-ended
✦ New Commands
/flexparty spec leaveexit spectator mode early/flexparty setspawns <arena> spectatorset a custom spectator spawn for an arena/flexparty setspawns <arena> spectator clearremove the custom spectator spawn (falls back to auto-center)
Update now for the full spectator system with all known issues patched.
Disabled by default, flip spectator-on-death.enabled: true to turn it on.
Related Products (1)
ScrollQuest - Paper Quests
Statistics
Views
Purchases
Downloads
File size
Published
Updated
Info
Share & Earn
Share and earn part of the profits, an estimated €0.5 per product sale.