Duels Arena - Fast Regeneration v.1.5.3

Arena duels with queues and fast map regeneration.
  • DuelArenaNEW.png
DonutDuels Overview
DonutDuels is a premium, high-performance dueling plugin for Spigot/Paper/Folia servers (1.16.5 – 1.21.11).
It features full and efficient arena regeneration optimized for performance to keep your server running smooth, matchmaking queue, spectator system, loot collection, draw system, statistics, leaderboards, anti-cheat, command restrictions, and beautiful customizable GUI's.

Features

  • Highly Configurable
  • Queue system with music discs
  • Full Sound system
  • Music disc support
  • Leaderboards & Statistics
  • Command restrictions when in duel
  • Spectate others in a duel!
  • Full arena regeneration + clearing entities like arrows, end crystals and TNT
  • Optimized for high performance!
  • Configurable GUI's
  • Map / Region selector
  • Create arena's with ease
  • Multi server support

Setup

  • Start by setting a arena - the arena is the 2 spawn points of both players
  • Get the Arena Wand with /dd wand
  • Right click to set player spawn point 2 and Left click to set player spawn point 1
  • Now create the arena using /dd createarena <name>
  • You have successfully created your arena! Now we need to create a region so that the arena regenerates!
  • Get the Region want by /dd regionwand
  • Right click to set position 1 and Left click to set position 2 of the region (these should be the 2 corners of the arena!)
  • Now create the region using /dd createregion <name> The name of the region should be the same as the arena name
  • Congrats you have successfully created your first Duel Arena! It should now work and regenerate!
  • Try it out using /duel <player> and select your arena in the GUI!
These files might be outdated! These files are from update v1.3.9
Code:
# ============================================
# DONUT DUELS CONFIGURATION
# ============================================
# Plugin: DonutDuels
# Author: LeafStudios
# Version: 1.4.0
# Support: https://discord.gg/fRvpS3d4
# Compatibility: Spigot, Paper, Folia (1.16.5 - 1.21.10)
# ============================================

# ============================================
# GENERAL SETTINGS
# ============================================
general:
  default-duel-time: 300  # 5 minutes in seconds
  cleanup-time: 240       # 4 minutes after duel ends
  loot-collection-time: 240 # 4 minutes to collect loot
  debug-mode: false      # Set to true to enable debug console messages

  # Loot settings
  keep-loot-on-death: true # If true, player loot drops when they die in duels
  clear-drops-on-death: false # If true, clears all drops when player dies in duels

  # Death settings
  spectator-mode-on-death: true # If true, puts loser in spectator mode at death location
  spectator-duration: 100 # Duration in ticks (100 ticks = 5 seconds) before they can leave
  insta-respawn: true # If true, players respawn instantly at death location in spectator mode

  # Draw settings
  both-players-required-for-draw: true # If true, both players must agree to draw
  draw-timeout: 30 # Time in seconds for draw request timeout

  # Entity cleanup
  auto-clear-entities: true # Clear entities (items, arrows, etc.) after duel ends
  clear-entity-types:
    - DROPPED_ITEM
    - ARROW
    - SPECTRAL_ARROW
    - TRIDENT
    - EXPERIENCE_ORB
    - PRIMED_TNT

  arena-regeneration:
    enabled: true

  duel-start-commands:
    - "give %player% diamond_sword 1"
  duel-end-commands:
    - "give %winner% gold_ingot 5"

messages:
  use-actionbar: true # If true, duel messages are shown in action bar instead of chat
  language: "EN_US" # Language for messages (Options are EN_US and NL_BE)

# EXPERIMENTAL FEATURES - BUNGEECORD/REDIS SUPPORT - TAB INTEGRATION
bungeecord:
  enabled: false
  server-name: "duels1"
  redis:
    enabled: true
    host: "localhost"
    port: 6379

# CURRENTLY DOES NOT WORK
isolation:
  tab:
    enabled: false
    plugin-name: "TAB"

# ============================================
# DATABASE SETTINGS
# ============================================
database:
  type: "h2" # Options: h2 (.db), mysql (mysql), yaml (.yml) ALL STORAGE FILES TYPES
  mysql:
    jdbc-url: "" # Optional, e.g. "jdbc:mysql://localhost:3306/donutduels?useSSL=false"
    host: "localhost"
    port: 3306
    database: "donutduels"
    user: "root"
    password: "password"

