Voxel Shop beta is live. Expect occasional bugs. Learn more  
JustDuel icon

JustDuel v5.0.4

A survival/kit duel plugin.

Page 1
v5.0.4 Aug 26, 2026
v5.0.4
[1] New command `/duel loadkit <name>`: loads one of your saved kits, or a premade kit, straight into your inventory. It replaces what you are holding, so it needs the `justduel.loadkit` permission (op only by default) and is blocked while you are in a duel, a queue or the kit editor. You can only load your own kits or the server premades, never someone else's. Turn the whole command off with `load-kit.enabled: false`. Tab completion lists your own kits plus the premade ones, and every message is in messages.yml under the `loadkit-` keys.
 
[2] The lobby idle action bar (the rotating stats, online and tips lines shown while you stand in the hub) is now fully editable in messages.yml under the `idle-actionbar-` keys, instead of being locked in the code: `idle-actionbar-stats`, `idle-actionbar-ranked-tag`, `idle-actionbar-casual-tag`, `idle-actionbar-online` and the `idle-actionbar-tips` list (set the list to `[]` to drop the tips frame). A few other action bars that were still hardcoded are in messages.yml now too: the arena setup next step prompt, the kit editor entry hint, the kit editor loadout feedback and the queue fallback line. Every player facing action bar the plugin sends now comes from messages.yml.
 
[3] New `display-name.name-placeholder` in config.yml. If PlaceholderAPI is installed you can point it at a placeholder that returns a custom nickname (for example `%cmi_user_nickname%`), and the plugin shows that instead of the raw username on leaderboards, scoreboards, the lobby action bar and profiles. Leave it blank for the plain username. If a nickname cannot be resolved for a player the username is used, so it is always safe, and resolved names are cached so it stays cheap.
 
[4] Instanced (temporary and schematic) arenas can now set any vanilla game rule per arena: in worlds.yml under `arenas.<name>.settings.game-rules` (keyed by the exact vanilla rule name), or from the World Rules screen in the Arena Builder. The common one is `randomTickSpeed: 0` to stop crops growing, fire spreading and leaves decaying inside a duel world. Rules are applied after the built in ones so they take priority, an unknown rule name is logged and skipped, and arenas with no game-rules block keep working exactly as before.
v5.0.3 Aug 23, 2026
v5.0.3

[1] Fixed schematic arenas pasting off to one side when the schematic was saved with WorldEdit's `//schem save`, which puts its origin at your copy spot instead of the arena corner. JustDuel now lines the schematic up with the arena corner however it was saved, so players spawn on the floor.


[2] Fixed players getting kicked for flight by anticheats during the pre-match countdown. In a freshly built arena a frozen player could sit just above the pasted floor and get flagged. The countdown now clears fall distance and briefly allows flight. Toggle: `arena-spawns.warmup-flight-exempt` (default on).


[3] Fixed `kit-browser.allow-player-creation: false` only blocking `/duel createkit` and `/duel savekit`. It now blocks every route: `/duel kit create`, the kit editor GUI, the template picker, editing a kit, and kit editor zones. Admins with `justduel.kit.create.bypass` keep access.

v5.0.2 Aug 21, 2026
v5.0.2
[1] Command aliases and base names are configurable under `commands` in config.yml. Remove a short alias so another plugin can own it (for example drop `p` so PlayerPoints keeps `/p`), or rename a base command under `commands.names` (for example set `party: "jdparty"`) so it does not clash with another plugin. Leave a name empty to not register it at all.
 
[2] New placeholders: `%justduel_in_duel%`, `%justduel_in_queue%` and `%justduel_spectating%` return `true` or `false` for a player.
 
[3] JustDuel runs on servers without the optional PacketEvents plugin instead of disabling itself. Practice, holograms and scoreboards switch off, and everything else works.
 
[4] In KITS, a kill no longer drops the loser's kit next to the winner. The kit is cleared, so nothing is left on or beside the winner.
 
[5] Dropped items can no longer be swept from a neighbouring arena's live match, and team and free-for-all matches now clear out-of-bounds drops the same way 1v1 does.
 
[6] Cross-server duels reliably return you home; a save-and-restore timing race at match end was fixed.
 
