Skript: your first script without Java

Write custom server behavior in near-plain English — a welcome message, a simple command — with the Skript plugin. Where scripts live, the reload command, and the stable syntax to start with.

Want your server to do something no plugin quite covers — a custom join message, a little command, a small mechanic — without learning Java and compiling a plugin? That's exactly what Skript is for. It's a plugin that lets you write behavior in .sk files using syntax that reads almost like English. This guide gets your first script running and teaches the handful of stable basics to build on.

At a glance
You need A plugin-capable server (Purpur, PaperSpigot, or similar)
Plan Any
Time Fifteen minutes

Install Skript and find the scripts folder

Install Skript from the Plugins page and restart. On first load it creates its folders. Your scripts live in:

/plugins/Skript/scripts/

Any file ending in .sk in that folder is a script. One useful rule to know now: a file whose name starts with a hyphen (like -disabled.sk) is switched off — Skript ignores it. That's how you disable a script without deleting it.

Your first script

In the File Manager, open /plugins/Skript/scripts/ and create a file called welcome.sk. Paste this:

on join:
    send "&aWelcome to the server, %player%!" to player

command /heal:
    trigger:
        heal the player
        send "&aYou've been healed!" to the player

Two things happen here:

  • on join: is an event — the indented lines under it run whenever a player joins. %player% is filled in with their name.
  • command /heal: defines a command. Everything a command does goes under a trigger: section.

Save the file.

⚠️ Heads up: Skript is indentation-sensitive, just like YAML — the lines under on join: and under trigger: must be indented, and every line at the same level must use the same indentation. Pick spaces or tabs and stay consistent within a file; don't mix them. If a script won't load, misaligned indentation is the first thing to check. The YAML config guide covers the same reading-the-error habit.

Load it: the reload command

Skript doesn't need a full server restart to pick up changes. Run this in the console (or in-game as an operator):

/sk reload welcome

That reloads just welcome.sk. To reload everything, use /sk reload all. After a reload, Skript prints the result to the console — either that the script loaded, or the line number and reason for each error it found. Read those the same way you'd read a config error: go to the named line in the File Manager and fix that spot.

💡 Tip: Reload after every edit and read the console. Skript's error messages are specific — they name the line and usually tell you what it expected. Fix one error, reload, repeat.

Verify it works

Join the server (or rejoin) — you should see your welcome message. Run /heal in-game and you should be healed with the confirmation message. If both work, your first script is live.

The stable core to build on

These basics have worked across Skript versions and are safe to learn first:

Piece Example Does
Event on join: / on death: / on break: Runs when something happens
Command command /kit: then trigger: Defines a slash command
Message send "text" to player Sends chat text
Player player, %player% The player involved in the event
Condition if player is op: Runs the indented block only if true
Broadcast broadcast "text" Sends to everyone

Build up slowly: add one event or command, reload, confirm it works, then add the next — the same one-change-at-a-time habit that keeps plugins sane.

Honest limits

  • Skript is great for small things, not everything. Custom messages, simple commands, small mechanics — perfect. A complex minigame or economy written entirely in Skript gets slow and hard to maintain; at that point a purpose-built plugin is the better tool.
  • Advanced features often need add-ons. A lot of the fancy syntax you'll see online comes from Skript add-on plugins (extra jars), not base Skript. If an example uses syntax your Skript doesn't recognise, it probably needs an add-on — start with base Skript only.
  • Syntax evolves between versions. Examples from old tutorials may not parse on current Skript. Stick to the stable basics above, and check the current Skript documentation for anything beyond them: the official Skript docs.

Troubleshooting

  • Script won't load after reload — read the console: it names the line and the problem. The usual culprit is inconsistent indentation (mixed tabs and spaces) or a missing : at the end of an event or trigger: line. See YAML without tears for the same error-reading habit.
  • /heal says unknown command — the script didn't load (check the console for its errors), or you didn't reload after saving. Run /sk reload all.
  • Syntax from a tutorial errors out — it may need an add-on, or it's for a different Skript version. Rewrite it with the stable basics or check the current docs.
  • Colour codes show as &a — some contexts need the code formatted differently by version; keep to simple messages first and consult the docs for formatting.

Next steps

Was this guide helpful?