# ============================================
# DUEL SYSTEM SETTINGS
# ============================================
duels:
  enabled: true
  max-duel-time: 600  # 10 minutes in seconds
  request-timeout: 60  # 1 minute
  allow-same-world-only: false

  # Countdown settings
  countdown:
    enabled: true
    duration: 5 # Countdown duration in seconds (5, 4, 3, 2, 1, GO!)
    freeze-players: true # Prevent players from moving during countdown
    show-titles: true # Show countdown titles
    play-sounds: true # Play countdown sounds

  # Sound effects
  sounds:
    duel-start:
      enabled: true
      sound: "ENTITY_GENERIC_EXPLODE"
      volume: 1.0
      pitch: 1.0

    countdown:
      enabled: true
      sound: "BLOCK_NOTE_BLOCK_PLING"
      volume: 1.0
      pitch: 1.0
      final-sound: "BLOCK_NOTE_BLOCK_PLING" # Sound for "GO!"
      final-pitch: 2.0

    victory:
      enabled: true
      type: "SOUND" # SOUND or MUSIC_DISC
      sound: "ENTITY_PLAYER_LEVELUP" # Used if type is SOUND
      music-disc: "MUSIC_DISC_PIGSTEP" # Used if type is MUSIC_DISC
      volume: 1.0
      pitch: 1.0
      duration: 100 # Duration in ticks for music disc playback

    queue-joined:
      enabled: true
      sound: "BLOCK_NOTE_BLOCK_HARP"
      volume: 0.8
      pitch: 1.2

    queue-match-found:
      enabled: true
      type: "SOUND" # SOUND or MUSIC_DISC
      sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
      music-disc: "MUSIC_DISC_STAL"
      volume: 1.0
      pitch: 1.5
      duration: 60 # Duration in ticks for music disc playback

# ============================================
# SPECTATOR SETTINGS
# ============================================
spectator:
  enabled: true
  allow-spectating-duels: true # Allow players to spectate ongoing duels
  spectator-gamemode: SPECTATOR # Gamemode for spectators
  teleport-to-center: true # Teleport spectators to arena center
  prevent-interaction: true # Prevent spectators from interacting with anything
  show-spectator-count: true # Show spectator count to duel participants

# ============================================
# ARENA MANAGEMENT
# ============================================
arenas:
  # Default arenas (created on first run)
  default-arenas:
    - "spawn_arena"
    - "desert_arena"
    - "forest_arena"

arena:
  max-region-blocks: 750000      # Max allowed blocks (recommended: 500k–1M)
  warn-large-region: 200000      # Warn player if region is bigger than this
  enable-region-size-check: true # Set to false to disable all limits (not recommended)
  do-mob-spawn: false            # Prevent mobs from spawning in duel arenas

particles:
  enabled: true
  type: "END_ROD"        # Best looking: END_ROD, FLAME, REDSTONE (with red color), SPELL_WITCH
  count: 1               # 1 is enough for clean lines
  duration: 200          # 10 seconds (20 ticks = 1 second)

# ============================================
# QUEUE SYSTEM
# ============================================
queue:
  enabled: true
  max-queue-time: 600 # Maximum time in queue before auto-removal
  sounds:
    queue-music:
      enabled: true  # Set to false to disable music when in queue
      music-disc: "MUSIC_DISC_WAIT"  # Valid music disc sound

# ============================================
# COMMAND RESTRICTIONS
# ============================================
command-restrictions:
  enabled: true
  allowed-commands:
    - "leave"
    - "draw"
    - "msg"
    - "tell"

  blocked-commands:
    - "tp"
    - "teleport"
    - "home"
    - "spawn"
    - "warp"
    - "back"
    - "fly"
    - "gamemode"

# ============================================
# STATISTICS
# ============================================
statistics:
  tracking:
    wins: true
    losses: true
    total-duels: true

  leaderboards:
    enabled: true
    update-interval: 300  # 5 minutes
    display-count: 10     # Top 10 players

# ============================================
# SECURITY & ANTI-CHEAT
# ============================================
security:
  anti-cheat:
    enabled: true
    kick-on-detection: true
    log-violations: true

  integrity-checks:
    movement-validation: true
    inventory-protection: true
    world-border-enforcement: true

  abuse-prevention:
    request-cooldown: 30     # 30 seconds between duel requests
    max-requests-per-hour: 20
    queue-hop-penalty: 60    # 1 minute penalty for leaving queue frequently

# ============================================
# PERFORMANCE & OPTIMIZATION
# ============================================
performance:
  auto-cleanup:
    enabled: true
    interval: 600  # 10 minutes

  memory-optimization:
    clear-unused-arenas: true
    optimize-statistics: true