[7] Fixed a rare stuck QUEUE sidebar, and made the arena item sweep and temporary-world cleanup safe on Folia region threads.
 
[8] `/duel leave` while spectating always works, even if your spectate permission was removed mid-session.
 
[9] Commands now register through Paper's command system as plugin owned, so plugin managers like PlugManX and Pl-Hide-Pro list them under JustDuel. Aliases and tab completion are unchanged.
 
[10] The PlaceholderAPI expansion and the economy providers (Vault, PlayerPoints, TokenManager, CoinsEngine) now load correctly on Paper. They were listed only as legacy soft-dependencies, which Paper ignores, so the placeholders and wagering economy did not activate.
 
[11] Player kit creation can be turned off with `kit-browser.allow-player-creation: false`. Useful on survival servers, where building a kit briefly switches the player to Creative. Give `justduel.kit.create.bypass` to admins who still need it.
 
[12] New: kit editor zones. Define a region with `/dueladmin kitzone`, and stepping inside gives the player an editor control bar with a floating marker. Players build a kit entirely in menus, never in Creative and never holding the items, so it is safe on survival and cannot be used to duplicate items. Walking out (or logging off, dying, or a restart) always restores the player.
 
[13] Fixed arenas on newer Paper (MC 26.x) reporting "invalid JSON" and refusing to load. Paper changed how locations are stored (`world_key` instead of `world`); JustDuel now reads both formats and writes the stable one, so in-game arena setup and validation work again. Existing broken arenas load without any manual edit.
 
[14] Fixed cross-server arenas losing their type (schematic/temporary) when loaded from the shared database, which made them fall back to a fixed world instead of instancing. They now keep their type across servers.
v5.0.1 Aug 18, 2026
v5.0.1

[1] New Queue Status tile in the `/duel` menu: shows your queue, mode, kit and party standing; click to leave the queue or pick a mode.


[2] Players are fully frozen during the pre-match countdown in every mode: no placing, breaking, dropping, shooting arrows or throwing projectiles. Toggle `duel.countdown-freeze-actions`.


[3] Item drops work normally in a duel and no longer duplicate (each drop is swept at match end). Toggle `duel.allow-item-drop-in-match`.


[4] Temporary arenas now show as Available instead of In Use.


[5] `/party` and `/p` work as standalone commands, party invites show clickable [ACCEPT] / [DENY], and party messages match the JustDuel style.


[6] Blocks placed during a duel are always restored before the arena is reused, including between best-of rounds.


[7] Random Kit only picks kits shown in the queue, and rematch "Same Setup" works after a random duel.


[8] Scoreboard fixes: real FFA kill count, the queue/spectator/sudden-death boards now show, and end-of-match boards show the real winner and rosters.


[9] `/duel leave` while spectating returns you to your original position.


[10] Cross-server duels return you to your home server when the match ends.


[11] No errors on shutdown, and leftover temporary duel worlds are cleaned up on a clean stop.


[12] Throttled the arena-edge correction teleports; stays smooth under heavy load (tested with 40 bots).


[13] Fixed a rare stuck QUEUE sidebar after leaving the queue.


[14] Kit armor applies again (it was silently dropped when the kit loaded).


[15] The kit creator is a Creative editing mode: `/duel kit create`, `save` and `cancel` build the kit on your own person, with drops, pickups, containers and gamemode changes blocked while editing.


[16] Live Server Settings panel (`/dueladmin settings`): switch duel mode and tune countdown, timers, death tracking and SMP-HARD claim time without a restart.


[17] SMP and SMP-HARD now behave the same in team and FFA as in 1v1 (own inventory kept and restored; SMP-HARD losers drop their gear).


[18] Team and FFA matches get the same leftover-gear sweep as 1v1.


[19] Spawn-safety guard: a teleport that would land you inside a block lifts you to the first safe spot instead of suffocating you.


[20] Temporary arena worlds no longer leak (scrubbed on boot, deleted on clean shutdown, and a janitor reclaims strays).


[21] Smoother result holograms; the old fullscreen VICTORY/DEFEAT title is off by default (`holograms.match-result.show-title`).


[22] Recipe-unlock toasts and advancement broadcasts are suppressed inside arenas (`arena-notifications.*`).


