how to make a Minecraft kit plugin with Skript
Step-by-step guide to building a /kit command for your Minecraft server with Skript — cooldowns, multiple kits, per-rank permissions. No Java required.
A /kit command is one of the first things every Minecraft server owner adds. Skript makes it possible without writing a Java plugin — and you can have it running in under five minutes if you know the right pattern.
What you'll build
- A /kit <name> command that gives players preset items
- Per-kit cooldowns tracked across server restarts
- Per-kit permissions so VIPs get exclusive kits
- A graceful fallback when the player types an invalid kit name
Prerequisites
- A Paper 1.21+ server
- Skript 2.15 or newer installed (drop the .jar into /plugins)
- Permission to /sk reload in-game (op or skript.* perm)
The pattern
All kits live in a single /kit <text> command that branches on the argument. Cooldowns use Skript's `difference between {var} and now` against a stored timestamp. Items use the `give X to player` effect with chained `named` / `with lore` modifiers if needed.
The code
command /kit <text>: trigger: if arg-1 is "starter": if difference between {kit.starter.%uuid of player%} and now is less than 24 hours: send "&cStarter kit on cooldown." to player stop set {kit.starter.%uuid of player%} to now give 1 stone sword to player give 16 cooked beef to player give 1 leather chestplate to player send "&aReceived starter kit!" to player else if arg-1 is "pvp": if player doesn't have permission "kit.pvp": send "&cThis kit is for VIPs only." to player stop if difference between {kit.pvp.%uuid of player%} and now is less than 1 hour: send "&cPvP kit on cooldown." to player stop set {kit.pvp.%uuid of player%} to now give 1 diamond sword of sharpness 2 to player give 1 diamond chestplate of protection 2 to player send "&aReceived PvP kit!" to player else: send "&eAvailable kits: &fstarter, pvp" to player
How the cooldown works
`{kit.starter.%uuid of player%}` is a global variable scoped per player by UUID. We set it to `now` after a successful kit grant. On the next attempt, `difference between {var} and now` returns a Skript timespan; we compare that to `24 hours`. If it's less, we abort. Skript persists global variables across reloads, so the cooldown survives restarts.
Adding more kits
Each new kit is another `else if arg-1 is "name":` branch with its own cooldown variable and item list. Don't forget to add the kit name to the fallback message at the bottom — otherwise players won't know it exists.
Common mistakes
- Forgetting `set {kit.X.%uuid of player%} to now` — the cooldown never starts so players can spam the kit
- Using `set {kit.starter} to now` (no UUID) — every player shares one cooldown
- Putting the permission check AFTER the cooldown set — players burn their cooldown even when denied
- Hardcoding item lists in 8 different places — use a /kit text argument so you only branch once
frequently asked
- Do I need a Java plugin like EssentialsX for this?
- No. Skript handles everything. The only requirement is the Skript plugin itself.
- Can I make kits give enchanted items?
- Yes — use `give 1 diamond sword of sharpness 3 to player`. Skript supports the standard Minecraft enchant names.
- How do I reset a player's cooldown?
- Run `/sk eval delete {kit.starter.%uuid of "PlayerName"%}` from console (requires skript-mirror or a custom admin command).
- Can I limit a kit to one use total, not just per-day?
- Yes — instead of comparing the timestamp, check `if {kit.starter.%uuid of player%} is set:` and abort. The kit then becomes one-time-only per player.