# ============================================
# PLUGIN INFORMATION {Do Not Edit or Your Plugin will Break}
# ============================================
plugin-info:
  version: "1.4.0"
  author: "LeafStudios"
  license: "Commercial"
  support: "https://discord.gg/K5PD2h62yA"
  compatibility: "Spigot, Paper, Folia (1.16.5 - 1.21.8)"
The plugin contains 2 language files NL_BE and EN_US. This is the EN_US version.
Code:
# ============================================
# DONUTDUELS MESSAGES - ENGLISH (US)
# ============================================

messages:
  # ============================================
  # CORE DUEL MESSAGES
  # ============================================
  duel-request-sent: "&7You send a duel request to &x&0&0&9&8&F&F{player}!"
  duel-request-received: "&x&0&0&9&8&F&F{player} &7invited you to a duel in {arena}"
  duel-accepted: "&aYou accepted the duel request from &e{player}&a!"
  duel-started: "&7The duel is started with &x&0&0&9&8&F&F{player}"
  duel-cancelled: "&cDuel request cancelled."
  duel-victory: "&7You won the duel and have &x&0&0&9&8&F&F4 minutes &7for take loot and leave."
  duel-timeout: "&cDuel request expired."
  duel-self: "&cYou cannot duel yourself!"
  duel-accepted-by-opponent: "&aYour duel request was accepted by {player}"
  duel-time-expired: "&e⏰ Duel timed out after 8 minutes - Draw!"
  duel-ignored: "<red>✗ That player is not accepting duel requests from you right now."

  # ============================================
  # COUNTDOWN MESSAGES
  # ============================================
  countdown-title: "&e{seconds}"
  countdown-subtitle: "&7Get ready..."
  countdown-go-title: "&a&lGO!"
  countdown-go-subtitle: "&7Fight!"
  countdown-frozen: "&7You are frozen during countdown"

  # ============================================
  # PLAYER STATUS MESSAGES
  # ============================================
  you-in-duel: "&cYou are already in a duel!"
  player-in-duel: "&cThat player is already in a duel!"
  player-not-found: "&cPlayer not found!"
  not-in-duel: "&cYou are not currently in a duel!"
  not-in-queue: "&cYou are not in the queue."
  only-players: "&cThis command can only be used by players!"

  # ============================================
  # QUEUE MESSAGES
  # ============================================
  queue-joined: "&7You joined the casual queue"
  queue-left: "&cYou left the casual queue"
  queue-status-title: "&a&lQueue Status:"
  queue-position: "&7Position: &e{position}&7/&e{size}"
  queue-time: "&7Time in queue: &e{time}&7 seconds"
  queue-usage: "&cUsage: /queue [join|leave|status]"
  queue-already-in: "&cYou are already in the queue!"
  queue-not-in: "&cYou are not in the queue."
  queue-match-found: "&a✦ ᴍᴀᴛᴄʜ ғᴏᴜɴᴅ! ✦"
  queue-opponent: "&7ᴏᴘᴘᴏɴᴇɴᴛ: &e{player}"
  queue-no-arenas: "&c⚠ No free arenas available! You remain in queue."
  queue-arena-unavailable: "&7Your preferred arena was unavailable. Using: &e{arena}"
  queue-timeout: "&c⏰ Queue timeout! You've been removed from the queue after 1 minute."
  queue-timeout-retry: "&7Try joining the queue again when ready."
  queue-searching: "&e⏳ Searching for opponent... &7({time}s)" # {time} is time spent waiting in queue

  # ============================================
  # DRAW MESSAGES
  # ============================================
  draw-loot-time: "&7You have &x&0&0&9&8&F&F4 minutes &7to collect the loot and leave"
  draw-timeout: "&7Arena timeout reached, you have been teleported back."
  draw-request-sent: "&7You send draw request to &x&0&0&9&8&F&F{player}"
  draw-request-received: "&x&0&0&9&8&F&F{player} &7is requesting a duel draw"
  draw-accepted: "&7The draw request was accepted"
  draw-accepted-by-you: "&7You accepted the draw request"
  draw-blocked-pvp: "&cYou cannot attack your opponent during a draw!"
  draw-title: "&6ᴅʀᴀᴡ!"
  draw-subtitle: "&7The match ended in a draw"

  # ============================================
  # COMMAND MESSAGES
  # ============================================
  command-blocked: "&7You Can't do &x&0&0&9&8&F&F{command} &7in duel"
  duel-usage: "&cUsage: /duel <player>"
  accept-usage: "&cUsage: /duelaccept <player>"
  spectate-usage: "&cUsage: /duelspectate <player>"
  no-pending-request: "&cYou don't have any pending duel requests to cancel."

  # ============================================
  # ADMIN MESSAGES
  # ============================================
  config-reloaded: "&a✓ DonutDuels configuration reloaded successfully!"
  config-reload-error: "&cError reloading configuration files! Check console for details."
  no-permission: "&cYou don't have permission to use this command."
  unknown-command: "&cUnknown subcommand: &e/{label} {sub}"
  help-suggestion: "&7Type &e/{label} help &7for help."

  # ============================================
  # ARENA MANAGEMENT MESSAGES
  # ============================================
  reload-starting: "&7Reloading DonutDuels configuration files..."
  reload-config: "&7✓ config.yml reloaded"
  reload-arenas: "&7✓ arenas.yml reloaded"
  reload-regions: "&7✓ regions.yml reloaded"
  reload-time: "&7Reload completed in {time}ms"

  wand-received: "&a✦ ᴀʀᴇɴᴀ sᴇᴛᴜᴘ ᴡᴀɴᴅ ɢɪᴠᴇɴ! ✦"
  wand-usage: "&7ᴜsᴇ ᴛʜᴇ ᴡᴀɴᴅ ᴛᴏ sᴇᴛ sᴘᴀᴡɴ ᴘᴏsɪᴛɪᴏɴs"

  region-wand-received: "&a✦ Region Selection Wand given! ✦"
  region-wand-usage: "&7Use left/right click to select arena boundaries"
  region-wand-next: "&7Then use &e/donutduels createregion <name> &7to create the region"

  createarena-usage: "&cUsage: /donutduels createarena <arenaname>"
  missing-spawn-1: "&cYou haven't set Player 1 spawn point with the wand! (Left click)"
  missing-spawn-2: "&cYou haven't set Player 2 spawn point with the wand! (Right click)"
  arena-exists: "&cArena '&e{name}&c' already exists!"
  arena-created: "&aArena &e{name} &acreated successfully!"
  arena-spawns-set: "&7- Player 1 and 2 spawns set"

  createregion-usage: "&cUsage: /donutduels createregion <regionname>"
  missing-positions: "&cYou must set both positions first using the region wand!"
  different-worlds: "&cBoth positions must be in the same world!"
  region-exists: "&cRegion '{name}' already exists!"
  region-created: "&a✦ Region '{name}' created successfully! ✦"
  region-size: "&7Region size: &f{size} blocks"
  region-world: "&7World: &f{world}"
  region-create-failed: "&cFailed to create region. Check console for errors."

  deletearena-usage: "&cUsage: /donutduels deletearena <arena_name>"
  arena-not-found: "&cArena '&e{name}&c' does not exist!"
  arena-occupied: "&cArena '&e{name}&c' is currently occupied! Please wait."
  arena-deleted: "&a✓ Arena '&e{name}&a' was deleted successfully!"
  arena-delete-failed: "&cFailed to delete arena '&e{name}&c'!"

  mergearena-usage: "&cUsage: /donutduels mergearena <regionname>"
  worldguard-not-implemented: "&cWorldGuard integration is not implemented yet"
  use-createarena: "&7Use /donutduels createarena to create arenas without WorldGuard"

  arena-unavailable: "&c✖ ʀᴇǫᴜᴇsᴛᴇᴅ ᴀʀᴇɴᴀ '{arena}' ɪs ᴜɴᴀᴠᴀɪʟᴀʙʟᴇ!"
  arena-using-alternative: "&7🔄 ᴜsɪɴɢ ᴀʟᴛᴇʀɴᴀᴛɪᴠᴇ ᴀʀᴇɴᴀ: &f{arena}"
  arena-no-alternative: "&c✖ ɴᴏ ᴀʟᴛᴇʀɴᴀᴛɪᴠᴇ ᴀʀᴇɴᴀs ᴀᴠᴀɪʟᴀʙʟᴇ!"
  arena-all-occupied: "&c✖ ᴀʟʟ ᴀʀᴇɴᴀs ᴀʀᴇ ᴄᴜʀʀᴇɴᴛʟʏ ᴏᴄᴄᴜᴘɪᴇᴅ!"
  arena-available-count: "&7📋 ᴀᴠᴀɪʟᴀʙʟᴇ: {available}/{total} ᴀʀᴇɴᴀs"
  arena-fatal-error: "&c✗ ғᴀᴛᴀʟ ᴇʀʀᴏʀ: ɴᴏ ᴀʀᴇɴᴀ ᴀssɪɢɴᴇᴅ!"
  arena-reserve-failed: "&c✖ ғᴀɪʟᴇᴅ ᴛᴏ ʀᴇsᴇʀᴠᴇ ᴀʀᴇɴᴀ '{arena}'!"
  arena-teleport-failed: "&cғᴀɪʟᴇᴅ ᴛᴏ ᴛᴇʟᴇᴘᴏʀᴛ ᴛᴏ ᴀʀᴇɴᴀ!"
  arena-closed: "&cArena has been closed and you have been teleported back."
  arena-cleanup: "&e⚠ Arena will close in {time} minute(s)!"
  arena-entities-cleared: "&aCleared {count} entities from arena"
  arena-regenerating: "&c⚠ This arena is currently regenerating! Try another arena."

  # ============================================
  # LOOT COLLECTION MESSAGES
  # ============================================
  loot-timeout: "&c⏰ LOOT COLLECTION TIME EXPIRED - AUTO TELEPORTED"
  loot-warning: "&e⚠ 1 MINUTE REMAINING TO COLLECT LOOT!"

  # ============================================
  # DEATH & RESPAWN MESSAGES
  # ============================================
  death-title: "&cYou Died!"
  death-subtitle: "&7Spectating for {duration} seconds..."
  death-respawn-message: "&7You will respawn at your death location in spectator mode"
  duel-loss-title: "&cYou Lost"
  duel-loss-subtitle: "&fYou can now leave by using /leave"
  duel-start-title: "&x&F&F&0&0&0&0&lᴅᴜᴇʟ"
  duel-start-subtitle: "&7Fight with players and take their loot."

  # ============================================
  # LEAVE COMMAND MESSAGES
  # ============================================
  leave-victory: "&a✨ ʀᴇᴛᴜʀɴɪɴɢ ᴛᴏ sᴘᴀᴡɴ - ᴄᴏɴɢʀᴀᴛᴜʟᴀᴛɪᴏɴs ᴏɴ ʏᴏᴜʀ ᴠɪᴄᴛᴏʀʏ!"
  duel-state-cleaned: "&cDuel state cleaned up. You are no longer in a duel."
  leave-punishment: "&c⚠ ʟᴇᴀᴠɪɴɢ ᴅᴜᴇʟ - ᴅʀᴏᴘᴘɪɴɢ ɪɴᴠᴇɴᴛᴏʀʏ!"
  leave-punished: "&c💀 ʏᴏᴜ ʜᴀᴠᴇ ʙᴇᴇɴ ᴘᴜɴɪsʜᴇᴅ ғᴏʀ ʟᴇᴀᴠɪɴɢ ᴛʜᴇ ᴅᴜᴇʟ!"
  opponent-left: "&a✦ ᴠɪᴄᴛᴏʀʏ! ᴏᴘᴘᴏɴᴇɴᴛ ʟᴇғᴛ ᴛʜᴇ ᴅᴜᴇʟ ✦"
  opponent-disconnected: "&a✦ ᴠɪᴄᴛᴏʀʏ! ᴏᴘᴘᴏɴᴇɴᴛ ᴅɪsᴄᴏɴɴᴇᴄᴛᴇᴅ ✦"

  # ============================================
  # SPECTATOR MESSAGES
  # ============================================
  spectate-not-in-duel: "&c{player} is not in a duel!"
  spectate-joined: "&aNow spectating duel between &e{player1} &aand &e{player2}"
  spectate-left: "&7You stopped spectating the duel"
  spectate-ended: "&7The duel you were spectating has ended"
  spectate-already: "&cYou are already spectating a duel!"
  spectate-in-duel: "&cYou cannot spectate while in a duel!"
  spectate-disabled: "&cSpectating duels is currently disabled"
  spectator-joined: "&7&e{player} &7is now spectating"
  spectator-left: "&7&e{player} &7stopped spectating"
  spectator-count: "&7Spectators: &e{count}"

  # ============================================
  # HELP MESSAGES
  # ============================================
  help-header: "§8§l≫ §d§lDonutDuels §8§l≪"
  help-player-commands: "§7Player Commands:"
  help-queue: "§d  queue (q) §8- §7Open queue GUI or toggle queue"
  help-leave: "§d  leave (l) §8- §7Leave current duel"
  help-duel: "§d  duel §8- §7Challenge a player to duel"
  help-accept: "§d  accept §8- §7Accept a duel request"
  help-cancel: "§d  cancel §8- §7Cancel pending duel request"
  help-draw: "§d  draw §8- §7Request draw in current duel"
  help-spectate: "§d  spectate §8- §7Spectate a player's duel"
  help-admin-commands: "§7Admin Commands:"
  help-reload: "§d  reload (rl) §8- §7Reload all configs"
  help-wand: "§d  wand (w) §8- §7Get arena setup wand"
  help-regionwand: "§d  regionwand (rw) §8- §7Get region selection wand"
  help-createarena: "§d  createarena (ca) §8- §7Create new arena"
  help-createregion: "§d  createregion (cr) §8- §7Create new region"
  help-deletearena: "§d  deletearena (da) §8- §7Delete arena"
  help-mergearena: "§d  mergearena (ma) §8- §7Merge with WorldGuard region"
  help-ignore: "§d  ignore §8- §7Ignore duel requests from players"
  help-deny: "§d  deny §8- §7Deny a duel request"

  # ============================================
  # DUEL ACCEPT BUTTON MESSAGE
  # ============================================
  duel-accept-click: "§x§0§0§9§8§F§F(CLICK TO ACCEPT)"
  duel-accept-or-type: " §7or type §x§0§0§9§8§F§F/duelaccept {player}"
  duel-accept-hover: "§aClick to accept the duel request from {player}"

  # ============================================
  # DUEL IGNORE MESSAGES
  # ============================================
  duelignore-help-header: "<gradient:light_purple:blue><bold>≫ Duel Ignore Help ≪"
  duelignore-help-add: "<light_purple>  /duelignore add <player> <dark_gray>- <gray>Ignore duel requests from a player"
  duelignore-help-remove: "<light_purple>  /duelignore remove <player> <dark_gray>- <gray>Unignore a player"
  duelignore-help-list: "<light_purple>  /duelignore list <dark_gray>- <gray>List all ignored players"
  duelignore-help-clear: "<light_purple>  /duelignore clear <dark_gray>- <gray>Clear your entire ignore list"

  duelignore-add-usage: "<red>Usage: /duelignore add <player>"
  duelignore-remove-usage: "<red>Usage: /duelignore remove <player>"

  duelignore-added: "<green>✓ You are now ignoring duel requests from <yellow>{player}"
  duelignore-already: "<yellow>⚠ You are already ignoring <yellow>{player}"
  duelignore-removed: "<green>✓ You are no longer ignoring <yellow>{player}"
  duelignore-not-ignoring: "<red>✗ You are not ignoring <yellow>{player}"
  duelignore-self: "<red>You cannot ignore yourself!"

  duelignore-list-header: "<gradient:light_purple:blue><bold>≫ Ignored Players ({count}) ≪"
  duelignore-list-empty: "<gray>You are not ignoring any players."
  duelignore-list-online: "<gray>Online: <yellow>{players}"
  duelignore-list-none-online: "<gray>None of your ignored players are currently online."

  duelignore-cleared: "<green>✓ Cleared <yellow>{count} <green>player(s) from your ignore list"

  # ============================================
  # DUEL DENY MESSAGES
  # ============================================
  dueldeny-usage: "<red>Usage: /dueldeny or /dueldeny <player>"
  dueldeny-no-requests: "<gray>You have no pending duel requests to deny."
  dueldeny-no-request-from: "<red>You don't have a pending duel request from <yellow>{player}"

  dueldeny-denied: "<red>✗ You denied the duel request from <yellow>{player}"
  dueldeny-denied-by: "<red>✗ <yellow>{player} <red>denied your duel request"

  dueldeny-multiple-requests: "<yellow>⚠ You have multiple pending duel requests:"
  dueldeny-request-list-item: "<gray>{number}. <yellow>{player} <dark_gray>- <gray>Arena: <white>{arena}"