[23] The main menu, mode selector and admin panel refresh their live numbers in place, without reopening.


[24] Kit templates: start a new kit from blank, a premade kit, or one of your own (`kit-templates.*`).


[25] Preset library (`/duel kit preset`): save and load named loadouts across kits, separate from your kit list.


[26] Two new hub hotbar items, Leaderboard and Kits (`hub.inventory`, actions `open_leaderboard` / `open_kits`).


[27] Offline player heads now render the real skin instead of showing "Dynamic".


[28] Cross-server duels no longer strand a transferred player (the arena and kit travel with them).


[29] Two cross-server duels can no longer be booked into the same arena, and the MySQL manager stays off on SQLite servers.


[30] Each mode opens its own page (what it is, your readiness, the supported arenas) instead of dropping you straight into a queue.


[31] Leaf and other Paper forks are detected properly and get full support, instead of an "unknown server" warning.


[32] Menu icons no longer leak vanilla tooltip text; preview and inspect screens still show real item details.


[33] Right-click a preset to preview its full loadout before loading it.


[34] Menus no longer flicker when navigating; same-size menus hand off in place.


[35] Ranked toggle in `/duel settings`: ELO changes only when both players are ranked, with your status shown in the action bar.


[36] Fixes: garbled menu titles, a kit swapped by your last duel, a lingering "Waiting for X", WLR mislabelled as KDR, the queue action bar naming you instead of your opponent, and being stuck after naming a preset on rejoin.


[37] Party invites show "Invite pending" and glow until the player accepts.


[38] Clicking a match in `/duel history` opens a detailed overview with a Challenge Again button.


[39] Team/FFA: a match decided during the countdown ends cleanly with no hanging bar; empty admin-menu slots are filled in; the tournament live-match card is no longer hidden behind a head.


[40] Menus keep their coloured title when `gui.yml` omits one.


[41] Reworded in-game text that used a spaced hyphen as a sentence dash.


v4.1.0 Jul 15, 2026
v4.1.0
[1] Added Canvas support. JustDuel would not start on Canvas at all, it crashed on boot. Canvas runs like Folia but does not call itself Folia, so the plugin did not know to use the right scheduling for it. It recognises Canvas now (and other Folia-based forks) and runs on it the same as it does on Folia. Purpur, Pufferfish and Leaf keep working like normal Paper.
 
[2] Forfeiting an SMP-Hard duel actually ends it now. Before, typing /duel leave in an SMP-Hard fight showed "Forfeited. All items lost." but nothing really happened, both players just stood in the arena and could keep hitting each other. Now a forfeit works like a death: your items drop for the winner to claim, you go into spectator, and the two of you can no longer damage each other.
 
[3] New setting to strip the menus off direct challenges, made for SMP. Turn on duel-requests.skip-menus and /duel <player> stops opening the "Select Arena" and "Duel Request" chest menus. The challenge goes straight to the target as a chat message with clickable [ACCEPT] and [DENY], the sender picks nothing, and a random arena is chosen when it is accepted. Set it to true in config.yml on any SMP where the arena and kit menus do not make sense.
 
[4] The Back button and glass filler are toggleable now. In gui.yml under common-items you can set back-button enabled to false to remove the Back arrow from every menu at once, or filler-primary enabled to false to drop the glass border. Handy on SMP where those menus are mostly gone anyway. The material, name and lore stay editable as before.
 
[5] No more building during the countdown. Players could place and break blocks during the "Starting in 5..1" phase before the fight actually began. Building is blocked until the match is live now.
 
[6] Fixed a random teleport for spectators. If you were watching an SMP-Hard duel and the winner ran /duel leave during their item-pickup window, you could get flung to a random spot in the overworld. Spectators return to where they were before they started watching now.
 
[7] The SMP and SMP-Hard inventory preview shows again. When you got challenged in an SMP mode you are meant to see a preview of the incoming request, and on SMP-Hard it was silently skipping straight past it. It shows correctly now, and like the rest it is editable in gui.yml.
 
[8] Cross-server fix. On a network, a direct challenge to a player sitting on another server could quietly get dropped and never reach them. That path is fixed.
 
