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.
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.
Free version: KitLayoutsLite
KitLayoutsLite is free to download and run on your servers. It does the basics of KitLayouts; the paid plugin adds the rest.
In KitLayoutsLite: up to 3 kits saved from the admin's inventory (items, armour, off hand, all item data kept), per-player layout editor (chest, drag and drop, items cannot leave or enter), layouts in SQLite, stale layouts reset when a kit changes, chest kit selector with ready / cooldown / locked state, cooldown, permission, icon and display name per kit, kitlayouts.bypass, clear-inventory and armour options.
Only in KitLayouts: unlimited kits, auto kit on join and on respawn (FFA / KitPvP), heal on kit, /kitlayouts give, the dialog kit screen and the dialog admin manage screen.
Moving up: copy plugins/KitLayoutsLite/kits.yml and layouts.db into plugins/KitLayouts/. Lite also switches itself off when the full plugin is installed. Kits beyond 3 in a Lite kits.yml are skipped with a console warning and kept in the file, not deleted.
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
- Create a kit from your inventory with one command
- Every player saves their own slot layout per kit
- Cooldowns and permissions per kit
- Players pick kits from a menu or with /kit
- SQLite built in, no database to set up
What makes it different
- Layouts are saved per player and per kit: the same kit arrives in a different slot order for every player who arranged it
- Cooldowns are stored in the database, so a relog or a restart never resets a daily kit
- Locked kits can be looked at read-only, so players see what a rank gives before they buy it
Works with
- Paper or Purpur 1.21.11 (or newer 1.21.x), Java 21+
- No other plugins required. A permissions plugin (LuckPerms) if you want per-kit permissions.
- No DRM, no licence key and no licence server; the code is not obfuscated
What you get
- New in v1.3.0: Cooldowns that stick: saved in the database, so logging out or a restart never resets a daily kit, shown as "23h 59m 48s"
- New in v1.3.0: Kit preview: /kit preview or shift-click shows a kit read-only, and locked kits get a "Look inside" button so players see what a rank gives
- New in v1.3.0: PlaceholderAPI (optional): cooldown, ready and access placeholders per kit
- Create a kit from whatever you are holding and wearing: items, armour, offhand, enchantments, names, potions, custom model data, all kept exactly
- Per-player layout editor in a chest menu that mirrors the real inventory (three rows plus hotbar); items cannot leave or enter, only move
- Layouts saved per player per kit; a kit that the admin re-saves with different items resets old layouts automatically
- Kit selector menu with icons, ready / cooldown / locked state on each kit; left-click equips, right-click edits
- Cooldown per kit, permission per kit, display name and icon per kit, all from commands
- Auto kit on join and on respawn for FFA and KitPvP servers
- Optional heal on kit, optional keep-inventory (do not clear before giving)
- Give a kit to somebody else as an admin
- SQLite for layouts, kits.yml for kits, nothing to install
- MiniMessage everywhere, every menu title, lore and message editable
Preview a kit before taking it.
The kit screen
The kit screen: take a kit or arrange it, with each kit's layout state.
- /kit opens a real Minecraft dialog window listing every kit with its state: ready, locked, or the seconds left, and whether the player is on their own layout or the default one
- One button takes the kit, the other opens the layout editor for it
- Admins get a manage screen: the display name, the permission and the icon in fields, the cooldown on steppers, a button that replaces the kit with what you are carrying, and one that resets everybody's layout
- The layout editor stays a chest, because arranging 36 slots means dragging items, not clicking buttons
selector.style: chestbrings back the old icon menu if you prefer it
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
- ArenaBots: PvP training bots that fight back
- TierTags: tier lists and tags in tab and above heads
- SentinelAC: a lightweight anticheat with clear staff alerts
- Complete Collection: all my published plugins in one purchase, 40% off
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
- Download
KitLayouts.jarfrom BuiltByBit. There is no licence key to enter. - Stop the server and put the jar into the
pluginsfolder. - Start the server. The plugin creates
plugins/KitLayouts/config.ymlwith the defaults shown under Configuration. - Edit
config.ymlto suit your server. - 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.
- Drop KitLayouts.jar into /plugins and restart.
- Put a kit in your inventory (armour on, offhand set) and run /kitlayouts create <name>.
- Optional: /kitlayouts icon, display, cooldown, permission.
- 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.
| Command | Aliases | Usage | Description | Permission |
|---|---|---|---|---|
/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|reload | Manage 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.
| Node | Default | Description | Children |
|---|---|---|---|
kitlayouts.admin | operators | Create and manage kits, give kits, clear cooldowns, reload. | none |
kitlayouts.bypass | operators | Ignore kit cooldowns and kit permissions. | none |
The store page also describes these groups and patterns:
<your own node>: Whatever you set with /kitlayouts permission <kit> <node>
/kit itself needs no permission.
Placeholders
Registered with PlaceholderAPI under the identifier kitlayouts (KitPlaceholders.java). PlaceholderAPI must be installed for these to work.
| Placeholder | Returns |
|---|---|
%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:
| Key | Default | Comment above it |
|---|---|---|
apply | section, 3 keys | none |
auto-kit | section, 2 keys | none |
selector | section, 9 keys | none |
editor | section, 4 keys | none |
preview | section, 4 keys | 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. |
theme | section, 11 keys | 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... |
messages | section, 79 keys | none |
review-reminder | true | 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. |
# 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: trueConfig 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.
Links
- BuiltByBit: KitLayouts
- Support Discord: discord.gg/KG4ubAZEuw
- All plugins on BuiltByBit: the collection
- More plugins: all plugins
- Custom work: commissions
Support
Questions, bugs or ideas: the active support Discord or the discussion tab on this page. When something breaks, include your server version and the error from the console.
Full setup guide, commands, permissions and config reference: documentation.