Code:
# =============================================
# DONUT DUELS - GUI CONFIGURATION
# Fully customizable GUIs - supports colors, lore, materials, slots
# =============================================

guis:
  queue:
    title: "ǫᴜᴇᴜᴇ ᴄᴏɴғɪʀᴍᴀᴛɪᴏɴ"
    size: 27
    items:
      cancel:
        material: RED_STAINED_GLASS_PANE
        slot: 10
        name: "§x§F§F§0§0§0§0ᴄᴀɴᴄᴇʟ"
        lore:
          - "§fClick to cancel"
        action: CLOSE

      wait_time:
        material: COMPASS
        slot: 12
        name: "§x§0§0§F§F§8§Dᴡᴀɪᴛ ᴛɪᴍᴇ"
        lore:
          - "§7Estimated Time: <1 minute"
          - "§7Currently Queued: {queue_size}"
        action: NONE

      stats:
        material: GRAY_DYE
        slot: 13
        name: "§x§0§0§F§F§8§Dsᴛᴀᴛɪsᴛɪᴄ"
        lore:
          - "§7Wins: §a{wins}"
          - "§7Losses: §c{losses}"
          - "§7Win Streak: §e{streak}"
          - "§7Win Rate: §b{winrate}%"
        action: NONE

      arena_select:
        material: FEATHER
        slot: 14
        name: "§x§0§0§F§F§7§9ᴀʀᴇɴᴀ"
        lore:
          - "§fClick to select arena"
          - "§7Selected: §e{selected_arena}"
        action: OPEN_ARENA_GUI
        disabled: false

      search:
        material: LIME_STAINED_GLASS_PANE
        slot: 16
        name: "§x§3§7§F§F§0§0sᴇᴀʀᴄʜ"
        lore:
          - "§fClick to start searching for a match"
        action: JOIN_QUEUE

  duel_config:
    title: "ᴄʀᴇᴀᴛᴇ ᴅᴜᴇʟ - {opponent}"
    size: 27
    items:
      cancel:
        material: RED_STAINED_GLASS_PANE
        slot: 10
        name: "§x§F§F§0§0§0§0ᴄᴀɴᴄᴇʟ"
        lore: ["§fClick to cancel."]
        action: CLOSE

      arena:
        material: GRASS_BLOCK
        slot: 12
        name: "§x§0§0§F§F§7§9ᴀʀᴇɴᴀ"
        lore:
          - "§fClick to change arena"
          - "§7({selected_arena})"
        action: OPEN_ARENA_GUI

      time:
        material: CLOCK
        slot: 13
        name: "§x§0§0§F§F§7§9ᴛɪᴍᴇ"
        lore:
          - "§7({duration}m)"
          - "§7(Time before match is considered a draw)"
        action: CYCLE_TIME

      region:
        material: COMPASS
        slot: 14
        name: "§x§0§0§F§F§7§9ʀᴇɢɪᴏɴ"
        lore:
          - "§fGlobal (§x§0§0§9§8§F§F{ping}ms§f)"
        action: NONE

      send:
        material: LIME_STAINED_GLASS_PANE
        slot: 16
        name: "§x§0§0§F§F§0§7sᴇɴᴅ"
        lore:
          - "§fClick to send duel request."
        action: SEND_DUEL

  arena_selector:
    title: "sᴇʟᴇᴄᴛ ᴀʀᴇɴᴀ"
    size: 27
    fill-background: true
    background-item: GRAY_STAINED_GLASS_PANE
    items:
      auto:
        material: NETHER_STAR
        slot: 13
        name: "§x§0§0§F§F§7§9ᴀᴜᴛᴏ sᴇʟᴇᴄᴛ"
        lore:
          - "§7Automatically selects the best"
          - "§7available arena for your match"
          - ""
          - "§aᴄʟɪᴄᴋ ᴛᴏ ᴇɴᴀʙʟᴇ ᴀᴜᴛᴏ-sᴇʟᴇᴄᴛ"
        action: SELECT_AUTO_ARENA

      back:
        material: BARRIER
        slot: 26
        name: "§cʙᴀᴄᴋ"
        lore: ["§7Return to previous menu"]
        action: BACK

  region_selector:
    title: "§dREGION SELECTION"
    size: 27
    fill-background: true
    background-item: GRAY_STAINED_GLASS_PANE
    items:
      asia:
        material: COMPASS
        slot: 13
        name: "§aGLOBAL REGION (Selected)"
        lore:
          - "§7Your ping: §a{ping}ms"
          - "§7Global servers - optimal for ALL players"
          - ""
          - "§7Region locked for best performance"
        action: NONE

      info:
        material: BOOK
        slot: 11
        name: "§6REGION INFO"
        lore:
          - "§7Other regions are not available"
          - "§7in this version of DonutDuels"
          - ""
          - "§7ASIA region provides the best"
          - "§7connectivity for all users"
        action: NONE

      back:
        material: BARRIER
        slot: 22
        name: "§cBACK"
        lore: ["§7Return to previous menu"]
        action: BACK_TO_QUEUE