[9] The "Request sent [CANCEL]" line is editable. Like the [ACCEPT]/[DENY] line, the sender's cancel message was baked in and ignored messages.yml. It reads chat-request-sent from messages.yml now, so you can translate or restyle it, button included.
 
[10] The spectator hotbar items are configurable. The "Leave Spectating" and "View Opponent Inventory" items a spectator gets used to be fixed; they live in gui.yml under a spectator section now, so you can change the item, name, lore and slot, and the click still works because it follows whatever material you set.
 
[11] The console stopped repeating itself. On a reload or the arena autosave, "Arena loading complete" was printed once per arena, so fifteen arenas meant fifteen identical lines. It logs once now.
 
[12] Fixed the version showing wrong. The plugin was reporting itself as 4.0.7 no matter which build you ran, which also made it nag about a fake update. It shows the real version now.
 
[13] Extra stability on Folia and Canvas. A few parts of the SMP-Hard win and loss flow were cleaned up so everything runs on the right thread, and the loser's dropped loot is protected the instant it hits the ground so nothing gets grabbed or despawns before the winner can claim it.
 
[14] Arenas reset and free up properly again on Folia and Canvas. Cleaning an arena after a duel could hit a threading error that stopped it from regenerating and left it stuck showing "Arena in use", so the next duel could not start on it. Fixed, arenas reset and become available right after every match.
 
[15] No more getting stuck in a duel. If your opponent closed their game right after accepting the duel, or disconnected at the exact moment they died, you could be frozen in the arena, never teleported out, with the game saying "Command blocked during duels" on everything you tried. Those cases now end the duel cleanly and let you play again straight away.
 
[16] Arenas no longer get stuck reserved. A few edge cases (an arena with a bad spawn setup, a disconnect during the "Starting in 5" countdown, an SMP-Hard match finishing) used to leave an arena marked busy forever. Each of those now releases the arena so it can be used again, and the repeated "Arena in use" message no longer spams your chat.
 
[17] Blocks broken inside an arena no longer drop items. The arena is restored after the match anyway, so drops just littered the floor or let players farm the build. Now they drop nothing.
 
[18] More settings apply on reload. /dueladmin system reload now re-reads the duel mode, hub location and scoreboard live, so changing those in config.yml no longer needs a full restart.
 
[19] Two duels could end up in the same arena. The 5 minute autosave was clearing the in-use list, so a busy arena could get handed to the next pair. It leaves that alone now. It was also resetting every arena's icon and switching building off each time, fixed that too.
 
[20] Closed an item spawn in the kit creator. You could grab anything from the creative menu, drop it or stash it in a chest, then cancel the kit and keep it. Dropping, pickups and chests are blocked while you build a kit now.
 
[21] SMP-Hard scoring. A winner who closed their game during the claim window had it count as a loss for them and a win for the loser. Two SMP-Hard fights at once could also wipe each other's claim state, and a double knockout left the arena stuck busy. All fixed.
 
[22] Menus stopped eating items and accepting the wrong challenge. Shift-clicking an item out of your inventory with a menu open used to delete it, and if two people challenged you quickly the confirm menu could accept the wrong one.
 
[23] Kits save right. Saving could race with your inventory coming back and store an empty or wrong kit, and it read your inventory off the main thread which broke on Folia. It snapshots the kit first now.
 
[24] Random queue fixes for networks. Players on one server were getting dropped from the shared queue by the others, you could rarely get matched with yourself, and a match on your own server left you standing there. All three fixed.
 
[25] Win streaks work on MySQL and MariaDB. The update used SQL only SQLite understands, so every win errored and streaks sat at zero.
 
[26] A few things that quietly reset. Your /duel block list survives a restart now, your potion effects come back after a duel, and a leader logging off no longer freezes the party.
 
[27] Cross-server holds up better. After a Redis blip a server kept sending but stopped receiving until a restart. It reconnects itself now, stopped leaking connections, and the shared queue lock is safe so two servers can't edit the queue at once.
 
[28] The NPC radius delete stopped wiping every NPC. It was deleting the whole table no matter the radius. Only removes the ones in range now.
 
[29] A typo in a config no longer wipes your settings. It keeps your last good values and logs the error instead of falling back to defaults.
 
