Frostyh Plugins

Plugins / KitLayouts

KitLayouts

Kits players arrange themselves: per-player layout editor, cooldowns, permissions, respawn kits.

Get KitLayouts

$8.99 on BuiltByBit, list price on 16 October 2026. BuiltByBit sales can lower it, the listing shows the current price.

Buy on BuiltByBit

Also in Complete Collection: Every Plugin, PvP Server Bundle.

Try it live

KitLayouts runs on a public demo server, set up so you can use it yourself. Join, try it, then decide.

Address: try.zeropvp.xyz:25570 (Java Edition 1.21.11)

In Minecraft: Multiplayer, Add Server, paste the address, Join. Type /demo go kitlayouts to land at its booth, or right-click the compass and pick it. The world resets every night.

Overview

KitLayouts

Kits that arrive exactly the way each player wants them, every single time

Fill your inventory, run /kitlayouts create diamond, and the kit exists. Players pick it from a menu or with /kit diamond. If they want the sword in slot 2 and the pearls in slot 8, they open the editor, drag things where their hands expect them and press Save. From then on that is how the kit arrives for them, every time. Your kit, their layout.

Players drag a kit into their own order and save the layout.

Latest version
1.2.0
Server
Paper or Purpur, Java 21
BuiltByBit
KitLayouts on BuiltByBit
What changed in 1.2.0
  • Kit cooldowns are now saved in layouts.db. A player can no longer reset a cooldown by logging out and back in, and a daily kit stays used across server restarts.
  • Cooldowns read as time now ("23h 59m 48s") instead of a long number of seconds. Messages accept {time} next to {seconds}.
  • New /kit preview <kit>: a read-only chest with the kit's items, armour and offhand, in the player's own layout when they saved one. Shift-click a kit in the chest selector to preview it.
  • Kits a player cannot take yet get a "Look inside" button on the kit screen, so players can see what a rank would give them. Set preview.locked-kits to false to turn this off.
  • New /kitlayouts clearcooldown <player> [kit] for admins (permission kitlayouts.admin). Works for offline players too.
  • PlaceholderAPI support (optional): %kitlayouts_cooldown_<kit>%, %kitlayouts_cooldown_time_<kit>%, %kitlayouts_ready_<kit>%, %kitlayouts_access_<kit>%, %kitlayouts_layout_<kit>%, %kitlayouts_kits%, %kitlayouts_kits_total%.
  • An existing config.yml keeps its old cooldown texts ({seconds}s) and selector lore. To get the new wording and the "Shift-click to preview" line, change them by hand or delete config.yml and let it regenerate. Everything new works without that.

Features

Why server owners pick it

What makes it different

Works with

What you get

Preview a kit before taking it.

The kit screen

The kit screen: take a kit or arrange it, with each kit's layout state.

FAQ

Which servers does it run on?

Paper or Purpur 1.21.11 or a newer 1.21.x, with Java 21.

Do I need other plugins?

No. SQLite is built in.

Is there DRM or a licence key?

No. There is nothing to activate and no licence server to reach, and the code is not obfuscated.

How long does setup take?

Drop the jar into /plugins and restart. The setup guide above has 4 short steps.

Can I try it before I buy?

Yes. This page has a test server with the plugin installed.

Where do I get help?

In the active support Discord, in the discussion tab on this page, or in the documentation.

Can players see what a rank kit contains before buying the rank?

Yes. Kits a player cannot take yet get a "Look inside" button that shows the items read-only.

Updates

Released on September 15, 2026 and updated 5 times since. The latest version is v1.3.0 (October 16, 2026). Every update is free, new Minecraft versions included.

Also by Frostyh

If this plugin helps your server, a short review on this page would mean a lot. Thank you!

Installation

Requirements

Server software
Paper, or a Paper fork such as Purpur. Spigot and CraftBukkit are not supported: the plugin uses Paper-only APIs.
Minecraft version
plugin.yml api-version 1.21; built against Paper API 1.21.11
Java
21 or newer
Required plugins
none
Optional plugins
PlaceholderAPI
Libraries
org.xerial:sqlite-jdbc:3.53.2.1, downloaded by the server at startup (plugin.yml libraries)

Steps

  1. Download KitLayouts.jar from BuiltByBit. There is no licence key to enter.
  2. Stop the server and put the jar into the plugins folder.
  3. Start the server. The plugin creates plugins/KitLayouts/config.yml with the defaults shown under Configuration.
  4. Edit config.yml to suit your server.
  5. Apply the changes with /kitlayouts reload (Reload config and kits), or restart the server.

