Skript on Your Minecraft Server: Custom Commands and Events Without Coding
You want a /discord that shows your community link, a gift for first-time players or an announcement every half hour, and no plugin does exactly that. Skript lets you write it yourself, in something very close to plain English, without compiling anything. Here's how to install it, how to write a script and five examples that work as they are.
What Skript is and when it's worth it
Skript is a plugin for Paper servers that reads .sk files with instructions like «when a player joins, give them 16 bread». Each file is a script: you change it, reload it with a command and the change shows up straight away, without restarting the server.
It's for the small things that are yours: info commands (/discord, /rules, /website), join messages, rewards, announcements, simple minigames. For the big things that already exist, a ready-made plugin is better: for homes, /tpa and kits, EssentialsX; for ranks, LuckPerms; for protecting areas, WorldGuard or GriefPrevention. They're better tested and use less than a script doing the same.
It only works on Paper (and its forks): on Spigot, Fabric, Forge or NeoForge it doesn't load. And each Skript version covers roughly the last 18 months of Minecraft: as of October 2026, 2.16.1 goes from 1.21.4 to 26.2. With an older Minecraft version, you'll need an older Skript version.
Rather not set it up yourself? Minecraft servers from €6 a month, no contract and a full refund within 72 hours. Or create a free Minecraft server, no card needed.
Installing Skript
Check your server is Paper
If the console says Paper when it starts, you're fine. If it's Fabric or Forge, Skript is no use to you: either switch to Paper or look for a mod that does what you want.
Download the right version
Skript is on Modrinth, on Hangar (Paper's plugin site) and on SkriptLang's GitHub. Take the version that lists your Minecraft version and upload it to the plugins folder.
Restart once
On startup, Skript creates the plugins/Skript/scripts folder with a few examples (the ones starting with «-» are disabled).
Check it loads
Type «sk info» in the console (or /sk info in game, if you're an operator): it shows the Skript version and your server's.
How a script is written
A script is a text file ending in .sk inside plugins/Skript/scripts. Each block starts with a line ending in a colon (a command, an event) and what's inside is indented. Indentation causes the most errors: always use the same thing, four spaces or one tab, never mixed.
After saving, reload with «sk reload name» (without the .sk) or «sk reload all» for all of them. If something is wrong, Skript doesn't load that script and tells you which line the error is on and why: read it, it's almost always the indentation or a misspelt word.
Text colours are written with & and their code (&a green, &c red, &e yellow, &l bold). To switch a script off without deleting it, put a «-» in front of its name (-announcements.sk) and reload.
# An info command: /discord
command /discord:
description: Our Discord link
trigger:
send "&dJoin our Discord: &fdiscord.gg/yourcode" to playerFive examples ready to copy
Copy each into a new file (or all into the same one) and change the texts. They work with today's Skript without addons.
# Join message and a gift the first time
on join:
set join message to "&a+ &f%player%"
if player has not played before:
broadcast "&e%player% &7is here for the first time. Welcome!"
give player 16 bread
on quit:
set quit message to "&c- &f%player%"# A message to everyone every 30 minutes (real time)
every 30 minutes:
broadcast "&5[Server] &fRead the rules with &e/rules &fand vote for us with &e/vote&f."# Several lines and a value you change in one place
options:
prefix: &5[Rules]&r
command /rules:
aliases: /norms
trigger:
send "{@prefix} &f1. No griefing." to player
send "{@prefix} &f2. Be respectful in chat." to player
send "{@prefix} &f3. No hacks or X-ray." to player# One home per player, kept even if you restart
command /sethouse:
trigger:
set {house::%player's uuid%} to location of player
send "&aHome saved here." to player
command /house:
cooldown: 60 seconds
cooldown message: &cWait a bit before using it again.
trigger:
if {house::%player's uuid%} is not set:
send "&cYou don't have a home yet: use /sethouse." to player
stop
teleport player to {house::%player's uuid%}# Only for those with the permission (give it with LuckPerms)
command /reward <player>:
permission: server.reward
permission message: &cYou don't have permission.
trigger:
give arg-1 1 diamond
send "&bYou've received a reward!" to arg-1
send "&aReward given to %arg-1%." to playerVariables: what Skript remembers
What goes between braces, like {house::%player's uuid%}, is a variable: Skript stores it in plugins/Skript/variables.csv and it's still there after a restart. Use the player's UUID and not their name, which they can change.
The ones starting with an underscore ({_total}) are temporary: they only exist while that bit runs. Use them for intermediate sums and you won't fill the variables file with junk.
Make a backup before touching scripts that delete or change lots of variables: a misplaced «delete {house::*}» wipes everyone's home.
Keeping Skript from causing lag
Skript is convenient, but a badly thought-out script can cost more than a whole plugin. What causes the most lag: events that fire nonstop (on any move, every tick, every second), loops over all players or thousands of blocks, and huge variable lists that get walked through often.
If you notice lag since adding a script, disable it (the «-» in front and sk reload all) and check whether it goes away. To see what really uses resources, spark shows it plugin by plugin; we explain it in the spark guide.
Addons: when Skript falls short
Addons are plugins that teach Skript new words. The most used: SkBee (scoreboards, boss bars, NBT, worlds) and skript-reflect (calling Java directly, for people who already code). Always check that the addon works with your Skript and Minecraft version: an old addon is the most common reason Skript won't start after an update.
Before downloading a script from the internet, read it all. An .sk can run console commands, give operator or delete variables: if you don't understand what it does, don't use it.
How it's done on NapNodes
NapNodes Minecraft servers are delivered on Paper, so Skript works from day one, on the free server too. Skript is on Modrinth: in the panel, inside your server, «Mods & plugins» finds it among what works for your version and installs it.
Scripts are written right in the browser, in «Files»: go into plugins/Skript/scripts, «New File», give it a name ending in .sk, paste the script and save. Then «sk reload name» in «Console», without the slash.
Make a backup
In «Backups», before installing new plugins (the free server has no backups: keep your own copy of the scripts you write).
Install Skript
«Mods & plugins» → search «Skript» → «Install». If it doesn't show up for your version, upload it by hand in «Files» → plugins.
Restart
With «Restart». Skript creates its folder the first time.
Write your script
«Files» → plugins/Skript/scripts → «New File» → discord.sk, paste the example and save.
Reload and test
In «Console», «sk reload discord». Join the game and type /discord.
Frequently asked questions
What is Skript in Minecraft?
A plugin for Paper servers that lets you create commands, events and small mechanics by writing .sk files in an English-like language, without compiling anything and reloading them without restarting.
Does Skript work on Spigot, Fabric or Forge?
No. Current Skript versions only work on Paper and its forks. On Fabric, Forge or NeoForge you need a mod that does the same thing.
How do I reload a script without restarting?
With «sk reload name» in the console (or /sk reload name in game, as an operator), without the .sk. «sk reload all» reloads all of them. If there's an error, Skript tells you the line and the reason.
Does Skript cause lag?
A normal script, no. What causes lag is events that fire nonstop (every tick, every movement), loops over thousands of blocks or players and huge variable lists. spark shows what uses resources.
Do my players have to install anything?
No. Skript only runs on the server; players join with regular Minecraft.
Shall we set it up for you?
Minecraft servers from €6 a month, never oversold: your RAM is yours alone. And if you'd rather start without paying, there's a free Minecraft server, no card needed.
Your server doesn't show up in the game? Check it in a second with “Is my Minecraft server online?”: players, version and MOTD, free. Need a player's UUID for the whitelist or permissions? Look it up here. Handing out enchanted items? Build the command with the /give generator.
Free tool: /tellraw and /title generator. Messages with colours, bold and click actions in chat or across the screen: the /tellraw or /title command ready to copy.
Keep reading
- WorldEdit on Your Minecraft Server: How to Install It and the Most Used Commands
Install WorldEdit on your Minecraft server and learn to select with the axe, //set, //replace, //copy, //paste, //undo, schematics and permissions.
- EssentialsX on Your Minecraft Server: /home, /tpa, /spawn, Warps and Kits
Install EssentialsX on your Minecraft server and set up /sethome, /tpa, /spawn, /warp, /back and kits, with the permissions your players need to use them.
- Crates on Your Minecraft Server: Key Crates and Rewards
How to add crates (key boxes) to your Minecraft server with ExcellentCrates: creating the crate, its rewards and chances, the keys and how to hand them out.