Picsart_25-10-22_23-30-56-792.png

saveandrate.png

Latest reviews

dupe armor when disconect
Great plugin with great and fast support!
Legion Network
Legion Network
Thank you very much for your review!
Affordable Price
High Quality
Helpful Developer
I Recommend this plugin whoever wants Cool Duel System
Legion Network
Legion Network
Thank you for your review!
Amazing plugin, whilst it did need some changes to match a DonutSMP style duels system and a couple of bugs, working with the developer so far has been nothing short of amazing. I reported issues, shared detailed suggestions, and explained how DonutSMP duels work, and he actually listened and started implementing those improvements.

The developer is very active, quick to respond, and clear in his responses. Updates are delivered fast, and optimization seems to be a priority. What I appreciate most is the fact that he's open to feedback and uses it to improve the plugin step by step instead of ignoring suggestions.

In general, great service, great attitude, and solid development work. I am incredibly satisfied with the progress so far. If you are looking for a plugin similar to DonutSMP, this is surely one.
Legion Network
Legion Network
Thank you very much for your kind words and time to write this review! Thank you alot for helping me making the plugin better and more like donutSMP's duels system. If you have anymore suggestions please let me know :D
very nice support very good plugin
Legion Network
Legion Network
Thank you for your review!
This plugin so cool and clean super optimizationed no bug no delay good
Legion Network
Legion Network
Thank you a lot for your review!
Perfect work, thank you! Highly recommend
Legion Network
Legion Network
Thanks a lot for the review!
Very good plugin and the dev is very fast in his support, but if you speak Spanish I do not recommend it because you can not change the menus and some main messages, hopefully the developer can add it.
Legion Network
Legion Network
Thank you for the review! Message and GUI customizability has been added!
this plugin is very good! the support is fast and works!
Legion Network
Legion Network
Thanks Sir! It will help us a lot.
the best porvider on the bbb
Legion Network
Legion Network
Thank you! This review will help us grow!
Buy a license now
$6.95
EULA
Standard EULA
Use on any projects you own with attribution
Support
Standard
Includes:
Download the resource
Access new updates
Support from the creator
Support duration
Lifetime
Share and earn
Refer this resource and earn a 10% commission.
6,738 Views
56 Purchases
58 Downloads
Jul 30, 2025 Published
May 5, 2026 Updated
5.00 star(s)
Average rating (15)
4.7 MB File size
Open source
  1. No