Setup guide

Staff set a kit's name, permission, icon and cooldown in game.

  1. Drop KitLayouts.jar into /plugins and restart.
  2. Put a kit in your inventory (armour on, offhand set) and run /kitlayouts create <name>.
  3. Optional: /kitlayouts icon, display, cooldown, permission.
  4. Players run /kit. Right-click a kit to arrange it.

FFA / KitPvP: set auto-kit.on-respawn to your main kit and apply.heal to true. Everybody respawns geared, in their own layout, without a menu in the way.

Duel servers: use it for the lobby or a practice world; players can also use it to learn a layout before ranked games. Cooldowns keep kit spam down.

SMP: a starter kit on join (auto-kit.on-join), a daily kit with a 86400 second cooldown, rank kits behind permissions (rank.vip and so on). Set clear-inventory to false so kits are added to what players already carry.

Commands

From plugin.yml. "Not set" in the permission column means plugin.yml attaches no permission to the command itself; the nodes the plugin checks are listed under Permissions.

CommandAliasesUsageDescriptionPermission
/kit/kits/kit [name|edit <name>|preview <name>|reset <name>|list]Pick a kit, preview it, or edit your layout of one.not set
/kitlayouts/kl/kitlayouts create|delete|list|give|icon|display|cooldown|permission|clearcooldown|reloadManage kits.kitlayouts.admin

Subcommands in detail

Players:

/kit                      Open the kit selector.
/kit <name>               Equip a kit.
/kit edit <name>          Open the layout editor for a kit.
/kit reset <name>         Go back to the default layout of a kit.
/kit list                 Kits you can use.
/kit preview <kit>                Look inside a kit without taking it.
/kitlayouts clearcooldown <player> [kit]   (admin) Reset a cooldown, offline players too.

Admins:

/kitlayouts create <name>               Save your current inventory as a kit (also updates an existing one).
/kitlayouts delete <name>               Delete a kit and every layout of it.
/kitlayouts list                        All kits with their cooldowns.
/kitlayouts give <player> <kit>         Give a kit to a player, ignoring cooldown.
/kitlayouts icon <kit> [material]       Set the selector icon (defaults to the item in your hand).
/kitlayouts display <kit> <name...>     Set the display name (MiniMessage allowed).
/kitlayouts cooldown <kit> <seconds>    Set the cooldown, 0 for none.
/kitlayouts permission <kit> <node|none>   Require a permission for the kit.
/kitlayouts reload                      Reload config and kits.

Permissions

From plugin.yml.

NodeDefaultDescriptionChildren
kitlayouts.adminoperatorsCreate and manage kits, give kits, clear cooldowns, reload.none
kitlayouts.bypassoperatorsIgnore kit cooldowns and kit permissions.none

The store page also describes these groups and patterns:

/kit itself needs no permission.

Placeholders

Registered with PlaceholderAPI under the identifier kitlayouts (KitPlaceholders.java). PlaceholderAPI must be installed for these to work.

PlaceholderReturns
%kitlayouts_cooldown_<kit>%seconds until the kit can be taken again, 0 when it can
%kitlayouts_cooldown_time_<kit>%the same as "1h 5m 3s", or the placeholder-ready text
%kitlayouts_ready_<kit>%true when the player may take the kit right now
%kitlayouts_access_<kit>%true when the player has the kit's permission
%kitlayouts_layout_<kit>%true when the player saved their own layout of the kit
%kitlayouts_kits%how many kits the player may use
%kitlayouts_kits_total%how many kits exist
%kitlayouts_cooldown_time_%
%kitlayouts_cooldown_%
%kitlayouts_ready_%
%kitlayouts_access_%

Configuration reference

The default files as they ship in the jar, with their comments. The plugin writes them to plugins/KitLayouts/ on first start.

config.yml

Top-level keys:

