Party Extension for Duels Optimized 1.9.0

A plug-and-play party extension for Duels Optimized - supports party team & party FFA modes.

1.9.0

Latest

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 once
    • all clears 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 all and the valid index range for the arena
    • When the last spawn is removed, the arena entry is dropped automatically

✦ Changes

  • /flexparty setspawns <arena> clear removed use the new /flexparty removespawns command instead, it's clearer and safer
  • Spectator spawn clear untouched /flexparty setspawns <arena> spectator clear still works exactly the same

✦ New Messages

  • spawn-removed
  • removespawns-usage
  • removespawns-invalid-index
  • removespawns-out-of-range
  • removespawns-none
  • help-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.

Download 0
No ratings yet
Purchase required

1.8.0

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-queue will keep blocking shulkers before the match starts if you've enabled it
  • Disable with allow-shulkers-in-match: false if 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.

Download 0
No ratings yet
Purchase required

1.7.0

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 /start is allowed
  • Teams mode honors your existing odd-team-handling config, deny blocks odd counts, allow distributes 50/50
  • Tab completion only suggests start when 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-success
  • start-disabled
  • start-already-counting
  • start-not-enough-players
  • help-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.

Download 0
No ratings yet
Purchase required

1.6.3

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 info all 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.

Download 0
No ratings yet
Purchase required

1.6.2

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-inventory toggles 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.

Download 0
No ratings yet
Purchase required

1.6.0

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, or blacklist
  • 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 cancel to 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.

Download 0
No ratings yet
Purchase required

1.5.0

DuelsFlexParty v1.5.0

Party Disband & Kick, Better Player Count Controls & NotBounties Support


✦ New Features

1. Party Disband

  • /flexparty disband removes 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 (default cascade) kicking a group leader can pull their whole group from the queue, or just them
  • kick-member (default member-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 / +5 buttons flanking the existing -1 / +1 in 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 help now 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.

Download 0
No ratings yet
Purchase required

1.4.8

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.win and match-end-sound.lose (.sound, .volume, .pitch)

2. Configurable Title Duration

  • match-end-title.fade-in, .stay, .fade-out in ticks (20 = 1s)
  • Defaults: 10 / 60 / 20

✦ Bug Fixes

  • 1.21.3+ Sound API crash string-based playSound replaces Sound.valueOf(). Fixes the IncompatibleClassChangeError that 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() replaces isInMatch(), 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+.

Download 0
No ratings yet
Purchase required

1.4.6

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-win
    • match-end-subtitle-win (supports %seconds%)
    • match-end-title-lose
    • match-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.yml tracks 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.VERSION constant 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.

Download 0
No ratings yet
Purchase required

1.4.5.5

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.yml under team-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.

Download 0
No ratings yet
Purchase required

1.4.5.4

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 create like 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 invite no 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 leave leave your current group
  • /group disband leader only, dissolve the group
  • /group kick <player> leader only
  • /group info view 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.

Download 0
No ratings yet
Purchase required

1.4.5.1

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 to true to enable)

2. Arena Reservation

  • FlexParty now reserves the arena while a party match is running, Duels can no longer send /duel players 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.

Download 0
No ratings yet
Purchase required

1.4.4.2

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 PlayerRespawnEvent to set the respawn location to the spectator spawn, then defers GameMode.SPECTATOR by 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
  • pendingSpectators is 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-delay for 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 0 for 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.

Download 0
No ratings yet
Purchase required

1.4.4.1

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.SPECTATOR instead 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 leave now 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 (default false)
  • 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 leave mid-match were getting teleported again when the match ended. endMatch() now skips players already removed from playerMatches

✦ 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-start
  • spectator-left
  • not-spectating
  • spec-usage
  • spectator-match-ended

✦ New Commands

  • /flexparty spec leave exit spectator mode early
  • /flexparty setspawns <arena> spectator set a custom spectator spawn for an arena
  • /flexparty setspawns <arena> spectator clear remove 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.

Download 0
No ratings yet
Purchase required

1.4.2

Latest

Download 0
No ratings yet
Purchase required
Product Info
Statistics
58

Views

0

Purchases

0

Downloads

154.00 KB

File size

25.05.2026

Published

03.06.2026

Updated

Info
Supported software
Supported Versions
1.20 - 1.21.11
Product Image
Party Extension for Duels Optimized
Party Extension for Duels Optimized