Configuration Files
Detailed specifications of variables and settings inside the plugin configuration files.
Main Configuration File (config.yml)
Located at plugins/ShyamDuels/config.yml. This file manages module toggles, world structures, command limitations, and party and duel matchmaking metrics.
Module Toggles
Disable specific sub-modules server-wide:
yamlmodules:
queue: true
ffa: true
party: true
spectate: true
friends: true
duels: true
custom-kits: true
killstreaks: true
auto-gg: true
action-bar: false
tab-list: true
scoreboard: true
practice-kit-editor: true
practice-duel-command: true
practice-right-click-duel: true
practice-death-messages: true
practice-golden-head: true
practice-totem-practice: true
armor-trimmer: true
shield-customizer: true
enchant-table: true
kit-editor-armor-trimmer: true
kit-room-shulker-editor: true
See Practice Features for practice module details.
World and Arena Configurations
yamlarenas:
world: Arenas # Base void world; clone worlds become Arenas1, Arenas2, …
cloning: 0 # Extra world copies for duel capacity (0 = off)
sanitize-clone-worlds: true # Strip entity data from copied world folders
reset-queue:
max-concurrent: 3 # Max simultaneous FAWE arena restorations
ffa-one-at-a-time: true # Only one FFA reset at a time (duel resets unaffected)
clear-entities-on-startup: true
sanitize-clone-worlds: true # Strip entity data from copied world folders
See the Arena Setup: Arena Cloning guide for how cloning works. Build template arenas only in the base Arenas world, not in Arenas1, Arenas2, or other auto-generated clone worlds.
Command Restrictions
Configure command rules inside matches to block cheating or bypass attempts:
yamlcommand-restrictions:
allowed: # Always permitted (plus admin bypass)
- leave
- leavefight
- spawn
- spectate
in-party: # Blocked while in a party lobby
- kiteditor
- duel
- ffa
- spectate
in-match-global: # Blocked during any active match
- kiteditor
in-duel:
mode: block-all
in-ffa:
mode: block-all
in-spectate:
mode: block-all
Queue and Duels
yamlqueue:
multiple-kits: true # Allow queuing multiple kits at once
random-queue-enabled: true # Random kit queue option
modes: # Disable individual queue sizes
1v1: true
2v2: true
3v3: true
4v4: true
duels:
invite-expiration: 60 # Seconds before duel invites expire
start-countdown: 5 # Countdown before round starts
max-rounds: 20
leavefight:
cooldown: 3 # Seconds before /leavefight can be used again
delay: 3 # Teleport delay after command
Party, FFA, and Match Start
yamlparty:
default-max-size: 8
size-permissions:
shyamduels.vip: 16
shyamduels.vipplus: 32
invite-expiration: 60
party-chat:
format: "&b[Party] &f{player}: &7{message}"
party-ffa:
spawn-circle-radius: 4.0
ffa:
reset-interval-seconds: 1800
use-match-start-options: true
skip-countdown: false
countdown-seconds: [5, 4, 3, 2, 1]
match-start:
countdown-seconds: [5, 4, 3, 2, 1]
match-start-potions:
enabled: true
delay_seconds: 1
blocked-effects: [poison, slowness, weakness, ...]
Configure match-start potion scanning per kit with /kit matchstartpots. See Kit Setup.
Killstreaks, Messages, and Practice Items
yamlkillstreaks:
enabled: true
broadcast: true
tiers:
- kills: 5
name: "Killing Spree"
- kills: 10
name: "Rampage"
death-messages:
enabled: true
customizable: true
auto-gg:
enabled: true
delay-seconds: 2
golden-head:
cooldown: 3
item: { ... } # Texture, name, lore, effects
totem-practice:
command: "totempractice"
gui: { title, size }
practice: { score_reset_duration, max_misses }
door-animation:
enabled: true # Complex door gates (see Gate Setup guide)
custom-kits:
enabled: true
base-kit-name: custom
default-unlocked-kits: 3
hide-from-public-menus: true
right-click:
enabled: true
commands:
- "duel %clicked_player%"
Golden head, totem practice, and door animation are toggled via modules.*, not separate enabled keys on those sections.
Tab List and Scoreboard
Tab headers/footers and scoreboard layouts are configured in separate files:
plugins/ShyamDuels/tab/display.yml- tab list header, footer, and name formatsplugins/ShyamDuels/tab/scoreboard.yml- in-match and lobby scoreboardsplugins/ShyamDuels/tab/animations.yml- scrolling tab animations
Reload tab config with /tab reload. Players toggle tab/scoreboard visibility in /settings.
Tab sort ranks in tab/display.yml use optional LuckPerms permissions for prefix priority: group.owner, shyamtab.admin, shyamtab.staff, shyamtab.vip.
GUI Menus and Item Configs
All player-facing menus live under plugins/ShyamDuels/menus/:
duel.yml,queue.yml,queue-kit.yml,ffa.yml,spectate.ymlkiteditor.yml,kitroom.yml,kitroom_items.ymlparty-gui.yml,party-manage.yml,party-settings.yml,party-signgui.ymlplayer-settings.ymlarmor_trimmer.yml,shield_customizer.yml,shulker_editor.yml,enchant_table.ymlcustomkits-*.yml(selector, editor, category, settings, armor selection, enchantment, signgui)
Lobby hotbar items and the post-duel rematch button: items/spawn-items.yml. Party and queue hotbar items: items/party-items.yml, items/queue-items.yml.
yaml# items/spawn-items.yml
rematch:
enabled: true # Allow rematch after duels
duration-seconds: 5 # How long the rematch item stays in hotbar
slot: 5 # Hotbar slot (0-8)
material: EMERALD
name: "&a&lREMATCH"
lore:
- " &fQuick rematch vs &e{opponent}"
- " &7Kit: &b{kit}"
items:
queue:
slot: 0
material: DIAMOND_SWORD
name: "&b&lRANKED QUEUE"
commands: ["player:queue"]
Rematch lore supports {opponent} and {kit} placeholders. Reload with /shyamduels reload.
Kit and FFA GUI order/icons: data/order.yml. Custom kit categories: categories.json (runtime).
Runtime Data Files
data/arenas.db,data/kits.db,data/stats.db- SQLite databases (paths configurable indatabase.yml)data/complex-door-data/<arena>.yml- Gate definitions per arenadata/customkits/- Saved player custom kit profilesdata/playerdata/- Per-player custom kit slot unlock dataschematics/<ArenaName>.schem- FAWE arena snapshots
Messages (lang/messages.yml)
All in-game chat strings, GUI titles, duel titles, party messages, and help text live in plugins/ShyamDuels/lang/messages.yml. Reload with /shyamduels reload.
Database Connection Settings (database.yml)
Manages backend data connections for matchmaking stats, arena registers, and kit loads:
yamltype: SQLITE # Connection type: SQLITE or MYSQL
sqlite:
directory: data
arenas-file: arenas.db # Local SQLite database files
kits-file: kits.db
stats-file: stats.db
mysql:
host: localhost
port: 3306
database: shyamduels
username: root
password: ""
use-ssl: false
ELO and Ranks Database (ranks.yml)
Manages matchmaking ranges and calculations:
yamlelo:
rank-system: true # Enable rank progressions
starting-elo: 1000 # Base ELO rating for new players
base-gain: 25 # Base ELO added on win
base-loss: 20 # Base ELO deducted on loss
kill-gain: 5 # Bonus ELO added per kill
anti-farm:
enabled: true # Block ELO farming exploits
cooldown-hours: 3 # Cooldown before the same opponent yields ELO again
max-wins-per-opponent: 2 # Max wins against the same player in cooldown period
block-same-ip: true # Block ELO gains between matching IP addresses
Import from StrikePractice: see the Migration Guide.
Sound Effects Library (sounds.yml)
Maps custom sounds to match events. Supports standard Minecraft sound keys (e.g. BLOCK_NOTE_BLOCK_PLING):
yamlsounds:
match-found:
sound: ENTITY_PLAYER_LEVELUP
volume: 1.0
pitch: 1.0
countdown:
sound: BLOCK_NOTE_BLOCK_PLING
volume: 1.0
pitch: 1.0
fight-start:
sound: ENTITY_WITHER_SPAWN
volume: 0.5
pitch: 1.0