Kit Setup

How to create, update, and manage kits that players use during matches.

Creating a Kit

  1. Equip your full layout: place the items in your inventory and hotbar, wear your armor, and assign offhand items.
  2. Run the command: /kit create KitName to save your current inventory configuration.
  3. (Optional) Hold the item you want to represent the kit in selection GUIs and run: /kit seticon KitName
Kit Names are Case-Sensitive
Note that NoDebuff and nodebuff are handled as two distinct kit profiles.

Updating an Existing Kit

To overwrite a kit's item slots, arrange the new layout in your inventory and execute:

/kit setinv KitName

To modify only the GUI icon representation:

# Hold the new icon item in your main hand, then:
/kit seticon KitName

Build Mode (Kit and Arena Must Match)

Build mode marks whether a kit is used for block-building matches. Set it with:

/kit build <name> <true|false>

This must match the linked arena's build mode (/arena build). If they differ, matchmaking ignores the arena and players may see No arenas available for this kit.

Keep arena and kit build mode in sync
  • Build kit + build arena: /kit build Bridge true and /arena build BridgeArena true
  • Non-build kit + non-build arena: /kit build NoDebuff false and /arena build Arena1 false
Use /kit info <name> to check the kit's build mode. Setting /kit build <name> false also clears the block whitelist.

Build-Compatible Kits (Block Whitelist)

For build kits, you can optionally restrict which block types players may place and break:

/kit build Bridge true
# Hold the whitelist block (e.g. sandstone, glass) and run:
/kit allowblock Bridge
# Repeat for each block type you wish to whitelist

/kit allowblock also enables build mode automatically. If the whitelist is empty, any block can be placed in a build-enabled arena. If blocks are whitelisted, only those types are allowed during combat.

Fire and TNT Rules
A build whitelist that includes any of FLINT_AND_STEEL, FIRE_CHARGE, FIRE, SOUL_FIRE, or TNT also permits ignition. This applies to both duels and FFA build arenas.

Kit Auto-Ignition (TNT & Creepers)

Enable automatic ignition for kit matches using:

/kit autoignite <name> [true|false]

When auto-ignite is enabled for a kit:

No Fall Damage & Crafting Settings

Kit Editor GUI (For Players)

Players can customize and rearrange item placements within their personal copy of a kit layout. This does not alter the base kit template generated by the administrator. Open the layout editor using:

/kiteditor          # Opens the kit selector GUI
/kiteditor NoDebuff # Directly launches the editor workspace for NoDebuff

This editor provides a drag-and-drop workspace where players can save custom layouts for matchmaking queues.

VIP Preferences inside the Kit Editor

All virtual practice features can be inherited by granting the parent permission node shyamduels.vip.

Custom Kits Builder

The Custom Kits builder system enables players to assemble personalized kits from category selections. It matches players using base configs defined in the configuration files.

Exhaustive Kit Setup Command Reference

Below is a complete reference guide of commands for registering, editing, and deleting kit configurations (requires shyamduels.admin):

Command Syntax / Parameters Functional Behavior
/kit create /kit create <name> Saves your current inventory, armor slots, offhand, and active effects as a new kit profile.
/kit delete /kit delete <name> Deletes the kit profile, clears linked arenas, and removes player customized layouts.
/kit setinv /kit setinv <name> Overwrites the kit's inventory items and armor layout to match your current inventory contents.
/kit seticon /kit seticon <name> Configures the GUI selection icon to your held item.
/kit allowblock /kit allowblock <name> Whitelists your held block material and enables build mode for the kit.
/kit removeblock /kit removeblock <name> Removes your held block material from the build whitelist. Disables build mode when the list is empty.
/kit build /kit build <name> <true/false> Enables or disables build mode for the kit. Must match the linked arena (/arena build). false clears the block whitelist.
/kit setdisplayname /kit setdisplayname <name> <displayname> Configures the GUI display name of the kit (supports Kyori MiniMessage formatting).
/kit setdescription /kit setdescription <name> <description> Sets the description lines displayed when hovering over the kit in selector GUIs.
/kit list /kit list Lists all registered kit configurations.
/kit info /kit info <name> Displays details about the kit, including inventory slots and whitelisted block list.
/kit matchstartpots enable|disable|scan|list <name> Controls match-start auto-potion scanning for a kit. Automatically splashes kit buffs (Speed II, Fire Resistance, etc.) on countdown start without consuming items from player inventory (see match-start-potions.take-from-inventory in config.yml).
/kit queuerounds /kit queuerounds <name> <rounds> Sets default round count when this kit is queued.
/kit kitroom /kit kitroom <name> Opens the kit room editor for practice loadout testing.
/kit give /kit give <player> <name> Applies a kit to a player's inventory.
/kit load /kit load <name> Loads the kit into your inventory for editing.
/kit deleteeditedkits /kit deleteeditedkits <name> Clears all player-edited layouts saved for this kit.
/kit setsaturation /kit setsaturation <name> <value> Sets food saturation applied when the kit is given.
/kit autoignite /kit autoignite <name> [true|false] Toggles or sets automatic TNT priming and Creeper ignition for matches using this kit.
/kit nofalldamage /kit nofalldamage <name> [true|false] Toggles or sets fall damage immunity for players fighting with this kit.
/kit crafttable /kit crafttable <name> Toggles crafting table usability during matches using this kit.
Kit Deletion Warning
Deleting a kit clears all customized player files associated with it from the database and removes all linked arena entries.