KeyDefaultComment above it
applysection, 3 keysnone
auto-kitsection, 2 keysnone
selectorsection, 9 keysnone
editorsection, 4 keysnone
previewsection, 4 keysThe kit preview: /kit preview <kit>, shift-click in the chest selector, or the Preview button that a locked kit gets on the kit screen. Shows the items, the armour and the offhand; nothing can be taken out.
themesection, 11 keysEvery message below is written against these names, not against hex codes: <accent>Open</accent> rather than <#4ad07b>Open</#4ad07b>. Change a colour here and it changes on every screen at once. Ordinary MiniMessage still works, so <gradient:#a:#b> and...
messagessection, 79 keysnone
review-remindertrueOne thank-you line with the BuiltByBit review link: once in the console after install and once in chat for the first operator who joins. It never repeats and sends nothing anywhere. false turns it off.
plugins/KitLayouts/config.yml
# KitLayouts - kits that players arrange themselves.
#
# 1. Put a kit in your own inventory, then /kitlayouts create <name>.
# 2. Players run /kit to pick one, or /kit <name>. Right-click a kit in the menu (or /kit edit <name>)
#    to open the layout editor; drag items where you want them and press Save.
# 3. From then on that player gets the kit in their own layout, every time.

apply:
  clear-inventory: true     # empty the inventory before giving a kit
  armor: true               # also equip the kit's armour and offhand
  heal: false               # full health and food when a kit is applied (FFA servers like this)

auto-kit:
  on-join: ""               # kit name, or empty. Good for lobbies with a fixed loadout.
  on-respawn: ""            # kit name, or empty. FFA / KitPvP: everybody respawns with this kit.

selector:
  # dialog = the kit screen Minecraft draws itself, chest = the old chest menu with icons.
  # The layout editor is a chest either way: arranging 36 slots means dragging items.
  style: dialog
  title: "<dark_green>Kits</dark_green>"
  name: "<white>{kit}</white>"
  lore:
    - "<gray>Left-click to equip</gray>"
    - "<gray>Right-click to edit layout</gray>"
    - "<gray>Shift-click to preview</gray>"
    - ""
    - "{status}"
  ready: "<green>Ready</green>"
  # {time} reads "1h 5m 3s"; {seconds} is the plain number.
  on-cooldown: "<yellow>Ready in {time}</yellow>"
  locked: "<red>Locked</red>"
  hide-locked: false
  right-click-edits: true

editor:
  title: "<dark_green>Editing {kit}</dark_green>"
  save: { name: "<green>Save layout</green>", lore: ["<gray>Keep this arrangement for {kit}.</gray>"] }
  reset: { name: "<yellow>Default layout</yellow>", lore: ["<gray>Back to how the kit was made.</gray>"] }
  cancel: { name: "<red>Cancel</red>", lore: ["<gray>Close without saving.</gray>"] }

# The kit preview: /kit preview <kit>, shift-click in the chest selector, or the Preview button that a
# locked kit gets on the kit screen. Shows the items, the armour and the offhand; nothing can be taken out.
preview:
  # true lets players look inside kits they cannot take yet, so they see what a rank would give them.
  locked-kits: true
  title: "<dark_green>Preview: {kit}</dark_green>"
  take: { name: "<green>Take this kit</green>", lore: ["<gray>Equip {kit} now.</gray>"] }
  close: { name: "<red>Close</red>", lore: [] }

# ------------------------------------------------------------------------------------------------
# THEME
# ------------------------------------------------------------------------------------------------
# Every message below is written against these names, not against hex codes: <accent>Open</accent>
# rather than <#4ad07b>Open</#4ad07b>. Change a colour here and it changes on every screen at
# once. Ordinary MiniMessage still works, so <gradient:#a:#b> and <#ff0000> are fine anywhere.
theme:
  accent: "#4ad07b"     # your colour: headings and anything the player is meant to click
  accent2: "#9be5b6"    # a lighter accent, for a second level of emphasis
  title: "#f4f7ff"      # screen titles
  text: "#c2ccdd"       # ordinary prose
  muted: "#6b7a94"      # hints, separators, anything the eye should skip
  value: "#ffffff"      # the numbers and names the player opened the screen to read
  good: "#57e08a"
  warn: "#ffc857"
  bad: "#ff6b6b"
  small-caps: false     # ᴇхᴀᴍᴘʟᴇ - a garnish; whole menus in it read badly
  # Real Minecraft item pictures beside the buttons and in the chest screens. Drawn from the
  # client's own textures, so there is nothing to install and no resource pack: it needs a
  # 1.21.9 or newer client, and older ones simply see the buttons as words.
  item-icons: true

