Skip to content
home/guides/how to make a Minecraft kit plugin with Skript
guide·6 min read·May 25, 2026

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

kits.sk — drop into plugins/Skript/scripts/
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.

Tip: per-player keys (using `uuid of player`) are essential. If you used `{kit.starter}` without the UUID suffix, all players would share one cooldown.

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.

Skip the typing — use the Kit Builder
Visual editor that generates this exact code from a sidebar UI. Add kits, set cooldowns, pick items — export the .sk file.

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
/ faq

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.