Kit Categories System

An enterprise-grade hierarchical categorization and auto-pagination system designed to declutter large kit rosters, streamline matchmaking navigation, and provide a polished user experience across all kit-related menus.

1. Architectural Overview & Design Philosophy

Modern competitive PvP servers often feature dozens of distinct game modes and loadouts (such as NoDebuff, Debuff, Gapple, Combo, Sumo, BuildUHC, Boxing, FinalUHC, BedFight, Bridge, and Bow). Presenting 30+ kits in a single unorganized menu overwhelms players and impairs navigation speed.

The Kit Category System introduces a structured Two-Tier Hierarchy:

Zero-Breaking Change Guarantee (Empty by Default)
By default, plugins/ShyamDuels/categories.yml starts completely empty (categories: {}). When no categories are configured, all GUIs throughout the plugin automatically render in standard 1-level mode with zero overhead or configuration changes required.

2. Comprehensive GUI Integrations

The Category System is deeply integrated across all player-facing and administrative interfaces in ShyamDuels:

Interface Trigger Command Category Behavior & Features
Matchmaking Queue GUI /queue, /duels
  • Root category icons display dynamic real-time player tallies (sum of all players queued and playing in that category).
  • Clicking a category opens the dedicated Category Queue GUI.
  • Individual kit slots retain real-time status indicators (AVAILABLE, QUEUED, PRIMARY) and support 1-click queue entry/exit.
Direct Duel Kit Selection /duel <player>, /1v1
  • Preserves the challenged opponent's name, target UUID, and selected match rounds across all category drill-downs.
  • Interactive Skeleton Skull round counter button (Left-Click: +1, Right-Click: -1, Shift-Click: ±5) remains interactive in both root and sub-menus.
  • Clicking any kit immediately dispatches the duel invitation with the active round count.
Kit Editor Kit Picker /kiteditor, /editor
  • Category items are registered with custom PersistentDataContainer (PDC) identifiers.
  • Clicking a category drills into that category's kit picker view.
  • Supports the Custom Kit Creator shortcut item and returns to the root picker upon clicking ◀ BACK.
Party Duel & Battle Selection /party duel, /party vs
  • Categorizes kit selection for Party vs Party, Party FFA, and Party Split team matches.
  • Maintains party ownership verification and Custom Kit integration.

Which Sub-GUI Opens & Where to Edit Its Layout

When a player clicks a category item, a dedicated sub-menu opens displaying the kits linked to that category. You can customize the sub-menu layout either globally via the menu YAML files or per-category directly inside each category's own YAML file:

Menu Trigger Sub-GUI Opened on Category Click Global Layout File Per-Category Customization File
/queue Category Queue Sub-Menu plugins/ShyamDuels/menus/queue-kit.yml plugins/ShyamDuels/categories/<category>.yml
/duel <player> Category Duel Sub-Menu plugins/ShyamDuels/menus/duel.yml plugins/ShyamDuels/categories/<category>.yml
/kiteditor Category Kit Picker plugins/ShyamDuels/menus/kiteditor.yml plugins/ShyamDuels/categories/<category>.yml
/party duel Party Category Selection plugins/ShyamDuels/menus/public-kits.yml plugins/ShyamDuels/categories/<category>.yml
Category Display & Details Category Icons & Details - plugins/ShyamDuels/categories/<category>.yml
Per-Category YAML System (Maximum Flexibility)
Every category has its own dedicated file (e.g. plugins/ShyamDuels/categories/potpvp.yml). You can customize the icon, title, lore, linked kits, and optionally specify unique sub-menu settings (custom title, custom GUI size, custom glass border color, and custom slots) for that specific category!