[30] Nothing stalls the server now. The license check at boot, /da reload and loading arenas from the database all run off the main thread, and more of the Folia and Canvas paths run on the right thread so they stop throwing.
 
[31] Config caught up with the code. The arena menu uses your arenas.yml styling again, spawn rotations work, the party leader options and kit icon permissions actually do something, and queue-show hides kits. A few settings the plugin reads are in config.yml now so you can change them, and some dead keys, unused permission nodes and a wrong ProtocolLib soft-depend are gone.
 
[32] Menu borders show up again. On an older gui.yml a few menus, the party one most of all, opened as a bare grey grid with no glass frame. Every menu now falls back to a proper border when your config is missing the slot list, so nothing looks half-built after an update. The party Back button also sits dead centre now instead of one slot to the left.
 
[33] The duel confirm menu can't auto-accept anymore. If the "Duel Request" popup opened right as you happened to be clicking, the click could land on Accept and start the fight on its own. Accept and Deny now ignore a click in the first fraction of a second after the menu opens, so only a real click counts. Same fix on the cross-server version.
 
[34] The inventory previews render properly. The SMP "your inventory" preview was hiding your armour behind glass and the SMP-Hard version came up empty, and the opponent preview had no frame. All three show the right items with a clean border now, and the SMP-Hard one reads the other player's gear on the correct thread on Folia and Canvas.
 
[35] The icon picker and spectate menu work now. Choosing a kit icon did nothing because the menu wasn't wired to react to clicks; it works, shows the icons you set in config, and no longer lets you drag the icons out. The Spectate menu was always empty too, it lists the live duels now and clicking one puts you in to watch.
 
[36] Custom kit tooltips follow gui.yml again. The lore on your own kits in the Select Kit menu was baked into the plugin, so the kit-item block in gui.yml did nothing. It reads that block now, owner line included, and which kit is which is tracked on the item itself instead of by its text so restyling it can't confuse the menu.
 
[37] Temporary arena worlds stop hitching the server. They ignored your world-type setting and always built a full natural world, so every one generated terrain and hunted for a spawn on the main thread, which showed up as a lag spike. They use the flat type you set now, which generates almost instantly, do not pin their spawn chunks in memory, and fall back to a normal world only if a type is unsupported. Permanent and schematic arenas are unaffected.
 
[38] Random queue gives you a kit again, and no hub items in the fight. Joining the random-kit queue could drop you into a fight with no kit and your hub items still in your bags. Two things caused it. One, the mode decides whether your inventory is kept now, not a coincidental name match, so a kit duel always clears your inventory and hands you a real kit, and Random Kit picks an actual kit (with a basic fallback if a kit ever fails to load). Two, the hub was re-handing you its menu items the instant you were teleported into an arena that sits near spawn, right over your kit. The hub now holds off on its items through the whole accept, teleport and countdown, not just once the fight is live, so your kit stays put.
 
[39] Action bars stop fighting each other. When a duel was accepted the idle info bar kept overwriting the "Duel accepted", teleport and countdown lines every second, so they flickered. The idle bar now stays quiet from the moment you accept through the teleport and the countdown, so each duel message shows cleanly.
 
[40] Queue is steadier. The kit is applied on the correct thread on Folia and Canvas, two players hitting the queue at the same instant can no longer trigger two arena reservations for one match, and a rapid double join or a just-matched player no longer leaves a stale "in queue" state.
 
To drop it in: replace the jar and restart. For SMP servers, set duel-requests.skip-menus to true in config.yml to remove the arena and kit menus.
v4.0.9 Jul 7, 2026
v4.0.9
[1] Added Canvas support. JustDuel would not start on Canvas at all, it crashed on boot. Canvas runs like Folia but does not call itself Folia, so the plugin did not know to use the right scheduling for it. It recognises Canvas now (and other Folia-based forks) and runs on it the same as it does on Folia. Purpur, Pufferfish and Leaf keep working like normal Paper.

 


[2] Forfeiting an SMP-Hard duel actually ends it now. Before, typing /duel leave in an SMP-Hard fight showed "Forfeited. All items lost." but nothing really happened, both players just stood in the arena and could keep hitting each other. Now a forfeit works like a death: your items drop for the winner to claim, you go into spectator, and the two of you can no longer damage each other.

 


