Getting Started
Install ShyamDuels, set up your lobby, create your first kit and arena, and run your first match in about 10 minutes.
Core Requirements
| Dependency | Minimum Version | Notes |
|---|---|---|
| Paper / Spigot | 1.21+ | Paper recommended. Requires Minecraft 1.21 or newer. |
| Java | 21+ | Java 21 or newer. Older JVM versions will refuse to load the plugin. |
| FastAsyncWorldEdit (FAWE) | 2.x | Required. Saves arena schematics and restores blocks after each match. |
| LuckPerms | 5.x | Required. Manages permissions for VIP tiers, limits, and admin bypasses. |
| PlaceholderAPI | 2.11+ | Required. Powers scoreboard fields and dynamic chat placeholders. |
| packetevents | 2.x | Required. Handles custom nametags, tab list, and scoreboard packets. |
Installation Steps
- Download and install FastAsyncWorldEdit, LuckPerms, PlaceholderAPI, and packetevents into your server's
plugins/folder. - Place ShyamDuels.jar inside the
plugins/folder. - Perform a full server restart (do not use
/reload, as reloads can cause conflict hooks with FAWE packet wrappers). - The plugin generates the
plugins/ShyamDuels/data directory with all default configurations on initial load.
Generated Folder Structure
plugins/ShyamDuels/
├── config.yml ← Main settings (modules, lobby, duels, party, practice)
├── database.yml ← SQLite or MySQL connection
├── ranks.yml ← ELO gains/losses and rank tiers
├── sounds.yml ← Event sounds
├── lang/
│ └── messages.yml ← Chat strings and GUI messages
├── tab/
│ ├── display.yml ← Tab list headers, footers, sort ranks
│ ├── scoreboard.yml ← Lobby and match scoreboards
│ └── animations.yml ← Scrolling tab animations
├── menus/ ← GUI layouts (duel, queue, FFA, party, kit editor, custom kits, …)
├── items/ ← Lobby, party, and queue hotbar items
├── data/
│ ├── order.yml ← Kit/FFA GUI order and display names
│ ├── arenas.db ← Arena data (SQLite)
│ ├── kits.db ← Kit data (SQLite)
│ ├── stats.db ← Player stats (SQLite)
│ ├── customkits/ ← Saved player custom kit profiles
│ └── playerdata/ ← Per-player custom kit slot data
├── data/complex-door-data/ ← Per-arena gate definitions
├── categories.json ← Custom kit category definitions
└── schematics/
└── <ArenaName>.schem ← FAWE arena snapshots
Step 1: Set the Lobby Spawn
Stand at the exact coordinates and facing direction where you want players to land, and execute:
/shyamduels setlobby
This writes your location to the config.yml file. All players return here when running /leavefight, spectating, or after a duel concludes.
Step 2: Create a Kit
A kit is a snapshot of your inventory items, hotbar layout, armor pieces, offhand slot, and active potion effects. Fill your inventory with the desired items, wear the appropriate armor, and run:
/kit create NoDebuff
Hold the item you want to represent the kit in GUIs, and run:
/kit seticon NoDebuff
You can update existing kits at any time:
/kit setinv NoDebuff # Updates the items to match your current inventory contents
/kit seticon NoDebuff # Replaces the GUI display item with the item in your hand
Step 3: Create an Arena
An arena is a registered region of blocks that is saved as a schematic and restored back after every match. You must select two opposite corners to outline the boundaries.
/arena create Arena1
Stand at the first corner and run:
/arena corner1 Arena1
Walk diagonally to the opposite corner, stand at that boundary, and run:
/arena corner2 Arena1
Set player spawn points (stand facing the desired match direction for each player):
/arena spawn1 Arena1
/arena spawn2 Arena1
Add a kit link to specify that this arena is compatible with the kit:
/arena addkit Arena1 NoDebuff
Arenas are only selectable for matchmaking if the queued kit has been linked to that specific arena.
Step 4: Test Matchmaking
Have two players execute the /queue command, select the NoDebuff kit, and wait. Once both players enter the queue, they are matched, shown a startup animation, and teleported to Arena1 with a brief countdown before the fight begins.