How to Toggle Between Global and Per-Category Layout

You can easily switch any category between the Global Default Layout (configured in menus/queue-kit.yml and menus/duel.yml) and a Per-Category Custom Layout in two ways:

Method 1: The sub-menu.enabled Toggle (Recommended)

Inside plugins/ShyamDuels/categories/<category_id>.yml, use the enabled boolean:

A. To use the Global Default Layout:

yaml# Global Mode: Inherits global theme from menus/queue-kit.yml
sub-menu:
  enabled: false

B. To use a Custom Per-Category Layout:

yaml# Per-Category Mode: Activates unique design overrides for this category
sub-menu:
  enabled: true
  title: "<gradient:#FF1D54:#FF7B00>PotPvP Queue</gradient> &8| &7<mode>"
  size: 54
  border: RED_STAINED_GLASS_PANE
  kit-slots: [10, 11, 12, 13, 14, 15, 16]

Method 2: Omit or Include the sub-menu: Section

Instant Hot-Reload
After editing any category YAML file, apply changes live with: /kit category reload

3. Auto-Pagination Engine

Both root menus and category sub-menus are powered by an intelligent, mathematical pagination engine (GuiPagination):

4. Hierarchical Depth & Sub-Category Support

A frequent question among server administrators is whether categories can contain sub-categories:

5. Step-by-Step: Creating & Designing Category UI

Follow these steps to create, style, and populate your kit categories with custom icons, colors, and live counter lores:

  1. Create the Category:
    Execute the creation command specifying a unique identifier key and initial display name:
    /kit category create potpvp &#FF5555&lPotPvP &7Kits
  2. Set the Category GUI Icon:
    Hold any item in your main hand (including Nexo 3D custom items, items with CustomModelData, or custom heads) and execute:
    /kit category seticon potpvp
  3. Style the Display Name (Gradients & Hex Colors):
    You can update the category title at any time using MiniMessage tags or Hex codes:
    /kit category setname potpvp <gradient:#FF1D54:#FF7B00><b>PotPvP Modes</b></gradient>
  4. Link Kits to the Category:
    Add existing registered kits into this category:
    /kit category addkit potpvp NoDebuff
    /kit category addkit potpvp Debuff
    /kit category addkit potpvp Gapple
  5. Customize Lore & UI Appearance in categories.yml:
    Open plugins/ShyamDuels/categories.yml to fine-tune lore lines, add live counter placeholders, and specify fixed GUI slots:
    yamlcategories:
      potpvp:
        display-name: "<gradient:#FF1D54:#FF7B00><b>PotPvP Modes</b></gradient>"
        icon:
          material: SPLASH_POTION
          custom-model-data: 1001
          # nexo: "potpvp_icon"
        slot: 11 # Specific slot in GUI (or -1 for automatic placement)
        lore:
          - "&7Competitive potion combat modes."
          - ""
          - "&fKits Included: &e<kits_count>"
          - "&fQueued: &a<queued> &7| &fPlaying: &b<playing>"
          - ""
          - "&eClick to browse kits!"
        kits:
          - "nodebuff"
          - "debuff"
          - "gapple"
  6. Reload and Verify:
    Apply configuration changes instantly in-game without rebooting:
    /kit category reload
    Open /queue or /duel <player> to test your new category layout.

5. How Kit and Category Ordering Works (Replacing data/order.yml)

You can easily control how normal kits, categories, and glass panes look in every GUI using clean YAML files:

What You Want to Do How to Configure It Example
Set Category Slot in Main Menus Set slot: <number> in categories/<id>.yml or use /kit category setslot. Use -1 for automatic order. /kit category setslot potpvp 11
Order Kits Inside a Category The list order under kits: inside categories/<id>.yml directly controls the slot order inside the sub-menu.
yamlkits:
  - "NoDebuff" # 1st kit
  - "Debuff"   # 2nd kit
  - "Gapple"   # 3rd kit
Normal (Uncategorized) Kits (Hybrid Mode) Kits not assigned to any category appear directly in the main menu alongside category folders. Clicking a normal kit starts the match immediately without opening a sub-menu. Main Menu: [PotPvP Category] [Sumo (Normal Kit)]
Alternating Slots (Kit → Glass Pane → Kit) In menus/queue-kit.yml (or in category sub-menu.kit-slots), list only alternate slot numbers. Extra slots will stay as glass panes!
yamlkit-slots: [10, 12, 14, 16]
# Slots 11, 13, 15 will have glass panes!
1-Click Migration from data/order.yml Run /kit category importorder <id> [name]. It reads your old order from data/order.yml and creates a category with that exact kit order. /kit category importorder ranked Ranked Kits