messages:
  prefix: "<dark_green><bold>Kits</bold></dark_green> <muted>»</muted> "
  applied: "<value>{kit}</value><text> equipped.</text>"
  cooldown: "<text>You can use </text><value>{kit}</value><text> again in </text><value>{time}</value><text>.</text>"
  no-kit-permission: "<bad>You do not have access to </bad><value>{kit}</value><bad>.</bad>"
  no-permission: "<bad>You cannot do that.</bad>"
  unknown-kit: "<bad>No kit called </bad><value>{kit}</value><bad>.</bad>"
  unknown-player: "<bad>Unknown player: </bad><value>{name}</value>"
  list: "<text>Kits: </text><value>{kits}</value>"
  no-kits: "<text>No kits yet. Admins: fill your inventory and run /kitlayouts create <name>.</text>"
  usage-edit: "<text>/kit edit <kit></text>"
  usage-reset: "<text>/kit reset <kit></text>"
  # /kit preview without a kit name.
  usage-preview: "<text>/kit preview <kit></text>"
  layout-saved: "<text>Layout for </text><value>{kit}</value><text> saved.</text>"
  layout-reset: "<text>Your layout for </text><value>{kit}</value><text> is back to default.</text>"
  layout-reset-preview: "<text>Default layout loaded. Press Save to keep it.</text>"
  layout-none: "<text>You have no custom layout for </text><value>{kit}</value><text>.</text>"
  editor-closed: "<text>Editor closed, nothing saved.</text>"
  editor-cursor: "<text>Put the item you are holding down first.</text>"
  admin-help: "<text>/kitlayouts create|delete|list|give|icon|display|cooldown|permission|clearcooldown|reload</text>"
  usage-create: "<text>/kitlayouts create <name>  (saves your current inventory)</text>"
  usage-delete: "<text>/kitlayouts delete <kit></text>"
  usage-give: "<text>/kitlayouts give <player> <kit></text>"
  usage-icon: "<text>/kitlayouts icon <kit> [material]  (defaults to the item in your hand)</text>"
  usage-display: "<text>/kitlayouts display <kit> <name...></text>"
  usage-cooldown: "<text>/kitlayouts cooldown <kit> <seconds></text>"
  usage-permission: "<text>/kitlayouts permission <kit> <node|none></text>"
  bad-name: "<bad>Kit names: letters, numbers, - and _, up to 24 characters.</bad>"
  created: "<text>Kit </text><value>{kit}</value><text> created from your inventory.</text>"
  updated: "<text>Kit </text><value>{kit}</value><text> updated. Player layouts for it were reset.</text>"
  deleted: "<text>Kit </text><value>{kit}</value><text> deleted.</text>"
  gave: "<text>Gave </text><value>{kit}</value><text> to </text><value>{player}</value><text>.</text>"
  icon-set: "<text>Icon of </text><value>{kit}</value><text>: </text><value>{value}</value>"
  display-set: "<text>Display name of </text><value>{kit}</value><text>: </text><value>{value}</value>"
  cooldown-set: "<text>Cooldown of </text><value>{kit}</value><text>: </text><value>{value}s</value>"
  permission-set: "<text>Permission of </text><value>{kit}</value><text>: </text><value>{value}</value>"
  reloaded: "<value>Config and kits reloaded.</value>"
  # /kitlayouts clearcooldown <player> [kit]. Cooldowns are kept in layouts.db, so they survive relogs and restarts.
  usage-clearcooldown: "<text>/kitlayouts clearcooldown <player> [kit]  (every kit when no kit is given)</text>"
  cooldown-cleared: "<text>Cleared </text><value>{count}</value><text> running cooldown(s) of </text><value>{player}</value><text> for </text><value>{kit}</value><text>.</text>"
  all-kits: "every kit"
  # %kitlayouts_cooldown_time_<kit>% shows this when the kit is ready.
  placeholder-ready: "Ready"

  # The kit screens. Every line here is a screen title, a button label or a tooltip.
  menu-title: "<value>Kits</value>"
  menu-close: "<white><icon:close></white><text>Close</text>"
  menu-back: "<white><icon:back></white><text>Back</text>"
  menu-back-tip: "<text>Back to the screen before.</text>"
  menu-everyone: "everyone"
  menu-kit-line: "<value>{kit}</value><text> · {state} · {layout}</text>"
  menu-layout-own: "<accent2>your layout</accent2>"
  menu-layout-default: "<text>default layout</text>"
  menu-take: "{icon}<value>Take {kit}</value>"
  menu-take-tip: "<text>Equip {kit} now.</text>"
  menu-edit: "{icon}<value>Arrange {kit}</value>"
  menu-edit-tip: "<text>Open the layout editor and drag the items where you want them.</text>"
  # Shown in place of Arrange on a kit the player cannot take yet (preview.locked-kits).
  menu-preview: "{icon}<value>Look inside {kit}</value>"
  menu-preview-tip: "<text>See every item of {kit} without taking it.</text>"
  menu-admin: "<white><icon:staff></white><dark_green>Manage kits</dark_green>"
  menu-admin-tip: "<text>Admins: names, icons, cooldowns and permissions.</text>"
  menu-admin-title: "<value>Manage kits</value>"
  menu-admin-empty: "<text>No kits yet. Fill your inventory and run /kitlayouts create <name>.</text>"
  menu-admin-line: "<value>{kit}</value><text> ({name}) · {cooldown}s · {permission}</text>"
  menu-admin-open: "<white><icon:staff></white><value>{kit}</value>"
  menu-admin-open-tip: "<text>Settings of {kit}.</text>"
  menu-kit-title: "<value>{kit}</value>"
  menu-kit-head: "<text>{kit}, saved as </text><value>{name}</value><text>, icon {icon}</text>"
  menu-kit-facts: "<text>Cooldown {cooldown}s · {permission}</text>"
  menu-field-display: "<text>Name players see</text>"
  menu-field-permission: "<text>Permission, empty for everyone</text>"
  menu-field-icon: "<text>Icon material</text>"
  menu-kit-save: "<white><icon:yes></white><good>Save these three</good>"
  menu-kit-save-tip: "<text>Write the name, the permission and the icon.</text>"
  menu-kit-cooldown: "<white><icon:kit></white>Cooldown"
  menu-kit-cooldown-tip: "<text>Seconds before the kit can be taken again.</text>"
  menu-kit-items: "<white><icon:kit></white><value>Take items from my inventory</value>"
  menu-kit-items-tip: "<text>Replace the kit with what you are carrying. Player layouts are reset.</text>"
  menu-kit-reset-layouts: "<white><icon:kit></white><bad>Reset everyone's layout</bad>"
  menu-kit-reset-layouts-tip: "<text>Every player goes back to the default arrangement.</text>"
  menu-layouts-reset: "<text>Layouts for </text><value>{kit}</value><text> reset.</text>"
  menu-bad-icon: "<bad>No material called </bad><value>{icon}</value><bad>.</bad>"
  step-up: "<value>{title} +15s</value> <muted>({value}s)</muted>"
  step-down: "<value>{title} -15s</value> <muted>({value}s)</muted>"

