NDuels

A simple but a all in one Duels Plugin

50

Quick challenge

How far can you run before the mobs catch you?

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

Example Menu 1

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"

```

ADS