6. In-Game Admin Command Reference

All category administration is managed under the base command /kit category (or aliases /kits category, /shyamkits category). All arguments feature intelligent context-aware tab completion:

Command Syntax Permission Description & Examples
/kit category create <id> <displayName> shyamduels.admin Creates a new category. Display names support MiniMessage tags, Hex codes (&#RRGGBB), and legacy color codes (&c).
Example: /kit category create potpvp &c&lPotPvP &7Kits
/kit category delete <category> shyamduels.admin Deletes the specified category. Any kits linked to the category are safely detached and return to uncategorized status without data loss.
Example: /kit category delete potpvp
/kit category setname <category> <displayName> shyamduels.admin Renames an existing category's formatted display title.
Example: /kit category setname potpvp <gradient:#FF1D54:#FF7B00><b>Ranked PotPvP</b></gradient>
/kit category seticon <category> shyamduels.admin Sets the category icon to the item you are holding in your hand (supports custom 3D models).
Example: Hold a potion and type /kit category seticon potpvp
/kit category setpermission <category> <perm|none> shyamduels.admin Sets a permission required for players to open this category in Queue, Duel, Kit Editor, and Party menus. Use none to remove permission requirement.
Example: /kit category setpermission potpvp shyamduels.category.potpvp
/kit category addkit <category> <kit> shyamduels.admin Adds a kit into a category.
Example: /kit category addkit potpvp NoDebuff
/kit category removekit <category> <kit> shyamduels.admin Removes a kit from a category.
Example: /kit category removekit potpvp NoDebuff
/kit category setslot <category> <slot> shyamduels.admin Pins a category to an exact slot in the main selection GUI (use -1 for auto placement).
Example: /kit category setslot potpvp 11
/kit category importorder <category> [display] shyamduels.admin Automatically migrates your existing kit order from data/order.yml into a new category file.
Example: /kit category importorder ranked Ranked Kits
/kit category list shyamduels.admin Shows all categories and their kits in chat.
/kit category reload shyamduels.admin Reloads all category files instantly without restarting server.
/kit category help shyamduels.admin Shows category command help in chat.

7. Per-Category Configuration File Structure (categories/<id>.yml)

Each category is saved in its own file under plugins/ShyamDuels/categories/<id>.yml. Below is an easy example configuration:

yaml# ==============================================================================
# Category Configuration: potpvp.yml
# Path: plugins/ShyamDuels/categories/potpvp.yml
# ==============================================================================

id: "potpvp"
display-name: "<gradient:#FF1D54:#FF7B00><b>PotPvP Modes</b></gradient>"
slot: 11 # Slot in main menu (-1 for auto placement)

# Optional Permission: Players need this permission to open this category (leave blank for everyone)
permission: "shyamduels.category.potpvp"

# Category Icon (supports Nexo 3D items, CustomModelData, or regular items):
icon:
  material: SPLASH_POTION
  custom-model-data: 1001
  # nexo: "potpvp_icon"
  # item-model: "minecraft:custom_potion"

# Lore shown on the category item in the menu:
lore:
  - "&7Competitive potion fighting modes."
  - ""
  - "&fKits: &e<kits_count>"
  - "&fQueued: &a<queued> &7| &fPlaying: &b<playing>"
  - ""
  - "&eClick to view kits!"

# List of kits inside this category:
kits:
  - "NoDebuff"
  - "Debuff"
  - "Gapple"

# Optional Custom Sub-Menu Design (leave out to use default menus/queue-kit.yml):
sub-menu:
  enabled: true
  title: "<gradient:#FF1D54:#FF7B00>PotPvP Queue</gradient> &8| &7<mode>"
  size: 54
  border: RED_STAINED_GLASS_PANE
  kit-slots:
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16

8. Supported Placeholders in Category Lore

The following dynamic placeholders are evaluated at runtime when category items are rendered in menus:

Placeholder Replacement Value Example Output
<category_name>, <name> The formatted display name of the category. PotPvP Kits
<category_id>, <id> The internal YAML identifier key of the category. potpvp
<kits_count>, <count> The total count of registered public kits in the category. 3
<queued> The live sum of all players queued across all kits in this category. 12
<playing> The live sum of all players actively in matches across all kits in this category. 28
<opponent> The opponent player's name (active in Duel Kit Selection). Player123
<rounds> The currently selected duel round count (active in Duel Kit Selection). 3