# One thank-you line with the BuiltByBit review link: once in the console after install and once
# in chat for the first operator who joins. It never repeats and sends nothing anywhere. false turns it off.
review-reminder: true

Config guide

The annotated summary from the store page. Where it and the default file above differ, the file is what the plugin ships.

apply:
  clear-inventory: true     empty the inventory before giving a kit
  armor: true               equip the kit's armour and offhand too
  heal: false               full health and food on every kit (FFA servers like this)

auto-kit:
  on-join: ""               kit name, or empty
  on-respawn: ""            kit name, or empty. FFA / KitPvP: everybody respawns with this.

selector:                   titles, lore lines, ready / cooldown / locked texts, hide-locked
editor:                     title and the three buttons (Save, Default layout, Cancel)
messages:                   everything the plugin says

FAQ

Which servers and versions does it run on?

It needs Paper or a Paper fork such as Purpur, because it uses Paper-only APIs (the dialog API for its menus, Adventure text components). Spigot and CraftBukkit are not supported. plugin.yml declares api-version 1.21, the jar is built against Paper API 1.21.11, and it needs Java 21 or newer.

Does it need other plugins?

No other plugin is required (plugin.yml has no hard dependencies). Optional: PlaceholderAPI (plugin.yml softdepend), used when present. The server downloads org.xerial:sqlite-jdbc:3.53.2.1 at startup, so it needs internet access on first start.

How do I apply config changes?

Edit plugins/KitLayouts/config.yml and run /kitlayouts reload (reload config and kits). A restart works too.

Does it run on Folia, or for Bedrock players?

Not tested on Folia, and plugin.yml does not declare folia-supported. Bedrock players (through Geyser) have not been tested either.

What licence do I get?

The licence terms are the BuiltByBit EULA shown on the listing. There is no licence key to enter, and the plugin never contacts a licence server.