NDuels
A simple but a all in one Duels Plugin
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
NDuels
NDuels
Fast, configurable duels plugin for Paper/Spigot. Designed for clean queues, flexible menus, and smooth arena resets.
Core Features
- Matchmaking & queues with /duel menu support - Custom kits per mode + in‑game editor - Configurable /duel menu layout via menu.layout - Lag‑safe arena reset (batch block restore) - And Much more! :D
Important Notes
- TAB integration: duelists can see only opponent + spectators in tablist (if TAB is installed) - PlaceHolderAPI support included
Player Commands
Player Commands
``` - /duel - show basic help - /duel queue <mode> - join queue for a mode - /duel leave - leave current queue - /duel unqueue - same as leave - /duel modes - list available modes - /duel menu - open duel menu - /duel preview <kitId> - preview a kit - /duel spectate <player|off> - spectate a player or stop spectating - /duel accept <player> - accept a duel request - /duel ready - confirm ready check - /duel stats [player] - view duel stats - /duel <player> <mode> - send duel request ```
Admin Commands
Admin Commands
``` - /dueladmin menu - open the admin GUI - /dueladmin placeholders - open placeholder list GUI - /dueladmin save <arenaName> - save selected arena positions - /dueladmin removearena <arenaName> - delete an arena - /dueladmin reload - reload config, modes, arenas, queues - /dueladmin victorymsg <all|players|none> - set who sees win message - /dueladmin startmsg <all|players|none> - set who sees start message - /dueladmin gdelay <mode> <time> - set glowing delay for a mode - /dueladmin casing <unbreakable|breakable> - toggle arena casing protection - /dueladmin modearena add <mode> <arena> - assign arena to a mode - /dueladmin modearena remove <mode> <arena> - remove arena from a mode - /dueladmin setspawn <arenaName> <1|2> - set arena spawn point - /dueladmin kit create <mode> - create kit from your inventory - /dueladmin kit preview <mode> - preview a kit - /dueladmin kit editor <kitId> - edit a kit - /dueladmin kit list - list all kits - /dueladmin mode delete <mode> - delete a mode - /dueladmin rdelay <seconds> - set respawn delay after duel - /dueladmin list - list arenas and their status ```
Permissions
Permissions
``` - nduels.bypass - nduels.admin - nduels.admin.legacy (deprecated) - nduels.admin.wand - nduels.admin.menu - nduels.admin.placeholders - nduels.admin.save - nduels.admin.arena.remove - nduels.admin.reload - nduels.admin.victorymsg - nduels.admin.gdelay - nduels.admin.kit.rename - nduels.admin.nosat - nduels.admin.modearena.add - nduels.admin.modearena.remove - nduels.admin.modearena.list - nduels.admin.setspawn - nduels.admin.kit.editor - nduels.admin.kit.create - nduels.admin.kit.preview - nduels.admin.kit.list - nduels.admin.rdelay - nduels.admin.list ```
Placeholders (Using PlaceHolderAPI)
Placeholders
``` - %nduels_queue% - %nduels_queuepos% - %nduels_queue_eta% - %nduels_queued_mode% - %nduels_in_duel% - %nduels_duel_mode% - %nduels_duel_mode_display% - %nduels_duel_opponent% - %nduels_ready% - %nduels_requests% - %nduels_arenas_total% - %nduels_arenas_free% - %nduels_arenas_inuse% - %nduels_arenas_resetting% - %nduels_modes_total% - %nduels_queued_total% - %nduels_online% - %nduels_wins% - %nduels_losses% - %nduels_kills% - %nduels_deaths% - %nduels_kd% - %nduels_wl% Per-mode (replace <mode> with mode id) - %nduels_queue_<mode>% - %nduels_queuepos_<mode>% - %nduels_wins_<mode>% - %nduels_losses_<mode>% - %nduels_kills_<mode>% - %nduels_deaths_<mode>% - %nduels_wl_<mode>% ```
Menu Example:
Examples

Code:
``` menu: layout: row2: '[] [] [] m o a [] [] []' row3: '[] [] [] t r h [] [] []' row4: '[] [] [] [] [] [] [] [] []' row5: 'p [] [] c [] u [] [] n' row6: '' items: p: page_prev n: page_next c: close u: unqueue a: mode_axe r: mode_crystal1 m: mode_mace1 h: mode_helden2 o: mode_only t: mode_uhc ```
Default Config.yml
Config.yml
U can change many settings/options with the ingame Admin Commands
``` #
NDuels configuration
Tips:
- Most values can be changed and reloaded with /dueladmin reload
- Times are in seconds unless stated otherwise
#
Arena definitions (auto-filled by /dueladmin save)
arenas: {} modes:
Example mode (copy this to add more)
example:
Display name shown in menus & messages
displayName: "&bExample"
Fallback icon material (if no icon-item is set)
icon: DIAMOND_SWORD
Optional: glowing delay for this mode (seconds). 0 = off
glowing-delay-seconds: 0
Optional: disable hunger drain for this mode
no-saturation: false
Optional full item override (serialized ItemStack)
icon-item: {}
settings:
Block non-/duel commands while in a duel
command-blocking: true
Make arena casing (border) unbreakable
arena-shell-unbreakable: true
Broadcast duel start messages to the whole server
broadcast-duels: true
Victory message scope: ALL / PLAYERS / NONE
victory-message: PLAYERS
Start message scope: ALL / PLAYERS / NONE
start-message: PLAYERS
Time after duel before returning to lobby (0 = instant)
respawn-delay: 0
Seconds before killing players who leave the arena during a duel
arena-exit-seconds: 3
How many blocks are reset per tick (higher = faster, more load)
arena-reset-blocks-per-tick: 2000
Particle radius to show arena borders when near
boundary-particle-radius: 3
Queue status actionbar update interval (ticks)
queue-status-interval-ticks: 40
Average duel length used for ETA (seconds)
queue-avg-duel-seconds: 60
Ready check timeout (seconds)
ready-check-seconds: 10
Duel request timeout (seconds)
duel-request-timeout-seconds: 30
Menu sound effects
menu-click-sound: UI_BUTTON_CLICK menu-page-sound: ITEM_BOOK_PAGE_TURN menu-open-sound: BLOCK_CHEST_OPEN xp:
XP needed per level
per-level: 100
XP for wins / losses / kills
win: 10 loss: 5 kill: 2 menu:
/duel menu layout (up to 6 rows).
Use [] for empty (auto-filled with gray glass).
Set row6: "" to make a 5-row menu, row5: "" for 4 rows, etc.
layout: row1: "[] [] [] [] [] [] [] [] []" row2: "[] [] [] [] [] [] [] [] []" row3: "[] [] [] [] [] [] [] [] []" row4: "[] [] [] [] [] [] [] [] []" row5: "[] [] [] [] [] [] [] [] []" row6: "p [] [] [] c [] [] n u"
Map layout letters to actions
items: p: "page_prev" n: "page_next" c: "close" u: "unqueue"
Generic mode slot (auto-fills modes, with paging)
s: "mode"
You can also pin specific modes:
x: "mode_sword"
```