DRM-free
  1. No
Unobfuscated
  1. Yes
AI use in marketing
No
AI use in product
No
Type
  1. Gameplay
  1. GUI
Game mode
  1. Survival
  1. Factions
  1. Lifesteal
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Bungee
  1. Folia
  1. Velocity
  1. Purpur
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
  1. 1.19
  1. 1.18
  1. 1.17
  1. 1.16
Supported languages
  1. English
Creator
Struggling to cover the costs of your server? Set up your own webstore with Tebex in under 30 seconds.
Host a lag-free Minecraft or Hytale server in minutes.
Get 25% off your first order with our link.
Recommended for you
3D ATM Machines, Unlimited GUI Inventories, In-game GUI Management, Fully Customize! [Vault]
4.00 star(s) 5 ratings
82 purchases
Toggle non-PvP mode with perks and timers.
5.00 star(s) 3 ratings
36 purchases
Team management for survival and lifesteal servers.
5.00 star(s) 2 ratings
7 purchases
Progression tycoon setup with custom gameplay.
5.00 star(s) 4 ratings
21 purchases
1.21.11 - Spear Update | 22+ Custom Menus | NO Premium Plugins | Player Shops & more
Not yet rated
19 purchases
Share and earn
Refer this resource and earn a 10% commission.
6,738 Views
56 Purchases
58 Downloads
Jul 30, 2025 Published
May 5, 2026 Updated
5.00 star(s)
Average rating (15)
4.7 MB File size
Open source
  1. No
DRM-free
  1. No
Unobfuscated
  1. Yes
AI use in marketing
No
AI use in product
No
Type
  1. Gameplay
  1. GUI
Game mode
  1. Survival
  1. Factions
  1. Lifesteal
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Bungee
  1. Folia
  1. Velocity
  1. Purpur
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
  1. 1.19
  1. 1.18
  1. 1.17
  1. 1.16
Supported languages
  1. English
Creator
Struggling to cover the costs of your server? Set up your own webstore with Tebex in under 30 seconds.
Host a lag-free Minecraft or Hytale server in minutes.
Get 25% off your first order with our link.
Recommended for you
3D ATM Machines, Unlimited GUI Inventories, In-game GUI Management, Fully Customize! [Vault]
4.00 star(s) 5 ratings
82 purchases
Toggle non-PvP mode with perks and timers.
5.00 star(s) 3 ratings
36 purchases
Team management for survival and lifesteal servers.
5.00 star(s) 2 ratings
7 purchases
Progression tycoon setup with custom gameplay.
5.00 star(s) 4 ratings
21 purchases
1.21.11 - Spear Update | 22+ Custom Menus | NO Premium Plugins | Player Shops & more
Not yet rated
19 purchases
Top