[3] New setting to strip the menus off direct challenges, made for SMP. Turn on duel-requests.skip-menus and /duel <player> stops opening the "Select Arena" and "Duel Request" chest menus. The challenge goes straight to the target as a chat message with clickable [ACCEPT] and [DENY], the sender picks nothing, and a random arena is chosen when it is accepted. Set it to true in config.yml on any SMP where the arena and kit menus do not make sense.

 


[4] The Back button and glass filler are toggleable now. In gui.yml under common-items you can set back-button enabled to false to remove the Back arrow from every menu at once, or filler-primary enabled to false to drop the glass border. Handy on SMP where those menus are mostly gone anyway. The material, name and lore stay editable as before.

 


[5] No more building during the countdown. Players could place and break blocks during the "Starting in 5..1" phase before the fight actually began. Building is blocked until the match is live now.

 


[6] Fixed a random teleport for spectators. If you were watching an SMP-Hard duel and the winner ran /duel leave during their item-pickup window, you could get flung to a random spot in the overworld. Spectators return to where they were before they started watching now.

 


[7] The SMP and SMP-Hard inventory preview shows again. When you got challenged in an SMP mode you are meant to see a preview of the incoming request, and on SMP-Hard it was silently skipping straight past it. It shows correctly now, and like the rest it is editable in gui.yml.

 


[8] Cross-server fix. On a network, a direct challenge to a player sitting on another server could quietly get dropped and never reach them. That path is fixed.

 


[9] The "Request sent [CANCEL]" line is editable. Like the [ACCEPT]/[DENY] line, the sender's cancel message was baked in and ignored messages.yml. It reads chat-request-sent from messages.yml now, so you can translate or restyle it, button included.

 


[10] The spectator hotbar items are configurable. The "Leave Spectating" and "View Opponent Inventory" items a spectator gets used to be fixed; they live in gui.yml under a spectator section now, so you can change the item, name, lore and slot, and the click still works because it follows whatever material you set.

 


[11] The console stopped repeating itself. On a reload or the arena autosave, "Arena loading complete" was printed once per arena, so fifteen arenas meant fifteen identical lines. It logs once now.

 


[12] Fixed the version showing wrong. The plugin was reporting itself as 4.0.7 no matter which build you ran, which also made it nag about a fake update. It shows the real version now.
 
[13] Extra stability on Folia and Canvas. A few parts of the SMP-Hard win and loss flow were cleaned up so everything runs on the right thread, and the loser's dropped loot is protected the instant it hits the ground so nothing gets grabbed or despawns before the winner can claim it.
 
To drop it in: replace the jar and restart. For SMP servers, set duel-requests.skip-menus to true in config.yml to remove the arena and kit menus.
v4.0.8 Jul 6, 2026
v4.0.8

[1] Closed the queue teleport exploit for good. Joining the queue never moves you, so there was no reason to yank you back when you left it, and players had worked out they could use that. Queue up from a safe spot, walk off or get into a fight somewhere else, hit /duel leavequeue and you would warp straight back to where you started. Now leaving the queue just leaves you where you are. If you actually want the old teleport-back, there is a new switch, queue.teleport-back-on-leave, off by default. This covers every way out of the queue, the leave command, the leave button, and the wait-time running out.


[2] Set queue.teleport-back-on-leave to true and the queue restores your exact join position again like older builds did. Leave it false, the default, and nobody can use the queue as a free way home. It writes itself into config.yml on the next start.


[3] Your edits to the chat duel-request message finally do something. The line a player sees when someone challenges them, the one with the [ACCEPT] and [DENY] buttons, was hardcoded in the plugin, so no matter what you put in messages.yml under request-received-chat it never changed. It reads the message key properly now, translation, colours, buttons and all, and the click buttons still work because the plugin uses the server's own text engine.


[4] Fixed the opponent inventory preview for SMP-Hard spectators. When you watch a downed player you get a window of their gear, and the main inventory and hotbar were showing up empty because the layout in gui.yml and the code that read it had drifted apart. It fills in correctly now, and it refreshes live again while you watch instead of freezing on the first frame. The close button stays put through the refresh too.


