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.
Strict Boot Dependencies
All six requirements are listed under the hard dependency section in plugin.yml. If any of these are missing, the server will refuse to enable ShyamDuels.

Installation Steps

  1. Download and install FastAsyncWorldEdit, LuckPerms, PlaceholderAPI, and packetevents into your server's plugins/ folder.
  2. Place ShyamDuels.jar inside the plugins/ folder.
  3. Perform a full server restart (do not use /reload, as reloads can cause conflict hooks with FAWE packet wrappers).
  4. 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.

Lobby Configuration is Crucial
If the lobby location is not configured, the plugin defaults back to the spawn location of the primary world, which may not correspond to your server lobby spawn.

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
FAWE Schematic Auto-Save
When both corners are set, the plugin immediately requests FAWE to save the region as a schematic file. If you make structural edits to the arena, you must execute the corner commands again to update the saved schematic file.

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.