[5] A few admin command replies were going missing. Some of the NPC cleanup and random-queue messages, things like "Removed 3 duplicate holograms", were being treated as if they were message-file keys, so instead of the line you got nothing in chat and a stray "missing key" warning in the console. They send as plain messages now.


To drop it in: replace the jar and restart. Nothing to configure, the exploit is closed out of the box.
v4.0.6 Jun 13, 2026
v4.0.6

[1] Kit creation works the way you'd actually type it now. Do /duel kit create <name> and it starts building your kit. Before this it just said "Player not found", because the command had no idea "kit" was a keyword and thought you were trying to duel a player named kit. Now /duel kit create, /duel kit save and /duel kit cancel all work and tab-complete as you type. The old /duel createkit, savekit and cancelkit still work too, nothing got removed, you've just got the obvious version on top of them.

[2] The admin menus aren't spitting out raw code anymore. A big chunk of /dueladmin was printing things like <yellow> and <gray> as literal text instead of the actual colors, the kit approval list, the world commands, validate, audit, the help pages, all of it. Every one of those lines runs through the proper formatter now, so the whole /dueladmin (or /da) interface reads clean instead of looking half broken.

[3] Players stop spawning inside blocks. People were landing stuck in terrain when they joined or respawned at the hub. Two separate things were wrong: the saved spawn wasn't centered on the block, so you could clip into the one next to it, and the join teleport never checked whether the spot was even open. Both are sorted. The spawn now saves dead-center on the block, and the join, respawn and back-to-hub teleports all look for a clear spot and lift you up out of any solid blocks before they drop you in.

[4] One thing worth doing after you update: stand where you want the hub and run /da system setspawn once. Your current saved spawn could still be a bad point from before the fix, and re-running it writes a clean centered one. If you forget, the new safety check still pulls players out of blocks on join, but setting it fresh gets you the exact spot you picked.

[5] Fixed the disconnects on 1.21.11. Players were getting booted with an "Internal Exception" the second the plugin tried to show an action bar, the queue timer, the idle hub bar, that kind of thing. The text library the plugin used to ship didn't know about the new Minecraft version and was quietly building broken packets, and the server kicked the player rather than send a bad one. That library is gone. The plugin uses Paper's own built-in text now, so action bars and titles show up and nobody gets dropped.

[6] Tidied up the Folia and reload side of things. Spawning a second queue NPC could throw an error, and the NPC bobbing animation could keep running after a reload and pile up. A scheduler fallback could also call itself in a loop and take the server down with it. All fixed. A few teleports that could error out on Folia now go through the safe async teleport that handles crossing regions and worlds.

[7] Keeping it off your survival worlds is just config. JustDuel only applies its arena rules inside arena worlds, so survival is already left alone there. The one thing that reaches everywhere is the hub pulling players in on join, so if you run duels next to a survival world, set hub.teleport-on-join and hub.hub-on-join to false and force-spawn-on-join to false, then put your duel hub and arenas in their own world. Players stay where they log out and only come to the hub when you send them.

[8] Runs on Paper 1.21.11, 26.1.x, Folia and Spigot, single server or cross-server over Redis, same as before.

4.0.5 Jun 8, 2026
4.0.5

### NEW

- Party menu. Open it with /duel party (or click the new Party item in /duel). You see your members, who the leader is, your pending invites, and shortcuts to queue the whole party for 2v2, 4v4 or FFA. Leader gets the kick / transfer / disband buttons. Everyone else gets a Leave button

### FIXED

  • Items from the previous match used to sit in the arena if a player didn't pick them up. They are cleaned out every time a new duel starts now
  • /queue jumped your mouse cursor to the middle of the screen when you clicked a kit.
  • Settings menu blinked when you set a default kit. It now updates in place
  • The Kit Editor and the Settings menu also stopped flickering when you click Back or the default-kit slot


### COMPATIBILITY

- Same single jar still works on Paper 1.21.1, 1.21.11, 26.1+, Folia 1.21.x and Folia 26.1+

4.0.4 May 3, 2026
Page 1
Sign in
$11.99 USD
Sign in to purchase, save this product to your cart, and keep downloads tied to your account.
Stripe