Patterns: |
|
Since: | 1.0 |
Examples:
blacklisted items = TNT, bedrock, obsidian, mob spawner, lava, lava bucket
shiny swords = golden sword, iron sword, diamond sword
Patterns: |
|
Required Entries: | trigger |
Optional Entries: | usage, description, prefix, permission, permission message, aliases, executable by, cooldown, cooldown message, cooldown bypass, cooldown storage |
Since: | 1.0 |
Examples:
usage: A command for broadcasting a message to all players.
permission: skript.command.broadcast
permission message: You don't have permission to broadcast messages
aliases: /bc
executable by: players and console
cooldown: 15 seconds
cooldown message: You last broadcast a message %elapsed time% ago. You can broadcast another message in %remaining time%.
cooldown bypass: skript.command.broadcast.admin
cooldown storage: {cooldown::%player%}
trigger:
broadcast the argument
Patterns: |
|
Since: | 2.2, 2.7 (local functions) |
They can also return a value to the trigger that is executing the function.
Note that local functions come before global functions execution
Examples:
broadcast {_message} # our message argument is available in '{_message}'
local function giveApple(amount: number) :: item:
return {_amount} of apple
function getPoints(p: player) returns number:
return {points::%{_p}%}
Patterns: |
|
Since: | 1.0 |
For example, an option may represent a message that appears in multiple locations.
Take a look at the example below that showcases this.
Examples:
no_permission: You're missing the required permission to execute this command!
command /ping:
permission: command.ping
permission message: {@no_permission}
trigger:
message "Pong!"
command /pong:
permission: command.pong
permission message: {@no_permission}
trigger:
message "Ping!"
Patterns: |
|
Since: | 2.9.0 |
For example, this might include
Examples:
using my-cool-addon-feature
Patterns: |
|
Since: | 1.0 |
This section is not required, but it ensures that a variable has a value if it doesn't exist when the script is loaded.
Examples:
{joins} = 0
{balance::%player%} = 0
on join:
add 1 to {joins}
message "Your balance is %{balance::%player%}%"
Patterns: |
|
Since: | 2.5 |
Usable in events: | sponge absorb |
Return Type: | Block |
Examples:
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper |
Return Type: | Item |
Examples:
if victim's active tool is a bow:
interrupt player's active item use
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper |
Return Type: | Timespan |
If an entity is not using any item, this will return 0 seconds.
Examples:
broadcast player's remaining item use time
wait 1 second
broadcast player's item use time
Patterns: |
|
Since: | 2.4 |
Return Type: | Living Entity |
Examples:
loop affected entities:
if loop-value is a player:
send "WARNING: you've step on an area effect cloud!" to loop-value
Patterns: | |
Since: | 2.7 |
Return Type: | integer |
For blocks, 'Age' represents the different growth stages that a crop-like block can go through. A value of 0 indicates that the crop was freshly planted, whilst a value equal to 'maximum age' indicates that the crop is ripe and ready to be harvested.
For entities, 'Age' represents the time left for them to become adults and it's in minus increasing to be 0 which means they're adults, e.g. A baby cow needs 20 minutes to become an adult which equals to 24,000 ticks so their age will be -24000 once spawned.
Examples:
set age of targeted block to maximum age of targeted block
# Spawn a baby cow that will only need 1 minute to become an adult
spawn a baby cow at player
set age of last spawned entity to -1200 # in ticks = 60 seconds
Patterns: |
|
Since: | 2.7 |
Return Type: | Object |
Examples:
trigger:
send all the banned players
Patterns: |
|
Since: | 2.2-dev35 |
Requirements: | Vault, a permission plugin that supports Vault |
Return Type: | Text |
Examples:
trigger:
if argument is "list":
send "%all groups%"
Patterns: |
|
Since: | 2.7 |
Return Type: | Offline Player |
Examples:
Patterns: | |
Since: | 2.2-dev33 |
Return Type: | Text |
Examples:
Patterns: |
|
Since: | 2.5 |
Return Type: | Text |
Examples:
trigger:
send "All Scripts: %scripts%" to player
send "Loaded Scripts: %enabled scripts%" to player
send "Unloaded Scripts: %disabled scripts%" to player
Patterns: |
|
Since: | 2.10 |
Return Type: | Script |
Examples:
trigger:
send "All Scripts: %scripts%" to player
send "Loaded Scripts: %enabled scripts%" to player
send "Unloaded Scripts: %disabled scripts%" to player
Patterns: |
|
Since: | 2.10 |
Requirements: | Paper (paper tags) |
Return Type: | Minecraft Tag |
`minecraft tag` will return only the vanilla tags, `datapack tag` will return only datapack-provided tags, `paper tag` will return only Paper's custom tags (if you are running Paper), and `custom tag` will look in the "skript" namespace for custom tags you've registered.
You can also filter by tag types using "item", "block", or "entity".
Examples:
send paper entity tags
broadcast all block tags
Patterns: |
|
Since: | 2.6 |
Return Type: | Text |
Examples:
send "Number of all script commands: %size of all script commands%"
Patterns: | |
Since: | 2.10 |
Return Type: | integer |
Alpha represents opacity.
Examples:
set {_red} to red's red value + 10
Patterns: | |
Since: | 1.4.3 |
Return Type: | Number |
Examples:
altitude of the attacker is higher than the altitude of the victim
set damage to damage * 1.2
Patterns: |
|
Since: | 1.0 |
Return Type: | Number |
Please note that
amount of %items%
will not return the number of items, but the number of stacks, e.g. 1 for a stack of 64 torches. To get the amount of items in a stack, see the item amount expression.Also, you can get the recursive size of a list, which will return the recursive size of the list with sublists included, e.g.
{list::*} Structure
├──── {list::1}: 1
├──── {list::2}: 2
│ ├──── {list::2::1}: 3
│ │ └──── {list::2::1::1}: 4
│ └──── {list::2::2}: 5
└──── {list::3}: 6
Where using %size of {list::*}% will only return 3 (the first layer of indices only), while %recursive size of {list::*}% will return 6 (the entire list)
Please note that getting a list's recursive size can cause lag if the list is large, so only use this expression if you need to!
Examples:
Patterns: |
|
Since: | 2.0 |
Return Type: | long |
Examples:
Patterns: | |
Since: | 2.10 |
Return Type: | Number |
If radians is specified, converts the passed value to degrees. This conversion may not be entirely accurate, due to floating point precision.
Examples:
{_angle} is 90 # true
180 degrees is pi # true
pi radians is 180 degrees # true
Patterns: |
|
Since: | 2.8.0 |
Return Type: | integer |
The default value of max cost set by vanilla Minecraft is 40.
Examples:
if {AnvilRepairSaleActive} = true:
wait a tick # recommended, to avoid client bugs
set anvil repair cost to anvil repair cost * 50%
send "Anvil repair sale is ON!" to player
on inventory click:
player have permission "anvil.repair.max.bypass"
set max repair cost of event-inventory to 99999
Patterns: |
|
Since: | 2.7 |
Return Type: | Text |
Examples:
type of event-inventory is anvil inventory
if the anvil text input of the event-inventory is "FREE OP":
ban player
Patterns: |
|
Since: | 2.10 |
Usable in events: | Beacon Effect |
Requirements: | Paper |
Return Type: | Potion Effect Type |
Examples:
if the applied effect is primary beacon effect:
broadcast "Is Primary"
else if applied effect = secondary effect:
broadcast "Is Secondary"
Patterns: |
|
Since: | 2.5 |
Usable in events: | enchant |
Return Type: | Enchantment Type |
Deleting or removing the applied enchantments will prevent the item's enchantment.
Examples:
set the applied enchantments to sharpness 10 and fire aspect 5
Patterns: | |
Since: | 1.0, 2.7 (support for command events) |
Return Type: | Object |
One can also use the type of the argument instead of its index to address the argument, e.g. in the above example 'player-argument' is the same as 'argument 1'.
Please note that specifying the argument type is only supported in script commands.
Examples:
damage the player-argument by the number-argument
give a diamond pickaxe to the argument
add argument 1 to argument 2
heal the last argument
Patterns: |
|
Since: | 1.4.2 |
Return Type: | Object |
Examples:
loop (argument + 2) / 5 times:
message "Two useless numbers: %loop-num * 2 - 5%, %2^loop-num - 1%"
message "You have %health of player * 2% half hearts of HP!"
Patterns: |
|
Since: | 1.0, 2.8.0 (armor), 2.10 (body armor) |
Return Type: | Slot |
Body armor is a special slot that can only be used for:
- Horses: Horse armour (doesn't work on zombie or skeleton horses)
- Wolves: Wolf Armor
- Llamas (regular or trader): Carpet
Examples:
helmet of player is neither a helmet nor air # player is wearing a block, e.g. from another plugin
Patterns: |
|
Since: | 2.8.0 |
Return Type: | Block |
Examples:
Patterns: |
|
Since: | 2.5.1 |
Return Type: | long |
Examples:
event-projectile is an arrow
set arrow knockback strength of event-projectile to 10
Patterns: |
|
Since: | 2.5 |
Return Type: | long |
Examples:
Patterns: | |
Since: | 2.6.1 |
Requirements: | Minecraft 1.15+ |
Return Type: | float |
NOTE: Currently this can not be set to anything.
Examples:
if attack cooldown of attacker < 1:
set damage to 0
send "Your hit was too weak! wait until your weapon is fully charged next time." to attacker
Patterns: |
|
Since: | 1.3, 2.6.1 (projectile hit event) |
Usable in events: | damage, death, projectile hit |
Return Type: | Entity |
Examples:
victim is a creeper
damage the attacked by 1 heart
Patterns: |
|
Since: | 1.3 |
Usable in events: | damage, death, destroy |
Return Type: | Entity |
Please note that the attacker can also be a block, e.g. a cactus or lava, but this expression will not be set in these cases.
Examples:
attacker is a player
health of attacker is less than or equal to 2
damage victim by 1 heart
Patterns: |
|
Since: | 2.10 |
Return Type: | Banner Pattern |
Examples:
add {_pattern} to banner patterns of {_banneritem}
remove {_pattern} from banner patterns of {_banneritem}
set the 1st banner pattern of block at location(0,0,0) to {_pattern}
clear the 1st banner pattern of block at location(0,0,0)
set {_pattern} to a red mojang banner pattern
Patterns: |
|
Since: | 2.10 |
Return Type: | Item Type |
Note that not all banner pattern types have an item.
Examples:
set {_item} to snout banner pattern item
set {_item} to thing banner pattern item
Patterns: |
|
Since: | 2.10 |
Return Type: | Banner Pattern |
In order to set a specific position of a banner, there needs to be that many patterns already on the banner.
This expression will add filler patterns to the banner to allow the specified position to be set.
For Example, setting the 3rd banner pattern of a banner that has no patterns on it, will internally add 3 base patterns, allowing the 3rd banner pattern to be set.
Examples:
broadcast 1st banner pattern of block at location(0,0,0)
clear banner patterns of {_banneritem}
Patterns: |
|
Since: | 2.10 |
Return Type: | Item Type |
Examples:
if the bartering drops contain a jack-o-lantern:
remove jack-o-lantern from bartering output
broadcast "it's not halloween yet!"
Patterns: |
|
Since: | 2.10 |
Return Type: | Item Type |
Examples:
if the bartering input is a gold ingot:
broadcast "my precious..."
Patterns: | |
Since: | 2.10 |
Usable in events: | Beacon Effect, Beacon Toggle, Beacon Change Effect |
Requirements: | Paper (range) |
Return Type: | Object |
The secondary effect can be set to anything, but the icon in the GUI will not display correctly.
The secondary effect can only be set when the beacon is at max tier.
The primary and secondary effect can not be the same, primary will always retain the potion type and secondary will be cleared.
You can only change the range on Paper.
Examples:
set primary beacon effect of {_block} to haste
add 1 to range of {_block}
Patterns: |
|
Since: | 2.0, 2.7 (offlineplayers, safe bed) |
Return Type: | Location |
safe bed location
.NOTE: Offline players can not have their bed location changed, only online players.
Examples:
teleport player the the player's bed
else:
teleport the player to the world's spawn point
set the bed location of player to spawn location of world("world") # unsafe/invalid bed location
set the safe bed location of player to spawn location of world("world") # safe/valid bed location
Patterns: | |
Since: | 1.4.4, 2.6.1 (3D biomes) |
Return Type: | Biome |
(i.e. the altitude (y-coordinate) doesn't matter), up until Minecraft 1.15.x.
As of Minecraft 1.16, biomes are now 3D (per block vs column).
Examples:
every real minute:
loop all players:
biome at loop-player is desert
damage the loop-player by 1
Patterns: |
|
Since: | 1.0 |
Return Type: | Block |
Can optionally include a direction as well, e.g. 'block above' or 'block in front of the player'.
Examples:
set block below to air
spawn a creeper above the block
loop blocks in radius 4:
loop-block is obsidian
set loop-block to water
block is a chest:
clear the inventory of the block
Patterns: | |
Since: | 1.0 |
Return Type: | Block |
Can optionally include a direction as well, e.g. 'block above' or 'block in front of the player'.
Examples:
set block below to air
spawn a creeper above the block
loop blocks in radius 4:
loop-block is obsidian
set loop-block to water
block is a chest:
clear the inventory of the block
Patterns: | |
Since: | 2.7 |
Requirements: | 1.17+ |
Return Type: | float |
Examples:
event-block is set
send "Break Speed: %break speed for player%" to player
Patterns: | |
Since: | 2.5, 2.5.2 (set), 2.10 (block displays) |
Return Type: | Block Data |
This data can also be used to set blocks.
Examples:
set block at player to {_data}
set block data of target block to oak_stairs[facing=south;waterlogged=true]
Patterns: |
|
Since: | 2.6 |
Requirements: | Minecraft 1.13+ |
Return Type: | Number |
Examples:
if block hardness of target block > 5:
Patterns: |
|
Since: | 2.10 |
Return Type: | Text |
This will return a string in the form of "SOUND_EXAMPLE", which can be used in the play sound syntax.
Check out this website for a list of sounds in Minecraft, or this one to go to the Sounds wiki page.
Examples:
set {_sounds::*} to place sounds of dirt, grass block, blue wool and stone
Patterns: | |
Since: | 1.0 |
Return Type: | Block |
Examples:
set loop-block to air
Patterns: |
|
Since: | 1.0, 2.5.1 (within/cuboid/chunk) |
Return Type: | Block |
Blocks from/to and between will return a straight line whereas blocks within will return a cuboid.
Examples:
loop blocks between the block below the player and the targeted block:
set the blocks below the player, the victim and the targeted block to air
set all blocks within {loc1} and {loc2} to stone
set all blocks within chunk at player to air
Patterns: |
|
Since: | 2.1 |
Requirements: | Supported regions plugin |
Return Type: | Block |
This expression requires a supported regions plugin to be installed.
Examples:
clear the loop-block
Patterns: |
|
Since: | 2.2-dev31 |
Return Type: | Text |
Examples:
message "Book Title: %author of event-item%"
Patterns: |
|
Since: | 2.2-dev31, 2.7 (changers) |
Return Type: | Text |
Note: In order to modify the pages of a new written book, you must have the title and author
of the book set. Skript will do this for you, but if you want your own, please set those values.
Examples:
message "Book Pages: %pages of event-item%"
message "Book Page 1: %page 1 of event-item%"
set page 1 of player's held item to "Book writing"
Patterns: |
|
Since: | 2.2-dev31 |
Return Type: | Text |
Examples:
message "Book Title: %title of event-item%"
Patterns: |
|
Since: | 2.10 |
Return Type: | Living Entity |
Examples:
send "When a %breeding mother% and %breeding father% love each other very much, they make a %bred offspring%" to breeder
Patterns: |
|
Since: | 2.2-dev16 (lowercase and uppercase), 2.5 (advanced cases) |
Return Type: | Text |
Examples:
"oops!" in uppercase # OOPS!
"hellO i'm steve!" in proper case # HellO I'm Steve!
"hellO i'm steve!" in strict proper case # Hello I'm Steve!
"spAwn neW boSs ()" in camel case # spAwnNeWBoSs()
"spAwn neW boSs ()" in strict camel case # spawnNewBoss()
"geneRate ranDom numBer ()" in pascal case # GeneRateRanDomNumBer()
"geneRate ranDom numBer ()" in strict pascal case # GenerateRandomNumber()
"Hello Player!" in snake case # Hello_Player!
"Hello Player!" in lower snake case # hello_player!
"Hello Player!" in upper snake case # HELLO_PLAYER!
"What is your name?" in kebab case # What-is-your-name?
"What is your name?" in lower kebab case # what-is-your-name?
"What is your name?" in upper kebab case # WHAT-IS-YOUR-NAME?
Patterns: | |
Since: | 2.9.0 |
Return Type: | integer |
Examples:
loop {_letters::*}:
set {_codepoint} to codepoint of lowercase loop-value
return false if {_codepoint} is not set # 'loop-value is not a single character'
if:
{_previous-codepoint} is set
# if the codepoint of the current character is not
# 1 more than the codepoint of the previous character
# then the letters are not in order
{_codepoint} - {_previous-codepoint} is not 1
then:
return false
set {_previous-codepoint} to {_codepoint}
return true
Patterns: |
|
Since: | 2.9.0 |
Return Type: | Text |
Examples:
set {_lower} to codepoint of {_lower}
return {_none} if {_lower} is not set
set {_upper} to codepoint of {_upper}
return {_none} if {_upper} is not set
loop integers between {_lower} and {_upper}:
add character from codepoint loop-value to {_chars::*}
return {_chars::*}
Patterns: | |
Since: | 2.8.0 |
Return Type: | Text |
If you would like only alphanumeric characters you can use the 'alphanumeric' option in the expression.
If strings of more than one character are given, only the first character of each is used.
Examples:
broadcast "%loop-value%"
# 0123456789:;<=>?@ABC... ...uvwxyz
send characters between "0" and "z"
# 0123456789ABC... ...uvwxyz
send alphanumeric characters between "0" and "z"
Patterns: |
|
Since: | 2.2-dev31 |
Return Type: | Text |
Examples:
Patterns: |
|
Since: | 2.2-Fixes-v7, 2.2-dev35 (clearing recipients) |
Return Type: | Player |
Examples:
Patterns: |
|
Since: | 2.0, 2.8.0 (loaded chunks) |
Return Type: | Chunk |
Examples:
set {_chunks::*} to the loaded chunks of the player's world
Patterns: |
|
Since: | 1.0, 2.2-dev35 (more clickable things) |
Usable in events: | click, inventory click |
Return Type: | Object |
Examples:
if the clicked block is a chest:
show the inventory of the clicked block to the player
Patterns: |
|
Since: | 1.2, 2.10 (displays) |
Return Type: | Color |
This can also be used to color chat messages with "<%color of ...%>this text is colored!".
Do note that firework effects support setting, adding, removing, resetting, and deleting; text displays support setting and resetting; and items, entities, and blocks only support setting, and only for very few items/blocks.
Examples:
message "This wool block is <%color of block%>%color of block%<reset>!"
set the color of the block to black
Patterns: | |
Since: | 2.0 |
Return Type: | Text |
any colors and chat styles from the message. Parsing all
chat styles requires this expression to be used in same line with
the send effect.
Examples:
set message to colored message # Safe; only colors get parsed
command /fade <player>:
trigger:
set display name of the player-argument to uncolored display name of the player-argument
command /format <text>:
trigger:
message formatted text-argument # Safe, because we're sending to whoever used this command
Patterns: |
|
Since: | 2.0, 2.7 (support for script commands) |
Usable in events: | command |
Return Type: | Text |
Examples:
on command:
if {game::%player%::playing} is true:
if the command is not "exit":
message "You're not allowed to use commands during the game"
cancel the event
Patterns: | |
Since: | 2.10 |
Return Type: | Text |
Examples:
set command of {_cmdMinecart} to "say asdf"
Patterns: |
|
Since: | 2.6 |
Return Type: | Text |
Examples:
description of command "help"
label of command "pl"
usage of command "help"
aliases of command "bukkit:help"
permission of command "/op"
command "op"'s permission message
command "sk"'s plugin owner
command /greet <player>:
usage: /greet <target>
trigger:
if arg-1 is sender:
send "&cYou can't greet yourself! Usage: %the usage%"
stop
send "%sender% greets you!" to arg-1
send "You greeted %arg-1%!"
Patterns: |
|
Since: | 2.0 |
Usable in events: | command |
Return Type: | Command Sender |
If the command sender is a command block, its location can be retrieved by using %block's location%
Examples:
on command:
log "%executor% used command /%command% %arguments%" to "commands.log"
Patterns: | |
Since: | 2.0 |
Return Type: | Location |
Examples:
every 5 seconds:
loop all players:
set the loop-player's compass target to location of {compass::target::%%loop-player%}
Patterns: |
|
Since: | 2.10 |
Return Type: | Config |
This can be reloaded, or navigated to retrieve options.
Examples:
Patterns: |
|
Since: | 1.3.1 |
Return Type: | Command Sender |
Examples:
send "message to console" to the console
Patterns: |
|
Since: | 2.2-dev33 |
Return Type: | Object |
the last usage date, or the cooldown bypass permission.
Examples:
cooldown: 10 seconds
cooldown message: You last teleported home %elapsed time% ago, you may teleport home again in %remaining time%.
trigger:
teleport player to {home::%player%}
Patterns: | |
Since: | 1.4.3 |
Return Type: | Number |
Examples:
message "Watch out for lava!"
Patterns: | |
Since: | 2.10 |
Return Type: | Loot Context |
Examples:
set {_context} to a loot context at player:
set loot luck value to 10
set looter to {_player}
set looted entity to last spawned pig
give player loot items of loot table "minecraft:entities/iron_golem" with loot context {_context}
Patterns: |
|
Since: | 1.0 |
Return Type: | Entity |
You can use the specific type of the entity that's involved in the event, e.g. in a 'death of a creeper' event you can use 'the creeper' instead of 'the entity'.
Examples:
kill the creeper
kill all powered creepers in the wolf's world
projectile is an arrow
Patterns: | |
Since: | 2.2-dev34, 2.8.0 (chat format) |
Requirements: | Paper 1.16+ (chat format) |
Return Type: | Inventory |
Examples:
set {_inventory} to a chest inventory with 1 row
set slot 4 of {_inventory} to a diamond named "example"
open {_inventory} to player
open chest inventory named "<#00ff00>hex coloured title!" with 6 rows to player
Patterns: |
|
Since: | 2.5 |
Requirements: | 1.14+ |
Return Type: | long |
Examples:
set {_model} to custom model data of player's tool
Patterns: |
|
Since: | 1.3.5, 2.8.0 (item damage event) |
Usable in events: | Damage, Vehicle Damage, Item Damage |
Return Type: | Number |
For entity damage events, possibly ignoring armour, criticals and/or enchantments (remember that in Skript '1' is one full heart, not half a heart).
For items, it's the amount of durability damage the item will be taking.
Examples:
event-item is any tool
clear damage # unbreakable tools as the damage will be 0
on damage:
increase the damage by 2
Patterns: |
|
Since: | 2.0 |
Return Type: | Damage Cause |
Examples:
Patterns: |
|
Since: | 1.2, 2.7 (durability reversed) |
Return Type: | integer |
Examples:
reset the durability of {_item}
set durability of player's held item to 0
Patterns: | |
Since: | 2.4 |
Return Type: | Item Type |
Examples:
set player's tool to diamond hoe damaged by 250
give player diamond sword with damage 700 named "BROKEN SWORD"
set {_item} to diamond hoe with damage value 50 named "SAD HOE"
set target block of player to wool with data value 1
set target block of player to potato plant with data value 7
Patterns: | |
Since: | 2.2-dev33 |
Return Type: | Date |
Examples:
set {_hourAfter} to 1 hour after {someOtherDate}
set {_hoursBefore} to 5 hours before {someOtherDate}
Patterns: | |
Since: | 2.10 (experimental) |
Return Type: | Object |
using queues
experimental feature flag to be enabled.Unrolls a queue into a regular list of values, which can be stored in a list variable. The order of the list will be the same as the order of the elements in the queue. If a list variable is set to this, it will use numerical indices. The original queue will not be changed.
Examples:
Patterns: | |
Since: | 1.4 |
Return Type: | Object |
Examples:
message "You have to wait a minute before using this command again!"
Patterns: | |
Since: | 2.3 |
Return Type: | Difficulty |
Examples:
Patterns: |
|
Since: | 1.0 (basic), 2.0 (extended) |
Return Type: | Direction |
Examples:
set the block behind the player to water
loop blocks above the player:
set {_rand} to a random integer between 1 and 10
set the block {_rand} meters south east of the loop-block to stone
block in horizontal facing of the clicked entity from the player is air
spawn a creeper 1.5 meters horizontally behind the player
spawn a TNT 5 meters above and 2 meters horizontally behind the player
thrust the last spawned TNT in the horizontal direction of the player with speed 0.2
push the player upwards and horizontally forward at speed 0.5
push the clicked entity in in the direction of the player at speed -0.5
open the inventory of the block 2 blocks below the player to the player
teleport the clicked entity behind the player
grow a regular tree 2 meters horizontally behind the player
Patterns: | |
Since: | 2.10 |
Return Type: | Display Billboard |
This describes the axes/points around which the display can pivot.
Displays spawn with the 'fixed' billboard by default. Resetting this expression will also set it to 'fixed'.
Examples:
Patterns: | |
Since: | 2.10 |
Return Type: | integer |
Unmodified displays will not have a brightness override value set. Resetting or deleting this value will remove the override.
Use the 'block' or 'sky' options to get/change specific values or get both values as a list by using neither option.
NOTE: setting only one of the sky/block light overrides of a display without an existing override will set both sky and block light to the given value. Make sure to set both block and sky levels to your desired values for the best results. Likewise, you can only clear the brightness override, you cannot clear/reset the sky/block values individually.
Examples:
subtract 3 from the block light level override of the last spawned text display
if sky light level override of {_display} is 5:
clear brightness override of {_display}
Patterns: | |
Since: | 2.10 |
Return Type: | float |
The rendering culling bounding box spans horizontally width/2 from entity position, which determines the point at which the display will be frustum culled (no longer rendered because the game determines you are no longer able to see it).
If set to 0, no culling will occur on both the vertical and horizontal directions. Default is 0.0.
Examples:
Patterns: | |
Since: | 2.10 |
Return Type: | Timespan |
Interpolation duration is the amount of time a display will take to interpolate, or shift, between its current state and a new state.
Interpolation delay is the amount of ticks before client-side interpolation will commence.Setting to 0 seconds will make it immediate.
Resetting either value will return that value to 0.
Examples:
Patterns: | |
Since: | 2.10 |
Requirements: | Spigot 1.20.4+ |
Return Type: | Timespan |
0 means that updates are applied immediately.
1 means that the display entity will move from current position to the updated one over one tick.
Higher values spread the movement over multiple ticks. Max of 59 ticks.
Examples:
teleport last spawned text display to {_location}
wait 2 ticks
message "display entity has arrived at %{_location}%"
Patterns: | |
Since: | 2.10 |
Return Type: | Quaternion |
The left rotation is applied first, with the right rotation then being applied based on the rotated axis.
Examples:
Patterns: | |
Since: | 2.10 |
Return Type: | float |
Default value is 1.0. This value is then multiplied by 64 and the player's entity view distance setting to determine the actual range.
For example, a player with 150% entity view distance will see a block display with a view range of 1.2 at 1.2 * 64 * 150% = 115.2 blocks away.
Examples:
Patterns: |
|
Since: | 1.0 |
Usable in events: | death |
Return Type: | Item Type |
Examples:
remove 4 planks from the drops
Patterns: | |
Since: | 2.5.1 |
Requirements: | Minecraft 1.15+ ('as %entity%') |
Return Type: | Item Type |
Examples:
give drops of block using player's tool to player
Patterns: |
|
Since: | 2.0, 2.7 (relative to last element), 2.8.0 (range of elements) |
Return Type: | Object |
Asking for elements from a queue will also remove them from the queue, see the new queue expression for more information.
See also: random expression
Examples:
set {_last} to last element of {top players::*}
set {_random player} to random element out of all players
send 2nd last element of {top players::*} to player
set {page2::*} to elements from 11 to 20 of {top players::*}
broadcast the 1st element in {queue}
broadcast the first 3 elements in {queue}
Patterns: |
|
Since: | 2.5 |
Usable in events: | enchant prepare, enchant |
Return Type: | Item Type |
It can be modified, but enchantments will still be applied in the enchant event.
Examples:
set the enchanted item to a diamond chestplate
on enchant prepare:
set the enchant item to a wooden sword
Patterns: |
|
Since: | 2.5 |
Usable in events: | enchant |
Return Type: | long |
This is number that was displayed in the enchantment table, not the actual number of levels removed.
Examples:
send "Cost: %the displayed enchanting cost%" to player
Patterns: |
|
Since: | 2.5 |
Usable in events: | enchant prepare |
Return Type: | long |
Examples:
send "There are %enchantment bonus% bookshelves surrounding this enchantment table!" to player
Patterns: |
|
Since: | 2.0 |
Return Type: | long |
Examples:
message "You have a sword of sharpness %level of sharpness of the player's tool% equipped"
Patterns: | |
Since: | 2.5 |
Usable in events: | enchant prepare |
Requirements: | 1.11 or newer |
Return Type: | Enchantment Offer |
Examples:
send "Your enchantment offers are: %the enchantment offers%" to player
Patterns: |
|
Since: | 2.5 |
Requirements: | 1.11 or newer |
Return Type: | long |
If the cost is changed, it will always be at least 1.
This changes how many levels are required to enchant, but does not change the number of levels removed.
To change the number of levels removed, use the enchant event.
Examples:
Patterns: |
|
Since: | 1.2.1, 2.5 (chunks), 2.10 (within) |
Return Type: | Entity |
all players
, all creepers in the player's world
, or players in radius 100 of the player
. Examples:
send "Psst!" to all players within 100 meters of the player
give a diamond to all ops
heal all tamed wolves in radius 2000 around {town center}
delete all monsters in chunk at player
size of all players within {_corner::1} and {_corner::2}}
Patterns: |
|
Since: | 2.5 |
Return Type: | Boolean |
Examples:
Patterns: |
|
Since: | 2.5, 2.6.1 (final attribute value) |
Return Type: | Number |
Note that the movement speed attribute cannot be reliably used for players. For that purpose, use the speed expression instead.
Resetting an entity's attribute is only available in Minecraft 1.11 and above.
Examples:
send "You are wounded!" to victim
set victim's attack speed attribute to 2
Patterns: | |
Since: | 2.7, 2.10 (maximum) |
Return Type: | Timespan |
Examples:
send the max burn time of target
Patterns: |
|
Since: | 2.5 |
Return Type: | Offline Player |
Examples:
delete owner of target entity
set {_t} to uuid of tamer of target entity
Patterns: |
|
Since: | 2.10 |
Requirements: | Minecraft 1.20.2+ |
Return Type: | Entity Snapshot |
Individual attributes of a snapshot cannot be modified or retrieved.
Examples:
set the max health of entity to 20
set the health of entity to 20
set {_snapshot} to the entity snapshot of entity
clear entity
spawn {_snapshot} at location(0, 0, 0)
Patterns: |
|
Since: | 2.10 |
Requirements: | Spigot 1.19.2+ |
Return Type: | Text |
Examples:
set {_sounds::*} to death sounds of (all mobs in radius 10 of player)
Patterns: |
|
Since: | 2.1, 2.5.3 (block break event), 2.7 (experience change event), 2.10 (breeding, fishing) |
Usable in events: | experience spawn, break / mine, experience change, entity breeding |
Return Type: | Experience |
Examples:
add 5 to the spawned experience
on break of coal ore:
clear dropped experience
on break of diamond ore:
if tool of player = diamond pickaxe:
add 100 to dropped experience
on breed:
breeding father is a cow
set dropped experience to 10
on fish catch:
add 70 to dropped experience
Patterns: |
|
Since: | 2.10 |
Return Type: | Experience Cooldown Change Reason |
Examples:
if xp cooldown change reason is plugin:
#Changed by a plugin
else if xp cooldown change reason is orb pickup:
#Changed by picking up xp orb
Patterns: | |
Since: | 2.10 |
Return Type: | Timespan |
Experience cooldown is how long until a player can pick up another orb of experience.
The cooldown of a player must be 0 to pick up another orb of experience.
Examples:
set the xp pickup cooldown of player to 1 hour
if exp collection cooldown of player >= 10 minutes:
clear the experience pickup cooldown of player
Patterns: |
|
Since: | 2.5, 2.8.6 (modify blocks) |
Usable in events: | explode |
Return Type: | Block |
Examples:
loop exploded blocks:
add loop-block to {exploded::blocks::*}
on explode:
loop exploded blocks:
if loop-block is grass:
remove loop-block from exploded blocks
on explode:
clear exploded blocks
on explode:
set exploded blocks to blocks in radius 10 around event-entity
on explode:
add blocks above event-entity to exploded blocks
Patterns: |
|
Since: | 2.5 |
Usable in events: | explosion |
Return Type: | Number |
When changing the yield, a value greater than 1 will function the same as using 1.
Attempting to change the yield to a value less than 0 will have no effect.
Examples:
set the explosion's block yield to 10%
Patterns: |
|
Since: | 2.5 |
Usable in events: | explosion prime |
Return Type: | Number |
When changing the yield, values less than 0 will be ignored.
Read this wiki page for more information
Examples:
set the yield of the explosion to 10
Patterns: | |
Since: | 2.5 |
Requirements: | Minecraft 1.12 or newer for creepers |
Return Type: | Number |
Read this wiki page for more information
Examples:
set the explosive yield of the event-entity to 10
Patterns: |
|
Since: | 1.4 |
Return Type: | Direction |
Examples:
loop blocks from the block below the player in the horizontal facing of the player:
set loop-block to cobblestone
Patterns: |
|
Since: | 2.5 |
Usable in events: | block fertilize |
Requirements: | Minecraft 1.13 or newer |
Return Type: | Block |
Examples:
Patterns: | |
Since: | 2.2-dev36, 2.10 (parenthesis pattern) |
Return Type: | Object |
For example, if you ran 'broadcast "something" and "something else" where [string input is "something"]',
only "something" would be broadcast as it is the only string that matched the condition.
Examples:
loop (all blocks in radius 5 of player) where [block input is not air]:
Patterns: |
|
Since: | 2.4 |
Return Type: | Firework Effect |
Examples:
launch trailing flickering star colored purple, yellow, blue, green and red fading to pink at target entity
launch ball large colored red, purple and white fading to light green and black at player's location with duration 1
Patterns: |
|
Since: | 2.10 |
Usable in events: | Fishing |
Return Type: | float |
The angle is in degrees, with 0 being positive Z, 90 being negative X, 180 being negative Z, and 270 being positive X.
By default, returns a value between 0 and 360 degrees.
Examples:
if fishing approach angle is bigger than 300.5 degrees or fishing approach angle is smaller than 59.5 degrees:
cancel event
Patterns: |
|
Since: | 2.10 |
Usable in events: | Fishing |
Requirements: | Paper 1.20.6 |
Return Type: | Timespan |
May return a timespan of 0 seconds. If modifying the value, it should be at least 1 tick.
Examples:
set fishing bite time to 5 seconds
Patterns: |
|
Since: | 2.10 |
Usable in events: | Fishing |
Return Type: | Entity |
Examples:
wait a second
teleport player to fishing hook
Patterns: |
|
Since: | 2.10 |
Usable in events: | Fishing |
Return Type: | Timespan |
Default minimum value is 5 seconds and maximum is 30 seconds, before lure is applied.
Examples:
set min waiting time to 10 seconds
set max waiting time to 20 seconds
Patterns: | |
Since: | 2.2-dev31, 2.7 (support variables in format) |
Return Type: | Text |
Examples:
trigger:
send "Full date: %now formatted human-readable%" to sender
send "Short date: %now formatted as "yyyy-MM-dd"%" to sender
Patterns: | |
Since: | 1.1 |
Return Type: | Object |
Note: The past, future and present states of an expression are sometimes called 'time states' of an expression.
Note 2: If you don't specify whether to use the past or future state of an expression that has different values, its default value will be used which is usually the value after the event.
Examples:
former world was "world_nether" # or 'world was'
world will be "world" # or 'world after the event is'
on tool change:
past tool is an axe
the tool after the event will be air
on weather change:
set {weather::%world%::old} to past weather
set {weather::%world%::current} to the new weather
Patterns: |
|
Since: | 2.8.0 |
Return Type: | double |
Examples:
send action bar "Memory left: %free memory%/%max memory%MB" to player
wait 5 ticks
Patterns: | |
Since: | 2.10 |
Return Type: | Function |
Examples:
run {_function} with arguments 13 and true
Patterns: |
|
Since: | 2.10 |
Usable in events: | smelt, fuel burn, smelting start, furnace extract |
Return Type: | Item |
Only 'smelting item' can be changed.
Examples:
broadcast smelted item
# Or 'result'
on furnace extract:
broadcast extracted item
on fuel burn:
broadcast burned fuel
on smelting start:
broadcast smelting item
clear smelting item
Patterns: | |
Since: | 1.0, 2.8.0 (syntax rework) |
Usable in events: | smelt, fuel burn |
Return Type: | Slot |
Examples:
set the block's ore slot to 64 iron ore
clear the result slot of the block
on smelt:
if the fuel slot is charcoal:
add 5 seconds to the burn time
Patterns: | |
Since: | 2.10 |
Return Type: | Timespan |
- cook time: The amount of time an item has been smelting for.
- total cook time: The amount of time required to finish smelting an item.
- burn time: The amount of time left for the current fuel until consumption of another fuel item.
Examples:
set the total cooking time of {_block} to 50
set the fuel burning time of {_block} to 100
on smelt:
if the fuel slot is charcoal:
add 5 seconds to the fuel burn time
Patterns: | |
Since: | 2.5 |
Requirements: | Minecraft 1.13+ |
Return Type: | Gamerule Value |
Examples:
Patterns: |
|
Since: | 2.2-dev21 |
Return Type: | Boolean |
Examples:
Patterns: |
|
Since: | 2.2-dev35 |
Requirements: | Vault, a permission plugin that supports Vault |
Return Type: | Text |
If you have LuckPerms, ensure you have vault integration enabled in the luck perms configurations.
Examples:
broadcast "%group of player%" # this is the player's primary group
broadcast "%groups of player%" # this is all of the player's groups
Patterns: |
|
Since: | 2.6.2 |
Return Type: | Entity |
Examples:
if item of hanging entity is diamond pickaxe:
cancel event
if hanging remover is a player:
send "You can't break that item frame!" to hanging remover
Patterns: |
|
Since: | 2.0, 2.2-dev32 (SHA-256 algorithm) |
Return Type: | Text |
MD5 is provided mostly for backwards compatibility, as it is outdated and not secure.
SHA-256 is more secure, and can used to hash somewhat confidental data like IP addresses and even passwords.
It is not that secure out of the box, so please consider using salt when dealing with passwords!
When hashing data, you must specify algorithms that will be used for security reasons!
Please note that a hash cannot be reversed under normal circumstanses. You will not be able to get original value from a hash with Skript.
Examples:
trigger:
set {password::%uuid of player%} to text-argument hashed with SHA-256
command /login <text>:
trigger:
if text-argument hashed with SHA-256 is {password::%uuid of player%}:
message "Login successful."
else:
message "Wrong password!"
Patterns: |
|
Since: | 2.7 |
Usable in events: | Egg Throw |
Return Type: | Entity Type |
Examples:
set the hatching entity type to a primed tnt
Patterns: |
|
Since: | 2.0 |
Return Type: | Location |
Please note that this location is only accurate for entities whose head is exactly above their center, i.e. players, endermen, zombies, skeletons, etc., but not sheep, pigs or cows.
Examples:
set the block in front of the player's eyes to glass
loop blocks in front of the player's head:
Patterns: |
|
Since: | 2.5.1 |
Usable in events: | heal |
Return Type: | double |
Examples:
increase the heal amount by 2
remove 0.5 from the healing amount
Patterns: |
|
Since: | 2.5 |
Usable in events: | heal |
Return Type: | Heal Reason |
Examples:
heal reason is satiated
send "You ate enough food and gained full health back!"
Patterns: |
|
Since: | 1.0 |
Usable in events: | damage |
Return Type: | Number |
Examples:
Patterns: | |
Since: | 2.3 |
Return Type: | Player |
Examples:
Patterns: |
|
Since: | 2.10 |
Return Type: | integer |
The domestication of a horse is how close a horse is to becoming tame - the higher the domestication, the closer they are to becoming tame (must be between 1 and the max domestication level of the horse).
The max domestication of a horse is how long it will take for a horse to become tame (must be greater than 0).
Examples:
add {_i} to domestication level of {_horse}
if domestication level of {_horse} >= max domestication level of {_horse}:
tame {_horse}
set tamer of {_horse} to {_p}
Patterns: |
|
Since: | 2.5 |
Return Type: | long |
Examples:
send "You clicked the hotbar button %hotbar button%!"
Patterns: | |
Since: | 2.2-dev36 |
Return Type: | Slot |
To retrieve its number use Slot Index expression.
Use future and past tense to grab the previous slot in an item change event, see example.
Examples:
set player's selected hotbar slot to slot 4 of player
send "index of player's current hotbar slot = 1" # second slot from the left
on item held change:
if the selected hotbar slot was a diamond:
set the currently selected hotbar slot to slot 5 of player
Patterns: |
|
Since: | 2.3 |
Usable in events: | server list ping |
Requirements: | Paper 1.12.2 or newer |
Return Type: | Text |
This can be changed using texts or players in a server list ping event only. Adding players to the list means adding the name of the players.
And note that, for example if there are 5 online players (includes fake online count) in the server and the hover list is set to 3 values, Minecraft will show "... and 2 more ..." at end of the list.
Examples:
clear the hover list
add "&aWelcome to the &6Minecraft &aserver!" to the hover list
add "" to the hover list # A blank line
add "&cThere are &6%online players count% &conline players!" to the hover list
Patterns: | |
Since: | 1.4, 2.2-dev26 (when used in connect event), 2.3 (when used in server list ping event) |
Return Type: | Text |
Examples:
broadcast "Banned the IP %IP of player%"
on connect:
log "[%now%] %player% (%ip%) is connected to the server."
on server list ping:
send "%IP-address%" to the console
Patterns: | |
Since: | 2.1 |
Return Type: | long |
Examples:
if {_s} contains "abc":
set {_s} to the first (index of "abc" in {_s} + 3) characters of {_s} # removes everything after the first "abc" from {_s}
Patterns: | |
Since: | 2.4 (indices), 2.6.1 (sorting) |
Return Type: | Text |
To sort the indices, all objects in the list must be comparable;
Otherwise, this expression will just return the unsorted indices.
Examples:
broadcast "%indices of {l::*}%" # result is 1, 2 and 3
set {_leader-board::first} to 17
set {_leader-board::third} to 30
set {_leader-board::second} to 25
set {_leader-board::fourth} to 42
set {_ascending-indices::*} to sorted indices of {_leader-board::*} in ascending order
broadcast "%{_ascending-indices::*}%" #result is first, second, third, fourth
set {_descending-indices::*} to sorted indices of {_leader-board::*} in descending order
broadcast "%{_descending-indices::*}%" #result is fourth, third, second, first
Patterns: |
|
Since: | 2.8.0 |
Usable in events: | Inventory Item Move |
Return Type: | Inventory |
Examples:
holder of event-initiator-inventory is a chest
broadcast "Item transport happening at %location at holder of event-initiator-inventory%!"
Patterns: |
|
Since: | 2.2-dev36, 2.9.0 (input index) |
Return Type: | Object |
For example, if you ran 'broadcast "something" and "something else" where [input is "something"]
the condition would be checked twice, using "something" and "something else" as the inputs.
The 'input index' pattern can be used when acting on a variable to access the index of the input.
Examples:
sort {_list::*} based on length of input index
Patterns: |
|
Since: | 1.0 |
Return Type: | Object |
Examples:
clear the player's inventory
remove 5 wool from the inventory of the clicked block
Patterns: |
|
Since: | 2.2-dev16 |
Return Type: | Inventory Action |
Examples:
Patterns: |
|
Since: | 2.8.0 |
Usable in events: | Inventory Close |
Requirements: | Paper |
Return Type: | Inventory Close Reasons |
Examples:
inventory close reason is teleport
send "Your inventory closed due to teleporting!" to player
Patterns: |
|
Since: | 2.2-dev34, 2.5 (slots) |
Return Type: | Object |
NOTE: 'Viewers' expression returns a list of players viewing the inventory. Note that a player is considered to be viewing their own inventory and internal crafting screen even when said inventory is not open.
Examples:
holder of player's top inventory
{_inventory}'s viewers
Patterns: | |
Since: | 2.2-dev24 |
Return Type: | Slot |
Examples:
set slot 0 of player to 2 stones
remove 1 stone from slot 0 of player
add 2 stones to slot 0 of player
clear slot 1 of player
Patterns: |
|
Since: | unknown (before 2.1) |
Return Type: | Item |
Examples:
item is a clock
set the time to 6:00
Patterns: |
|
Since: | 2.2-dev24 |
Return Type: | long |
Examples:
Patterns: |
|
Since: | 2.8.0 |
Return Type: | Timespan |
Examples:
set item cooldown of player's tool for player to 1 minute
set item cooldown of stone and grass for all players to 20 seconds
reset item cooldown of cobblestone and dirt for all players
Patterns: | |
Since: | 2.10 |
Return Type: | Item Display Transforms |
Examples:
set the item transform of the last spawned item display to no transform # Reset to default
Patterns: |
|
Since: | 2.2-dev36 |
Return Type: | Enchantment Type |
Examples:
Patterns: |
|
Since: | 2.10 |
Return Type: | Item Flag |
Examples:
add hide potion effects to item flags of player's held item
remove hide enchants from item flags of {legendary sword}
Patterns: | |
Since: | 2.2-dev35, 2.2-dev36 (improved), 2.5.2 (throwable projectiles), 2.10 (item displays) |
Return Type: | Slot |
For item frames, the item inside the frame is returned.
For throwable projectiles (snowballs, enderpearls etc.) or item displays, it gets the displayed item.
Other entities do not have items associated with them.
Examples:
set the item inside of event-entity to a diamond sword named "Example"
Patterns: | |
Since: | 2.5 |
Requirements: | 1.14+ |
Return Type: | Item Type |
Examples:
set slot 1 of inventory of player to wooden hoe with custom model data 357
Patterns: |
|
Since: | 2.10 |
Requirements: | Spigot 1.20.5+ |
Return Type: | Item Type |
Examples:
set {_item without glint} to diamond without enchantment glint
Patterns: |
|
Since: | 2.10 |
Return Type: | Item Type |
Examples:
set {_item} to player's tool with item flag hide additional tooltip
give player torch with hide placed on item flag
set {_item} to diamond sword with all item flags
Patterns: | |
Since: | 2.3 |
Return Type: | Item Type |
If multiple strings are passed, each of them will be a separate line in the lore.
Examples:
give {_test} to player
Patterns: |
|
Since: | 1.0 pre-5 |
Return Type: | Item Type |
Examples:
block contains loop-item
message "Theres at least one %loop-item% in this block"
drop all blocks at the player # drops one of every block at the player
Patterns: |
|
Since: | 2.0, 2.8.0 (specific types of items) |
Return Type: | Slot |
Please note that the positions of the items in the inventory are not saved, only their order is preserved.
Examples:
loop-item is enchanted
remove loop-item from the player
set {inventory::%uuid of player%::*} to items in the player's inventory
Patterns: |
|
Since: | 2.1, 2.5.2 (regex support), 2.7 (case sensitivity), 2.10 (without trailing string) |
Return Type: | Text |
Examples:
set {_s::*} to the string argument split at ","
Patterns: | |
Since: | 2.3 |
Return Type: | Text |
The vanilla Minecraft client will use lowercase language / country pairs separated by an underscore, but custom resource packs may use any format they wish.
Examples:
Patterns: |
|
Since: | 2.5.1 |
Return Type: | Number |
Examples:
Patterns: |
|
Since: | 2.2-Fixes-V10 |
Return Type: | Damage Cause |
Examples:
Patterns: |
|
Since: | 2.10 |
Return Type: | Location |
Can also be set, reset, and deleted if the player is online.
Examples:
teleport player to last death location of (random element out of all players)
Patterns: |
|
Since: | 2.3 |
Requirements: | Paper 1.12.2 or newer |
Return Type: | Server Icon |
Examples:
Patterns: | |
Since: | 2.4 |
Requirements: | Paper 1.9 or newer |
Return Type: | Resource Pack State |
Examples:
Patterns: |
|
Since: | 1.3 (spawned entity), 2.0 (shot entity), 2.2-dev26 (dropped item), 2.7 (struck lightning, firework) |
Return Type: | Entity |
Examples:
set {healer::%spawned priest%} to true
shoot an arrow from the last spawned entity
ignite the shot projectile
drop a diamond sword
push last dropped item upwards
teleport player to last struck lightning
delete last launched firework
Patterns: |
|
Since: | 2.5 |
Return Type: | Date |
Examples:
trigger:
send "You have been online for %difference between player's last login and now%."
send "You first joined the server %difference between player's first login and now% ago."
Patterns: |
|
Since: | 2.3 |
Return Type: | Entity |
Examples:
Patterns: | |
Since: | unknown (before 2.1) |
Usable in events: | level change |
Return Type: | long |
Examples:
set the player's level to 0
Patterns: | |
Since: | 2.0 |
Usable in events: | level change |
Return Type: | Number |
Changing this value can cause the player's level to change if the resulting level progess is negative or larger than 1, e.g.
increase the player's level progress by 0.5
will make the player gain a level if their progress was more than 50%. Examples:
on rightclick with a blaze rod:
player's level progress is larger than 0.2
shoot a fireball from the player
reduce the player's level progress by 0.2
every 2 seconds:
loop all players:
level progress of loop-player is smaller than 0.9:
increase level progress of the loop-player by 0.1
else:
set level progress of the loop-player to 0.99
on xp spawn:
cancel event
Patterns: | |
Since: | 1.3.4 |
Return Type: | byte |
It can be separated into sunlight (15 = direct sunlight, 1-14 = indirect) and block light (torches, glowstone, etc.). The total light level of a block is the maximum of the two different light types.
Examples:
every 5 seconds:
loop all players:
{vampire::%uuid of loop-player%} is true
sunlight level at the loop-player is greater than 10
ignite the loop-player for 5 seconds
Patterns: |
|
Since: | 2.7 |
Return Type: | Text |
Examples:
broadcast "This server uses Vault plugin!"
send "Plugins (%size of loaded plugins%): %plugins%" to player
Patterns: |
|
Since: | 2.0 |
Return Type: | Location |
Examples:
set {_loc} to the location 1 meter above the player
Patterns: |
|
Since: | 2.0 |
Return Type: | Location |
Examples:
set {_loc} to the location 1 meter above the player
Patterns: | |
Since: | Unknown |
Return Type: | Location |
Please note that the location of an entity is at it's feet, use head location to get the location of the head.
Examples:
message "You home was set to %player's location% in %player's world%."
Patterns: |
|
Since: | 2.8.0 |
Return Type: | long |
Examples:
give player 1 stone
wait 5 ticks
if loop-counter > 30:
stop loop
loop {top-balances::*}:
if loop-iteration <= 10:
broadcast "#%loop-iteration% %loop-index% has $%loop-value%"
Patterns: |
|
Since: | 1.0, 2.8.0 (loop-counter), 2.10 (previous, next) |
Return Type: | Object |
Examples:
loop 10 times:
message "%11 - loop-number%"
wait a second
# Generate a 10x10 floor made of randomly colored wool below the player
loop blocks from the block below the player to the block 10 east of the block below the player:
loop blocks from the loop-block to the block 10 north of the loop-block:
set loop-block-2 to any wool
loop {top-balances::*}:
loop-iteration <= 10
send "#%loop-iteration% %loop-index% has $%loop-value%"
loop shuffled (integers between 0 and 8):
if all:
previous loop-value = 1
loop-value = 4
next loop-value = 8
then:
kill all players
Patterns: |
|
Since: | 2.7 |
Requirements: | MC 1.16+ |
Return Type: | Item |
Examples:
chance of %10
add 64 diamonds to loot
send "You hit the jackpot!!"
Patterns: |
|
Since: | 2.10 |
Return Type: | Loot Context |
Examples:
broadcast loot context
Patterns: |
|
Since: | 2.10 |
Return Type: | Location |
Examples:
set {_context} to a loot context at player:
if {_player} is in "world_nether":
set loot location to location of last spawned pig
send loot location of {_context} to player
Patterns: | |
Since: | 2.10 |
Return Type: | Loot Table |
Setting the loot table of a block will update the block state, and once opened will generate loot of the specified loot table. Please note that doing so may cause warnings in the console due to over-filling the chest.
Please note that resetting/deleting the loot table of an ENTITY will reset the entity's loot table to its default.
Examples:
# this will set the loot table of the entity to a ghast's loot table, thus dropping ghast tears and gunpowder
set loot table of event-block to "minecraft:chests/simple_dungeon"
Patterns: |
|
Since: | 2.10 |
Return Type: | Loot Table |
Examples:
Patterns: |
|
Since: | 2.10 |
Return Type: | Item |
Examples:
# this will set {_items::*} to the items that would be dropped from the simple dungeon loot table with the given loot context
give player loot items of entity's loot table with loot context {_context}
# this will give the player the items that the entity would drop with the given loot context
Patterns: |
|
Since: | 2.10 |
Return Type: | Entity |
Examples:
set {_context} to a loot context at player:
set loot luck value to 10
set looter to player
set looted entity to last spawned pig
Patterns: |
|
Since: | 2.10 |
Return Type: | Player |
Examples:
set {_context} to a loot context at player:
set loot luck value to 10
set looter to player
set looted entity to last spawned pig
Patterns: |
|
Since: | 2.1 |
Return Type: | Text |
Examples:
Patterns: |
|
Since: | 2.10 |
Return Type: | Timespan |
Only works on animals that can be bred and returns '0 seconds' for animals that can't be bred.
Examples:
send "%event-entity% has been in love for %love time of event-entity% more than you!" to player
Patterns: | |
Since: | 2.2-dev34, 2.9.0 (lowest solid block, 'non-air' option removed, additional syntax option) |
Return Type: | Block |
Note that the y-coordinate of the location is not taken into account for this expression.
Examples:
set the highest solid block at the player's location to the lowest solid block at the player's location
Patterns: |
|
Since: | 2.10 |
Return Type: | float |
Examples:
set {_context} to a loot context at player:
set loot luck value to 10
set looter to player
set looted entity to last spawned pig
Patterns: |
|
Since: | 2.3 |
Return Type: | Text |
'default MOTD' returns the default MOTD always and can't be changed.
Examples:
set the motd to "Join now!"
Patterns: |
|
Since: | 2.5, 2.9.0 (change) |
Requirements: | Minecraft 1.20.5+ (custom amount) |
Return Type: | integer |
Note: 'delete' will remove the max durability from the item (making it a non-damageable item). Delete requires Paper 1.21+
Examples:
if max durability of player's tool is not 0: # Item is damageable
set max durability of player's tool to 5000
add 5 to max durability of player's tool
reset max durability of player's tool
delete max durability of player's tool
Patterns: |
|
Since: | 2.0 |
Usable in events: | damage, death |
Return Type: | Number |
Examples:
set the maximum health of the player to 100
spawn a giant
set the last spawned entity's max health to 1000
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper |
Return Type: | Timespan |
Some items, like bows and shields, do not have a limit to their use. They will return 1 hour.
Examples:
broadcast max usage duration of player's tool
Patterns: |
|
Since: | 2.3, 2.7 (modify max real players) |
Requirements: | Paper 1.16+ (modify max real players) |
Return Type: | integer |
'real max players' returns the real count of max players of the server and can be modified on Paper 1.16 or later.
Examples:
set the max players count to (online players count + 1)
Patterns: | |
Since: | 2.7 |
Return Type: | Timespan |
Examples:
send "you're about to freeze!" to the player
Patterns: |
|
Since: | 2.1, 2.10 (changeable, inventories) |
Requirements: | Spigot 1.20.5+ (changeable) |
Return Type: | integer |
In 1.20.5+, the maximum stack size of items can be changed to any integer from 1 to 99, and stacked up to the maximum stack size of the inventory they're in.
Examples:
set the maximum stack size of inventory of all players to 16
add 8 to the maximum stack size of player's tool
reset the maximum stack size of {_gui}
Patterns: |
|
Since: | 2.1.1 |
Return Type: | Player |
Examples:
!kick myself
!give a diamond axe to me
Patterns: |
|
Since: | 2.5.1 |
Return Type: | long |
Modifying the repair amount will affect how much experience is given to the player after mending.
Examples:
set the mending repair amount to 100
Patterns: |
|
Since: | 1.4.6 (chat message), 1.4.9 (join & quit messages), 2.0 (death message), 2.9.0 (clear message), 2.10 (broadcasted message) |
Usable in events: | chat, join, quit, death, broadcast |
Return Type: | Text |
Examples:
player has permission "admin"
set message to "&c%message%"
on first join:
set join message to "Welcome %player% to our awesome server!"
on join:
player has played before
set join message to "Welcome back, %player%!"
on quit:
if {vanish::%player's uuid%} is set:
clear quit message
else:
set quit message to "%player% left this awesome server!"
on death:
set the death message to "%player% died!"
on broadcast:
set broadcast message to "&a[BROADCAST] %broadcast message%"
Patterns: |
|
Since: | 2.2-dev36, 2.10 (add, remove) |
Return Type: | Object |
Examples:
broadcast "%metadata value ""healer"" of player%"
clear metadata value "healer" of player
Patterns: | |
Since: | 2.6.1 |
Return Type: | Location |
Examples:
executable by: players
trigger:
teleport player to the center of player's location
send "You're no longer stuck."
Patterns: | |
Since: | 2.5.1 |
Return Type: | Vector |
Examples:
set derailed velocity of event-entity to vector 2, 10, 2
Patterns: |
|
Since: | 2.0, 2.5 (offline players) |
Requirements: | Vault, an economy plugin that supports Vault |
Return Type: | Money |
Examples:
remove 20$ from the player's balance # replace '$' by whatever currency you use
add 200 to the player's account # or omit the currency altogether
Patterns: | |
Since: | 2.7 |
Requirements: | Paper 1.16+ |
Return Type: | Moon Phase |
Examples:
send "Watch for the wolves!"
Patterns: |
|
Since: | 2.2-dev27 |
Return Type: | Block |
Examples:
Patterns: |
|
Since: | before 2.1, 2.2-dev20 (inventory name), 2.4 (non-living entity support, changeable inventory name), 2.7 (worlds) |
Return Type: | Text |
- Players
- Name: The Minecraft account name of the player. Can't be changed, but 'display name' can be changed.
- Display Name: The name of the player that is displayed in messages. This name can be changed freely and can include color codes, and is shared among all plugins (e.g. chat plugins will use the display name).
- Entities
- Name: The custom name of the entity. Can be changed. But for living entities, the players will have to target the entity to see its name tag. For non-living entities, the name will not be visible at all. To prevent this, use 'display name'.
- Display Name: The custom name of the entity. Can be changed, which will also enable custom name visibility of the entity so name tag of the entity will be visible always.
- Items
- Name and Display Name: The custom name of the item (not the Minecraft locale name). Can be changed.
- Inventories
- Name and Display Name: The name/title of the inventory. Changing name of an inventory means opening the same inventory with the same contents but with a different name to its current viewers.
- Gamerules (1.13+)
- Name: The name of the gamerule. Cannot be changed.
- Worlds
- Name: The name of the world. Cannot be changed.
- Scripts
- Name: The name of a script, excluding its file extension.
Examples:
player has permission "name.red"
set the player's display name to "<red>[admin] <gold>%name of player%"
set the player's tab list name to "<green>%player's name%"
set the name of the player's tool to "Legendary Sword of Awesomeness"
Patterns: |
|
Since: | before 2.1, 2.2-dev20 (inventory name), 2.4 (non-living entity support, changeable inventory name), 2.7 (worlds) |
Return Type: | Text |
- Players
- Name: The Minecraft account name of the player. Can't be changed, but 'display name' can be changed.
- Display Name: The name of the player that is displayed in messages. This name can be changed freely and can include color codes, and is shared among all plugins (e.g. chat plugins will use the display name).
- Entities
- Name: The custom name of the entity. Can be changed. But for living entities, the players will have to target the entity to see its name tag. For non-living entities, the name will not be visible at all. To prevent this, use 'display name'.
- Display Name: The custom name of the entity. Can be changed, which will also enable custom name visibility of the entity so name tag of the entity will be visible always.
- Items
- Name and Display Name: The custom name of the item (not the Minecraft locale name). Can be changed.
- Inventories
- Name and Display Name: The name/title of the inventory. Changing name of an inventory means opening the same inventory with the same contents but with a different name to its current viewers.
- Gamerules (1.13+)
- Name: The name of the gamerule. Cannot be changed.
- Worlds
- Name: The name of the world. Cannot be changed.
- Scripts
- Name: The name of a script, excluding its file extension.
Examples:
player has permission "name.red"
set the player's display name to "<red>[admin] <gold>%name of player%"
set the player's tab list name to "<green>%player's name%"
set the name of the player's tool to "Legendary Sword of Awesomeness"
Patterns: | |
Since: | before 2.1, 2.2-dev20 (inventory name), 2.4 (non-living entity support, changeable inventory name), 2.7 (worlds) |
Return Type: | Text |
- Players
- Name: The Minecraft account name of the player. Can't be changed, but 'display name' can be changed.
- Display Name: The name of the player that is displayed in messages. This name can be changed freely and can include color codes, and is shared among all plugins (e.g. chat plugins will use the display name).
- Entities
- Name: The custom name of the entity. Can be changed. But for living entities, the players will have to target the entity to see its name tag. For non-living entities, the name will not be visible at all. To prevent this, use 'display name'.
- Display Name: The custom name of the entity. Can be changed, which will also enable custom name visibility of the entity so name tag of the entity will be visible always.
- Items
- Name and Display Name: The custom name of the item (not the Minecraft locale name). Can be changed.
- Inventories
- Name and Display Name: The name/title of the inventory. Changing name of an inventory means opening the same inventory with the same contents but with a different name to its current viewers.
- Gamerules (1.13+)
- Name: The name of the gamerule. Cannot be changed.
- Worlds
- Name: The name of the world. Cannot be changed.
- Scripts
- Name: The name of a script, excluding its file extension.
Examples:
player has permission "name.red"
set the player's display name to "<red>[admin] <gold>%name of player%"
set the player's tab list name to "<green>%player's name%"
set the name of the player's tool to "Legendary Sword of Awesomeness"
Patterns: |
|
Since: | 2.0, 2.2-dev34 (inventories) |
Return Type: | Object |
set name of <item/inventory> to <text>
. Examples:
set tool of player to the player's tool named "<gold>Wand"
set the name of the player's tool to "<gold>Wand"
open hopper inventory named "Magic Hopper" to player
Patterns: |
|
Since: | 2.7 |
Return Type: | Entity |
Examples:
teleport player to the nearest cow relative to player
teleport player to the nearest entity relative to player
on click:
kill nearest pig
Patterns: |
|
Since: | 2.5 |
Return Type: | Text |
Examples:
Patterns: |
|
Since: | 2.5 |
Return Type: | long |
Examples:
set victim's invulnerability ticks to 20 #Victim will not take damage for the next second
Patterns: | |
Since: | 2.10 |
Return Type: | Node |
Nodes in Skript configs are written in the format `key: value`.
Section nodes can contain other nodes.
Examples:
set {_script} to the current script loop nodes of the current script: broadcast name of loop-value
Patterns: |
|
Since: | 1.4 |
Return Type: | Date |
Examples:
Patterns: | |
Since: | 2.5 |
Return Type: | long |
Examples:
on chat:
if number of uppercase chars in message / length of message > 0.5
cancel event
send "<red>Your message has to many caps!" to player
Patterns: | |
Since: | 1.4.6 (integers & numbers), 2.5.1 (decimals) |
Return Type: | Number |
Use 'numbers' if your start is not an integer and you want to keep the fractional part of the start number constant, or use 'integers' if you only want to loop integers.
You may also use 'decimals' if you want to use the decimal precision of the start number.
You may want to use the 'times' expression instead, for instance 'loop 5 times:'
Examples:
loop integers from 2.9 to 5.1: # same as '3 to 5', i.e. loops 3, 4, 5
loop decimals from 3.94 to 4: # loops 3.94, 3.95, 3.96, 3.97, 3.98, 3.99, 4
Patterns: |
|
Since: | 2.2-dev35 |
Return Type: | Offline Player |
Examples:
Patterns: |
|
Since: | 2.3 |
Requirements: | Paper (fake count) |
Return Type: | long |
real online player count
always return the real count of online players and can't be changed. Examples:
# This will make the max players count 5 if there are 4 players online.
set the fake max players count to (online player count + 1)
Patterns: | |
Since: | 2.2-dev24, 2.2-dev35 (Just 'current inventory' works in player events) |
Return Type: | Inventory |
If no inventory is open, it returns the own player's crafting inventory.
Examples:
Patterns: | |
Since: | 2.0 |
Return Type: | Object |
This expression can be used in two different ways: One which parses the entire text as a single instance of a type, e.g. as a number, and one that parses the text according to a pattern.
If the given text could not be parsed, this expression will return nothing and the parse error will be set if some information is available.
Some notes about parsing with a pattern:
- The pattern must be a Skript pattern, e.g. percent signs are used to define where to parse which types, e.g. put a %number% or %items% in the pattern if you expect a number or some items there.
- You have to save the expression's value in a list variable, e.g.
set {parsed::*} to message parsed as "..."
.- The list variable will contain the parsed values from all %types% in the pattern in order. If a type was plural, e.g. %items%, the variable's value at the respective index will be a list variable, e.g. the values will be stored in {parsed::1::*}, not {parsed::1}.
Examples:
on chat:
set {var::*} to message parsed as "buying %items% for %money%"
if parse error is set:
message "%parse error%"
else if {var::*} is set:
cancel event
remove {var::2} from the player's balance
give {var::1::*} to the player
Patterns: |
|
Since: | 2.0 |
Return Type: | Text |
Examples:
if {var} is not set:
parse error is set:
message "<red>Line 1 is invalid: %last parse error%"
else:
message "<red>Please put an integer on line 1!"
Patterns: | |
Since: | 2.0, 2.2-dev26 (Multiple passengers for 1.11.2+) |
Return Type: | Entity |
For 1.11.2 and above, it returns a list of passengers and you can use all changers in it.
See also: vehicle
Examples:
passenger of the minecart is a creeper or a cow
the saddled pig's passenger is a player
#for 1.11.2+
passengers of the minecart contains a creeper or a cow
the boat's passenger contains a pig
add a cow and a zombie to passengers of last spawned boat
set passengers of player's vehicle to a pig and a horse
remove all pigs from player's vehicle
clear passengers of boat
Patterns: | |
Since: | 2.8.0 |
Return Type: | Number |
Examples:
set damage to 125 percent of damage
set {_result} to {_percent} percent of 999
set {_result::*} to 10% of {_numbers::*}
set experience to 50% of player's total experience
Patterns: |
|
Since: | 2.7 |
Return Type: | double |
Examples:
Patterns: | |
Since: | 2.2-dev36 |
Return Type: | long |
Examples:
trigger:
send "%arg-1%'s ping is %arg-1's ping%"
Patterns: |
|
Since: | 2.6 |
Return Type: | Item Type |
Examples:
send "You are holding a plain diamond!"
Patterns: | |
Since: | 2.10 |
Requirements: | Spigot 1.19+ |
Return Type: | Text |
This expression will not return anything due to Bukkit limitations.
Examples:
remove "text" from {_p}'s chat completions
clear player's chat completions
Patterns: | |
Since: | 2.6.2 |
Requirements: | Paper 1.12.2 or newer |
Return Type: | integer |
Examples:
trigger:
send "Protocol version of %arg-1%: %protocol version of arg-1%"
Patterns: |
|
Since: | 2.0 |
Return Type: | Item Type |
Examples:
set the block at the entity to the entity's skull
Patterns: | |
Since: | 2.2-dev34 |
Return Type: | Weather Type |
Examples:
reset player's weather
if arg-player's weather is rainy
Patterns: |
|
Since: | 2.4 |
Usable in events: | portal_create |
Return Type: | Block |
Examples:
loop portal blocks:
broadcast "%loop-block% is part of a portal!"
Patterns: | |
Since: | 2.8.0 |
Return Type: | Timespan |
Players in survival/adventure get a cooldown of 0.5 seconds, while those in creative get no cooldown.
Resetting will set the cooldown back to the default 15 seconds for non-player entities and 0.5 seconds for players.
Examples:
wait 1 tick
set portal cooldown of event-entity to 5 seconds
Patterns: |
|
Since: | 2.5.2 |
Return Type: | Potion Effect |
to tipped arrows/lingering potions, Minecraft reduces the timespan.
Examples:
add {_p} to potion effects of player's tool
add {_p} to potion effects of target entity
add potion effect of speed 1 to potion effects of player
Patterns: |
|
Since: | 2.7 |
Return Type: | integer |
Examples:
Patterns: |
|
Since: | 2.5.2 |
Return Type: | Potion Effect |
You can clear all potion effects of an entity/itemtype and add/remove a potion effect/type to/from an entity/itemtype.
Do note you will not be able to clear the base potion effects of a potion item. In that case, just set the item to a water bottle.
When adding a potion effect type (rather than a potion effect), it will default to 15 seconds with tier 1.
Examples:
clear all the potion effects of player
clear all the potion effects of player's tool
add potion effects of player to potion effects of player's tool
add speed to potion effects of target entity
remove speed and night vision from potion effects of player
Patterns: | |
Since: | 2.0, 2.10 (delete) |
Requirements: | Vault, a chat plugin that supports Vault |
Return Type: | Text |
Examples:
cancel event
broadcast "%player's prefix%%player's display name%%player's suffix%: %message%" to the player's world
set the player's prefix to "[<red>Admin<reset>] "
clear player's prefix
Patterns: |
|
Since: | 2.5.1 |
Return Type: | Boolean |
Examples:
event-projectile is an arrow
set projectile critical mode of event-projectile to true
Patterns: |
|
Since: | 2.3 |
Usable in events: | server list ping |
Requirements: | Paper 1.12.2 or newer |
Return Type: | long |
If this protocol version doesn't match with the protocol version of the client, the client will see the version string.
But please note that, this expression has no visual effect over the version string. For example if the server uses PaperSpigot 1.12.2, and you make the protocol version 107 (1.9),
the version string will not be "Paper 1.9", it will still be "Paper 1.12.2".
But then you can customize the version string as you wish.
Also if the protocol version of the player is higher than protocol version of the server, it will say
"Server out of date!", and if vice-versa "Client out of date!" when you hover on the ping bars.
This can be set in a server list ping event only
(increase and decrease effects cannot be used because that wouldn't make sense).
Examples:
set the version string to "<light green>Version: <orange>%minecraft version%"
set the protocol version to 0 # 13w41a (1.7) - so the player will see the custom version string almost always
Patterns: |
|
Since: | 2.10 (experimental) |
Return Type: | Queue |
using queues
experimental feature flag to be enabled.Creates a new queue. A queue is a set of elements that can have things removed from the start and added to the end.
Any value can be added to a queue. Adding a non-existent value (e.g. `{variable that isn't set}`) will have no effect. This means that removing an element from the queue will always return a value unless the queue is empty.
Requesting an element from a queue (e.g. `the 1st element of {queue}`) also removes it from the queue.
Examples:
set {queue} to a new queue of "hello" and "there" broadcast the last element of {queue} # removes 'there' add "world" to {queue} broadcast the first 2 elements of {queue} # removes 'hello', 'world'
Patterns: | |
Since: | 2.10 (experimental) |
Return Type: | Object |
using queues
experimental feature flag to be enabled.The first or last element in a queue. Asking for this does not remove the element from the queue.
This is designed for use with the add
changer: to add or remove elements from the start or the end of the queue.
Examples:
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper 1.16.5+ |
Return Type: | Quit Reason |
Examples:
quit reason was kicked
player is banned
clear {server::player::%uuid of player%::*}
Patterns: | |
Since: | 2.8.0 |
Return Type: | Text |
This expression uses the Unicode numerical code of a character to determine which characters are between the two given characters.
If strings of more than one character are given, only the first character of each is used.
Examples:
send 3 random alphanumeric characters between "0" and "z"
Patterns: | |
Since: | 1.4, 2.10 (Multiple random numbers) |
Return Type: | Number |
Please note that the order of the numbers doesn't matter, i.e.
random number between 2 and 1
will work as well as random number between 1 and 2
. Examples:
send "You rolled a %random integer from 1 to 6%!" to the player
set {_chances::*} to 5 random integers between 5 and 96
set {_decimals::*} to 3 random numbers between 2.7 and -1.5
Patterns: |
|
Since: | 2.5.1 |
Return Type: | Text |
Examples:
Patterns: |
|
Since: | unknown (2.2) |
Return Type: | Text |
Examples:
Patterns: |
|
Since: | 2.8.0 |
Usable in events: | ready arrow |
Return Type: | Item |
Examples:
selected bow's name is "Spectral Bow"
if selected arrow is not a spectral arrow:
cancel event
Patterns: | |
Since: | 2.1 |
Requirements: | Supported regions plugin |
Return Type: | Offline Player |
This expression requires a supported regions plugin to be installed.
Examples:
message "You're entering %region% whose owners are %owners of region%"
Patterns: | |
Since: | 2.1 |
Requirements: | Supported regions plugin |
Return Type: | Region |
This expression requires a supported regions plugin to be installed.
Examples:
line 1 of the clicked block is "[region info]"
set {_regions::*} to regions at the clicked block
if {_regions::*} is empty:
message "No regions exist at this sign."
else:
message "Regions containing this sign: <gold>%{_regions::*}%<r>."
Patterns: |
|
Since: | 2.0 |
Return Type: | Timespan |
Examples:
send "hurry, get to the surface!" to the player
Patterns: | |
Since: | 2.9.0 |
Requirements: | Spigot 1.19.4+ |
Return Type: | Timespan |
A bell will start resonating five game ticks after being rung, and will continue to resonate for 40 game ticks.
Examples:
Patterns: |
|
Since: | 2.2-dev35 |
Return Type: | Location |
Examples:
set respawn location to {example::spawn}
Patterns: |
|
Since: | 2.10 |
Return Type: | Object |
If the thing is expected to return multiple values, use 'results' instead of 'result'.
Examples:
set {_result} to the result of {_function}
set {_list::*} to the results of {_function}
set {_result} to the result of {_function} with arguments 13 and true
Patterns: |
|
Since: | 2.10 |
Return Type: | Object |
Vectors can only be rotated around the global X/Y/Z axes, or an arbitrary vector axis.
Quaternions are more flexible, allowing rotation around the global or local X/Y/Z axes, arbitrary vectors, or all 3 local axes at once.
Global axes are the ones in the Minecraft world. Local axes are relative to how the quaternion is already oriented.
Note that rotating a quaternion around a vector results in a rotation around the local vector, so results may not be what you expect. For example, rotating around vector(1, 0, 0) is the same as rotating around the local X axis.
The same applies to rotations by all three axes at once. In addition, rotating around all three axes of a quaternion/display at once will rotate in ZYX order, meaning the Z rotation will be applied first and the X rotation last.
Examples:
set {_new} to {_vector} rotated around vector(1, 1, 1) by 45
set {_new} to {_quaternion} rotated by x 45, y 90, z 135
Patterns: |
|
Since: | 2.10 |
Return Type: | Object |
All quaternions can be represented by a rotation of some amount around some axis, so this expression provides the ability to get that angle/axis.
Examples:
send rotation axis of {_quaternion} # 1, 2, 3
send rotation angle of {_quaternion} # 45
set rotation angle of {_quaternion} to 135
set rotation axis of {_quaternion} to vector(0, 1, 0)
Patterns: | |
Since: | 2.0 |
Return Type: | long |
Examples:
set line 1 of the block to rounded "%(1.5 * player's level)%"
add rounded down argument to the player's health
Patterns: | |
Since: | 2.2-Fixes-v10, 2.2-dev35 (fully modifiable), 2.6.2 (syntax pattern changed) |
Return Type: | Number |
Examples:
Patterns: | |
Since: | 2.3 |
Return Type: | Text |
So this is a Minecraft related thing, not Bukkit, so the tags will not get removed when the server stops. You can visit visit Minecraft Wiki for more info.
This is changeable and valid for any type of entity. Also you can use use the Has Scoreboard Tag condition to check whether an entity has the given tags.
Requires Minecraft 1.11+ (actually added in 1.9 to the game, but added in 1.11 to Spigot).
Examples:
if the spawn reason is mob spawner:
add "spawned by a spawner" to the scoreboard tags of event-entity
on death of a monster:
if the attacker is a player:
if the victim doesn't have the scoreboard tag "spawned by a spawner":
add 1$ to attacker's balance
Patterns: | |
Since: | 2.0 |
Return Type: | Script |
If the script is enabled or disabled (or reloaded) this reference will become invalid.
Therefore, it is recommended to obtain a script reference when needed.
Examples:
broadcast "Loaded %the current script%"
on script load:
set {running::%script%} to true
on script unload:
set {running::%script%} to false
set {script} to the script named "weather.sk"
loop the scripts in directory "quests/":
enable loop-value
Patterns: | |
Since: | 2.7 |
Return Type: | integer |
Examples:
type of block is sea pickle
send "Wow! This stack of sea pickles contained %event-block's sea pickle count% pickles!"
send "It could've contained a maximum of %event-block's maximum sea pickle count% pickles!"
send "It had to have contained at least %event-block's minimum sea pickle count% pickles!"
cancel event
set event-block's sea pickle count to event-block's maximum sea pickle count
send "This bad boy is going to hold so many pickles now!!"
Patterns: | |
Since: | 2.10 |
Return Type: | long |
Examples:
set loot table seed of entity to 123456789
Patterns: |
|
Since: | 2.8.0 |
Usable in events: | send command list |
Return Type: | Text |
Modifications will affect what commands show up for the player to tab complete. They will not affect what commands the player can actually run.
Adding new commands to the list is illegal behavior and will be ignored.
Examples:
set command list to command list where [input does not contain ":"]
remove "help" from command list
Patterns: |
|
Since: | 2.3 |
Requirements: | Paper 1.12.2 or newer |
Return Type: | Server Icon |
load server icon effect,
or can be reset to the default icon in a server list ping.
'default server icon' returns the default server icon (server-icon.png) always and cannot be changed.
Examples:
set {server-icons::default} to the default server icon
Patterns: |
|
Since: | 1.3.7 |
Return Type: | Living Entity |
Examples:
Patterns: | |
Since: | 1.3 |
Return Type: | Text |
Examples:
line 2 of the clicked block is "[Heal]":
heal the player
set line 3 to "%player%"
Patterns: |
|
Since: | 2.9.0, 2.10 (of items) |
Return Type: | Offline Player |
Examples:
set skull owner of {_block} to "Njol" parsed as offlineplayer
set head owner of player's tool to {_player}
Patterns: | |
Since: | 2.2-dev35, 2.8.0 (raw index) |
Return Type: | long |
Raw index of slot is unique for the view, see Minecraft Wiki
Examples:
send "You bought a pie!"
if display name of player's top inventory is "Custom Menu": # 3 rows inventory
if raw index of event-slot > 27: # outside custom inventory
cancel event
Patterns: |
|
Since: | 2.10 |
Requirements: | Minecraft 1.20.2+, Minecraft 1.20.5+ (comparisons) |
Return Type: | Entity Snapshot |
Examples:
broadcast the spawn egg entity of {_item}
spawn a pig at location(0,0,0):
set the max health of entity to 20
set the health of entity to 20
set {_snapshot} to the entity snapshot of entity
clear entity
set the spawn egg entity of {_item} to {_snapshot}
if the spawn egg entity of {_item} is {_snapshot}: # Minecraft 1.20.5+
set the spawn egg entity of {_item} to (random element out of all entities)
set the spawn egg entity of {_item} to a zombie
Patterns: |
|
Since: | 2.3 |
Return Type: | Spawn Reason |
Examples:
spawn reason is reinforcements or breeding
cancel event
Patterns: | |
Since: | 2.4, 2.9.2 (trial spawner) |
Return Type: | Entity Type |
Examples:
if event-block is spawner:
send "Spawner's type is %target block's entity type%"
Patterns: |
|
Since: | 2.2-dev32d |
Return Type: | Number |
Examples:
Patterns: | |
Since: | 2.4-alpha4, 2.7 (Paper Spectator Event) |
Requirements: | Paper |
Return Type: | Entity |
Examples:
message "&c%spectator target% currently has %{game::kills::%spectator target%}% kills!" to the player
on player stop spectating:
past spectator target was a zombie
set spectator target to the nearest skeleton
Patterns: | |
Since: | unknown (before 2.1) |
Return Type: | Number |
Please note that changing a player's speed will change their FOV just like potions do.
Examples:
increase the argument's fly speed by 0.1
Patterns: |
|
Since: | 2.1, 2.5.2 (character at, multiple strings support) |
Return Type: | Text |
Examples:
message "%subtext of {_s} from characters 2 to (the length of {_s} - 1)%" # removes the first and last character from {_s} and sends it to the player or console
set {_characters::*} to characters at 1, 2 and 7 in player's display name
send the last character of all players' names
Patterns: |
|
Since: | 2.2-dev36 |
Return Type: | Number |
Examples:
Patterns: |
|
Since: | 2.10 |
Requirements: | Paper (paper tags) |
Return Type: | Minecraft Tag |
Tags are composed of a value and an optional namespace: "minecraft:oak_logs".
If you omit the namespace, one will be provided for you, depending on what kind of tag you're using. For example, `tag "doors"` will be the tag "minecraft:doors", while `paper tag "doors"` will be "paper:doors".
`minecraft tag` will search through the vanilla tags, `datapack tag` will search for datapack-provided tags (a namespace is required here!), `paper tag` will search for Paper's custom tags if you are running Paper, and `custom tag` will look in the "skript" namespace for custom tags you've registered.
You can also filter by tag types using "item", "block", or "entity".
Examples:
paper tag "doors" # paper:doors
tag "skript:custom_dirt" # skript:custom_dirt
custom tag "dirt" # skript:dirt
datapack block tag "dirt" # minecraft:dirt
datapack tag "my_pack:custom_dirt" # my_pack:custom_dirt
tag "minecraft:mineable/pickaxe" # minecraft:mineable/pickaxe
custom item tag "blood_magic_sk/can_sacrifice_with" # skript:blood_magic_sk/can_sacrifice_with
Patterns: |
|
Since: | 2.10 |
Return Type: | Text |
Examples:
if the key of {_my-tag} is "minecraft:stone":
return true
Patterns: |
|
Since: | 2.10 |
Return Type: | Object |
For item and block tags, this will return items. For entity tags, it will return entity datas (a creeper, a zombie).
Examples:
broadcast (first element of player's tool's block tags)'s tag contents
Patterns: |
|
Since: | 2.10 |
Requirements: | Paper (paper tags) |
Return Type: | Minecraft Tag |
`minecraft tag` will return only the vanilla tags, `datapack tag` will return only datapack-provided tags, `paper tag` will return only Paper's custom tags (if you are running Paper), and `custom tag` will look in the "skript" namespace for custom tags you've registered.
You can also filter by tag types using "item", "block", or "entity".
Examples:
send true if paper item tags of target block contains paper tag "doors"
broadcast the block tags of player's tool
Patterns: |
|
Since: | 2.2-dev25 |
Return Type: | Player |
Examples:
if the tamer is a player:
send "someone tamed something!" to console
Patterns: |
|
Since: | 1.4.2, 2.7 (Reset), 2.8.0 (ignore blocks) |
Return Type: | Entity |
For mobs and experience orbs this is the entity they are attacking/following (if any).
Display entities have a hit box of 0, so you should use 'target display' to collect Display entities
May grab entities in unloaded chunks.
Examples:
if entity's target is a player:
send "You're being followed by an %entity%!" to target of entity
reset target of entity # Makes the entity target-less
delete targeted entity of player # for players it will delete the target
delete target of last spawned zombie # for entities it will make them target-less
Patterns: |
|
Since: | 1.0, 2.9.0 (actual/exact) |
Return Type: | Block |
The actual target block will regard the actual hit box of the block.
Examples:
set target block of player to oak_stairs[waterlogged=true]
break target block of player using player's tool
give player 1 of type of target block
teleport player to location above target block
kill all entities in radius 3 around target block of player
set {_block} to actual target block of player
break actual target block of player
Patterns: |
|
Since: | 2.2-dev35 |
Return Type: | Teleport Cause |
Examples:
teleport cause is nether portal, end portal or end gateway
cancel event
Patterns: | |
Since: | 2.10 |
Return Type: | Display Text Alignment |
Examples:
Patterns: | |
Since: | 2.10 |
Return Type: | integer |
Examples:
Patterns: | |
Since: | 2.10 |
Return Type: | byte |
Values are between -127 and 127. The value of 127 represents it being completely opaque.
Examples:
Patterns: | |
Since: | 2.10 |
Return Type: | Text |
Note that currently you can only use Skript chat codes when running Paper.
Examples:
Patterns: |
|
Since: | 2.7 |
Usable in events: | Egg Throw |
Return Type: | Projectile |
Examples:
Patterns: | |
Since: | 1.0 |
Return Type: | Time |
Use the "minecraft timespan" syntax to change the time according to Minecraft's time intervals.
Since Minecraft uses discrete intervals for time (ticks), changing the time by real-world minutes or real-world seconds only changes it approximately.
Removing an amount of time from a world's time will move the clock forward a day.
Examples:
add 2 minecraft hours to time of world "world"
add 54 real seconds to time of world "world" # approximately 1 minecraft hour
Patterns: |
|
Since: | 2.5, 2.7 (offline players) |
Requirements: | MC 1.15+ (offline players) |
Return Type: | Timespan |
Using this expression on offline players on Minecraft 1.14 and below will return nothing
<none>
. Examples:
if player's time played is greater than 10 minutes:
give player a diamond sword
set player's time played to 0 seconds
Patterns: | |
Since: | 2.5, 2.10 (time until) |
Return Type: | Timespan |
This expression will return 0 seconds if the time since or time until would be negative, e.g. if one tries to get the time since a future date.
Examples:
send "%time until {countdown::end}% until the game begins!" to player
Patterns: |
|
Since: | 2.9.0 |
Return Type: | long |
Examples:
send "It has been %days of {_t}% day(s) since last payout."
Patterns: |
|
Since: | 1.0 |
Return Type: | Slot |
Examples:
player's off hand tool is a shield
set tool of all players to a diamond sword
set offhand tool of target entity to a bow
Patterns: | |
Since: | 2.7 |
Return Type: | integer |
Adding to a player's experience will trigger Mending, but setting their experience will not.
Examples:
add 100 to player's experience
if player's total experience is greater than 100:
set player's total experience to 0
give player 1 diamond
Patterns: |
|
Since: | 2.8.0 |
Return Type: | Transform Reason |
Examples:
transform reason is infection, drowned or frozen
Patterns: | |
Since: | 2.10 |
Return Type: | Object |
Indices cannot be retained with this expression. To retain indices, see the transform effect.
Examples:
# {_a::*} is now 1, 2, 3, 4, 5, and 6
# get a list of the sizes of all clans without manually looping
set {_clan-sizes::*} to indices of {clans::*} transformed using [{clans::%input%::size}]
Patterns: |
|
Since: | 1.4, 2.5.2 (potion effect), 2.7 (block datas) |
Return Type: | Object |
Types of items, blocks and block datas are item types similar to them but have amounts
of one, no display names and, on Minecraft 1.13 and newer versions, are undamaged.
Types of entities and inventories are entity types and inventory types known to Skript.
Types of potion effects are potion effect types.
Examples:
message "This is a %type of clicked entity%!"
Patterns: |
|
Since: | 2.1.2, 2.2 (offline players' UUIDs), 2.2-dev24 (other entities' UUIDs) |
Return Type: | Text |
In the future there will be an option to use a player's UUID instead of the name in variable names (i.e. when %player% is used), but for now this can be used.
Please note that this expression does not work for offline players if you are under 1.8!
Examples:
# who has played on this server at least once since this script has been added
on login:
if {uuid::%name of player%} exists:
{uuid::%name of player%} is not uuid of player
kick player due to "Someone with your name has played on this server before"
else:
set {uuid::%name of player%} to uuid of player
Patterns: |
|
Since: | 2.2-dev13b, 2.9.0 (breakable) |
Return Type: | Item Type |
Examples:
give breakable {_weapon} to all players
Patterns: |
|
Since: | 2.10 |
Usable in events: | Unleash |
Return Type: | Unleash Reason |
Examples:
broadcast "The leash was snapped in half."
Patterns: | |
Since: | 2.10 |
Return Type: | Object |
The value is automatically converted to the specified type (e.g. text, number) where possible.
Examples:
set {_node} to node "update check interval" in the skript config broadcast text value of {_node} # text value of {_node} = "12 hours" (text) wait for {_node}'s timespan value # timespan value of {_node} = 12 hours (duration)
Patterns: | |
Since: | 2.7 |
Return Type: | Object |
Examples:
delete entity within {_entity} # This deletes the entity itself and not the value stored in the variable
set {_list::*} to "something", 10, "test" and a zombie
broadcast the strings within {_list::*} # "something", "test"
Patterns: |
|
Since: | 2.2-dev28, 2.10 (quaternions) |
Return Type: | Number |
You cannot use the W component with vectors; it is for quaternions only.
Examples:
send "%x of {_v}%, %y of {_v}%, %z of {_v}%"
add 1 to x of {_v}
add 2 to y of {_v}
add 3 to z of {_v}
send "%x of {_v}%, %y of {_v}%, %z of {_v}%"
set x component of {_v} to 1
set y component of {_v} to 2
set z component of {_v} to 3
send "%x component of {_v}%, %y component of {_v}%, %z component of {_v}%"
Patterns: | |
Since: | 2.2-dev28 |
Return Type: | Location |
Examples:
set {_loc} to {_v} to location in world "world" with yaw 45 and pitch 90
set {_loc} to location of {_v} in "world" with yaw 45 and pitch 90
Patterns: |
|
Since: | 2.8.0 |
Return Type: | Vector |
Relative directions are relative to the origin, (0, 0, 0). Therefore, the vector from the direction 'forwards' is (0, 0, 1).
Examples:
set {_v} to vector in direction of player
set {_v} to vector in horizontal direction of player
set {_v} to vector from facing of player
set {_v::*} to vectors from north, south, east, and west
Patterns: | |
Since: | 2.2-dev28 |
Return Type: | Vector |
Examples:
set {_v} to cylindrical vector radius 1, yaw loop-value, height 2
set {_v} to cylindrical vector radius 1, yaw 90, height 2
Patterns: | |
Since: | 2.2-dev28 |
Return Type: | Number |
Examples:
set {_v} to vector 1, 2, 3
set standard length of {_v} to 2
send "%standard length of {_v}%"
Patterns: |
|
Since: | 2.2-dev28, 2.7 (signed components) |
Return Type: | Vector |
Examples:
Patterns: | |
Since: | 2.2-dev28 |
Return Type: | Vector |
Examples:
set {_v} to spherical vector radius 1, yaw loop-value, pitch loop-value
set {_v} to spherical vector radius 1, yaw 45, pitch 90
Patterns: |
|
Since: | 2.0 |
Return Type: | Text |
Examples:
message "This server is powered by Skript %skript version%"
Patterns: |
|
Since: | 2.3 |
Usable in events: | Server List Ping |
Requirements: | Paper 1.12.2+ |
Return Type: | Text |
This can only be set in a server list ping event.
Examples:
set the protocol version to 0 # 13w41a (1.7), so it will show the version string always
set the version string to "<light green>Version: <orange>%minecraft version%"
Patterns: | |
Since: | 2.4 |
Requirements: | Paper |
Return Type: | integer |
NOTE: This is the view distance sent by the server to the player.
This has nothing to do with client side view distance settings
NOTE: This may not work on some versions (such as MC 1.14.x).
The return value in this case will be the view distance set in system.properties.
Examples:
set {_view} to view distance of player
reset view distance of all players
add 2 to view distance of player
Patterns: | |
Since: | 2.5 |
Requirements: | 1.13.2+ |
Return Type: | long |
Examples:
set view distance of player to client view distance of player
Patterns: |
|
Since: | 2.10 |
Return Type: | Number |
The level will determine which trades are available to players (value between 1 and 5, defaults to 1).
When a villager's level is 1, they may lose their profession if they don't have a workstation.
Experience works along with the leveling system, determining which level the villager will move to.
Experience must be greater than or equal to 0.
Learn more about villager levels on Minecraft Wiki
Examples:
set villager level of last spawned villager to 2
add 1 to villager level of target entity
remove 1 from villager level of event-entity
reset villager level of event-entity
set villager experience of last spawned entity to 100
Patterns: |
|
Since: | 2.10 |
Return Type: | Villager Profession |
Examples:
villager profession of event-entity = nitwit profession
set villager profession of {_villager} to librarian profession
delete villager profession of event-entity
Patterns: |
|
Since: | 2.10 |
Return Type: | Villager Type |
Examples:
villager type of {_villager} = plains
set villager type of event-entity to plains
Patterns: | |
Since: | 1.0 |
Usable in events: | weather change |
Return Type: | Weather Type |
Examples:
weather in "world" is rainy
Patterns: |
|
Since: | 2.9.0 |
Return Type: | Boolean |
Examples:
broadcast "Flying: %whether player is flying%"
Patterns: |
|
Since: | 2.5.2, 2.9.0 (delete) |
Return Type: | Offline Player |
Players may be added and removed from the whitelist.
The whitelist can be enabled or disabled by setting the whitelist to true or false respectively.
Examples:
add all players to whitelist
reset the whitelist
Patterns: | |
Since: | 2.9.0 |
Requirements: | Spigot 1.20.5+ |
Return Type: | Item Type |
Examples:
equip player with netherite helmet without fire resistance
drop fire resistant stone at player
Patterns: | |
Since: | 1.0 |
Return Type: | World |
Examples:
teleport the player to the world's spawn
set the weather in the player's world to rain
set {_world} to world of event-chunk
Patterns: | |
Since: | 2.7 |
Return Type: | World Environment |
Examples:
apply fire resistance to player for 10 minutes
Patterns: |
|
Since: | 1.0 |
Return Type: | World |
Examples:
broadcast "You're in %loop-world%" to loop-world
Patterns: |
|
Since: | 1.2 |
Return Type: | Object |
Examples:
Patterns: | |
Since: | 2.0, 2.2-dev28 (vector yaw/pitch), 2.9.0 (entity changers) |
Requirements: | Paper 1.19+ (player changers) |
Return Type: | float |
A yaw of 0 or 360 represents the positive z direction. Adding a positive number to the yaw of a player will rotate it clockwise.
A pitch of 90 represents the negative y direction, or downward facing. A pitch of -90 represents upward facing. Adding a positive number to the pitch will rotate the direction downwards.
Only Paper 1.19+ users may directly change the yaw/pitch of players.
Examples:
set {_yaw} to yaw of player
set {_p} to pitch of target entity
set pitch of player to -90 # Makes the player look upwards, Paper 1.19+ only
add 180 to yaw of target of player # Makes the target look behind themselves
Patterns: |
|
Since: | 2.10 |
Usable in events: | Unleash |
Examples:
if player is not set:
prevent the leash from dropping
else if player is op:
allow the leash to drop
Patterns: |
|
Since: | 2.10 |
Examples:
allow aging of entity
Patterns: |
|
Since: | 2.10 |
Usable in events: | Fishing |
Examples:
apply lure enchantment bonus
Patterns: |
|
Since: | 1.4, 2.1.1 (ban reason), 2.5 (timespan), 2.9.0 (kick) |
If a reason is given, it will be shown to the player when they try to join the server while banned.
A length of ban may also be given to apply a temporary ban. If it is absent for any reason, a permanent ban will be used instead.
We recommend that you test your scripts so that no accidental permanent bans are applied.
Note that banning people does not kick them from the server.
You can optionally use 'and kick' or consider using the kick effect after applying a ban.
Examples:
ban "127.0.0.1"
IP-ban the player because "he is an idiot"
ban player due to "inappropriate language" for 2 days
ban and kick player due to "inappropriate language" for 2 days
Patterns: | |
Since: | 2.4 |
You can add a tool, which will spawn items based on how that tool would break the block
(ie: When using a hand to break stone, it drops nothing, whereas with a pickaxe it drops cobblestone)
Examples:
break clicked block naturally
loop blocks in radius 10 around player:
break loop-block using player's tool
loop blocks in radius 10 around player:
break loop-block naturally using diamond pickaxe
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper 1.16+ |
For example, interrupting eating, or drawing back a bow.
Examples:
if the victim's active tool is a bow:
interrupt the usage of the player's active item
Patterns: |
|
Since: | 2.2-dev34 |
Examples:
executable by: players
cooldown: 10 seconds
trigger:
if length of arg-1 is more than 16:
# Makes it so that invalid arguments don't make you wait for the cooldown again
cancel the cooldown
send "Your nickname may be at most 16 characters."
stop
set the player's display name to arg-1
Patterns: |
|
Since: | 2.4 |
Usable in events: | death, break / mine |
Requirements: | 1.12.2 or newer (cancelling item drops of blocks) |
Examples:
if name of the entity is "&cSpecial":
cancel drops of items
on break of a coal ore:
cancel the experience drops
Patterns: |
|
Since: | 1.0 |
Examples:
victim is a player
victim has the permission "skript.god"
cancel the event
Patterns: | |
Since: | 1.0 (set, add, remove, delete), 2.0 (remove all) |
Examples:
Set the player's display name to "<red>%name of player%"
set the block above the victim to lava
# add:
add 2 to the player's health # preferably use '<a href='#EffHealth'>heal</a>' for this
add argument to {blacklist::*}
give a diamond pickaxe of efficiency 5 to the player
increase the data value of the clicked block by 1
# remove:
remove 2 pickaxes from the victim
subtract 2.5 from {points::%uuid of player%}
# remove all:
remove every iron tool from the player
remove all minecarts from {entitylist::*}
# delete:
delete the block below the player
clear drops
delete {variable}
# reset:
reset walk speed of player
reset chunk at the targeted block
Patterns: |
|
Since: | 2.0, 2.2-dev26 (maps and potions) |
(red, green, blue)
, where (0,0,0)
is black and (255,255,255)
is white. Armor is colorable for all Minecraft versions. With Minecraft 1.11 or newer you can also color potions and maps. Note that the colors might not look exactly how you'd expect. Examples:
color the player's tool red
Patterns: |
|
Since: | 1.0, 2.8.0 (bungeecord command) |
If the command is a bungeecord side command, you can use the [bungeecord] option to execute command on the proxy.
Examples:
execute console command "/say Hello everyone!"
execute player bungeecord command "/alert &6Testing Announcement!"
Patterns: |
|
Since: | 2.10 |
Examples:
make command block {_block} unconditional if {_block} is conditional
Patterns: | |
Since: | 2.3, 2.10 (transfer) |
If the server is running Minecraft 1.20.5 or above, you may specify an IP and Port to transfer a player over to that server.
When transferring players using an IP, the transfer will not complete if the `accepts-transfers` option isn't enabled in `server.properties` for the server specified.
If the port is not provided, it will default to `25565`.
Examples:
transfer player to server "my.server.com"
transfer player to server "localhost" on port 25566
Patterns: |
|
Since: | 2.10 |
Requirements: | Paper |
Examples:
if the used firework will be consumed:
prevent the used firework from being consume
Patterns: |
|
Since: | 2.2-dev37, 2.7 (while loops), 2.8.0 (outer loops) |
Examples:
loop all players:
if loop-value does not have permission "moderator":
continue # filter out non moderators
broadcast "%loop-player% is a moderator!" # Only moderators get broadcast
# Game starting counter
set {_counter} to 11
while {_counter} > 0:
remove 1 from {_counter}
wait a second
if {_counter} != 1, 2, 3, 5 or 10:
continue # only print when counter is 1, 2, 3, 5 or 10
broadcast "Game starting in %{_counter}% second(s)"
Patterns: | |
Since: | 2.8.0 |
Note: Copying a value into a variable/list will overwrite the existing data.
Examples:
set {_foo::sublist::foobar} to "hey"
copy {_foo::*} to {_copy::*}
broadcast indices of {_copy::*} # bar, sublist
broadcast {_copy::bar} # 1
broadcast {_copy::sublist::foobar} # "hey!"
Patterns: |
|
Since: | 1.0, 2.10 (damage cause) |
Requirements: | Spigot 1.20.4+ (for damage cause) |
Servers running Spigot 1.20.4+ can optionally choose to specify a fake damage cause.
Examples:
damage player by 3 hearts with fake cause fall
heal the player
repair tool of player
Patterns: |
|
Since: | 1.4 |
ban player → wait 7 days → unban player
will not work if you restart your server anytime within these 7 days. You also have to be careful even when using small delays! Examples:
halt for 5 minecraft hours
wait a tick
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.3 |
Examples:
give a diamond to the player if the player has permission "rank.vip"
Patterns: |
|
Since: | 1.0 |
Examples:
drop 1 TNT
Patterns: | |
Since: | 2.4, 2.10 (unloading) |
Disabling a script unloads it and prepends - to its name so it will not be loaded the next time the server restarts. If the script reflection experiment is enabled: unloading a script terminates it and removes it from memory, but does not alter the file.
Examples:
enable script file "testing"
unload script file "script.sk"
set {_script} to the script "MyScript.sk"
reload {_script}
Patterns: |
|
Since: | 2.0 |
Examples:
disenchant the player's tool
Patterns: |
|
Since: | 2.9.0 |
Requirements: | MC 1.17+ |
All non-whitelisted players will be kicked upon enforcing the whitelist.
Examples:
unenforce the whitelist
Patterns: | |
Since: | 2.3, 2.10 (entities) |
Requirements: | Minecraft 1.19+ (entities) |
If no players are given, will hide the entities from all online players.
When reveal is used in combination of the hidden players expression and the viewers are not specified, this will default it to the given player in the hidden players expression.
Note: all previously hidden entities (including players) will be visible when a player leaves and rejoins.
Examples:
if event-entity is a chicken:
hide event-entity
reveal hidden players of players
Patterns: |
|
Since: | 1.0, 2.7 (multiple entities, unequip), 2.10 (wolves) |
This effect will replace any armor that the entity is already wearing.
Examples:
equip player with all diamond armor
unequip diamond chestplate from player
unequip all armor from player
unequip player's armor
Patterns: |
|
Since: | unknown (before 2.1) |
Examples:
stop
message "%player% has no ores!"
loop blocks above the player:
loop-block is not air:
exit 2 sections
set loop-block to water
Patterns: |
|
Since: | 2.5 |
Requirements: | Paper 1.13 or newer/Spigot 1.14 or newer. Ignition can be stopped on Paper 1.13 or newer. |
Examples:
stop ignition of the last spawned creeper
Patterns: |
|
Since: | 1.0 |
Hint: use a force of 0 to create a fake explosion that does no damage whatsoever, or use the explosion effect introduced in Skript 2.0.
Starting with Bukkit 1.4.5 and Skript 2.0 you can use safe explosions which will damage entities but won't destroy any blocks.
Examples:
create an explosion of force 0 at the victim
Patterns: |
|
Since: | 2.5.1 |
Requirements: | Minecraft 1.15.2+ |
Examples:
make last spawned wolf attack player
Patterns: |
|
Since: | 2.10 |
Requirements: | Spigot 1.20.5+ |
Examples:
force the player's tool to stop glinting
Patterns: |
|
Since: | 2.2-dev21 |
Examples:
force event-player to respawn
Patterns: |
|
Since: | 2.10 |
Note that if the inventory is full, it will cause warnings in the console due to over-filling the inventory.
Examples:
generate loot using "minecraft:chests/shipwreck_supply" in {_inventory}
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper 1.17.1+ |
Examples:
make entity left handed
make all zombies in radius 10 of player right handed
Patterns: | |
Since: | 2.3 |
Examples:
hide {vanished::*} from the server list
Patterns: |
|
Since: | 2.9.0 |
Requirements: | Spigot 1.20.5+ |
If changing the 'entire' tooltip of an item, nothing will show up when a player hovers over it.
If changing the 'additional' tooltip, only specific parts (which change per item) will be hidden.
Examples:
hide {_item}'s additional tool tip
Patterns: |
|
Since: | 2.4 |
Usable in events: | death |
Examples:
if the victim is an op:
keep the inventory and experiences
Patterns: |
|
Since: | 1.0, 2.10 (ignoring totem of undying) |
Note: This effect does not set the entity's health to 0 (which causes issues), but damages the entity by 100 times its maximum health.
Examples:
kill all creepers in the player's world
kill all endermen, witches and bats
Patterns: |
|
Since: | 2.7 |
Requirements: | Paper 1.19.2+ |
Examples:
knock victim (vector from attacker to victim) with strength 10
Patterns: |
|
Since: | 2.4 |
Examples:
Patterns: |
|
Since: | 2.3 |
See Spigot's Javadocs for more info.
Examples:
leash event-entity to player
send "&aYou leashed &2%event-entity%!" to player
Patterns: |
|
Since: | 1.4 |
Examples:
strike lightning effect at the victim
Patterns: |
|
Since: | 2.3 |
Requirements: | Paper 1.12.2 or newer |
last loaded server icon expression.
Please note that the image must be 64x64 and the file path starts from the server folder.
Examples:
clear {server-icons::*}
loop 5 times:
load server icon from file "icons/%loop-number%.png"
add the last loaded server icon to {server-icons::*}
on server list ping:
set the icon to a random server icon out of {server-icons::*}
Patterns: |
|
Since: | 2.8.0 |
The load effect will create a new world if world doesn't already exist.
When attempting to load a normal vanilla world you must define it's environment i.e "world_nether" must be loaded with nether environment
Examples:
load the world "myCustomWorld"
unload "world_nether"
unload "world_the_end" without saving
unload all worlds
Patterns: |
|
Since: | 2.3 |
Examples:
suppress the variable save warnings
Patterns: | |
Since: | 2.0, 2.9.0 (severities) |
NB: Using 'server.log' as the log file will write to the default server log. Omitting the log file altogether will log the message as '[Skript] [<script>.sk] <message>' in the server log.
Examples:
log "%player% has just joined the server!"
on world change:
log "Someone just went to %event-world%!" to file "worldlog/worlds.log"
on command:
log "%player% just executed %full command%!" to file "server/commands.log" with a severity of warning
Patterns: |
|
Since: | 2.7 |
Requirements: | Paper 1.17+, Paper 1.19.1+ (Players & Look Anchors) |
Examples:
on entity explosion:
set {_player} to the nearest player
{_player} is set
distance between {_player} and the event-location is less than 15
make {_player} look towards vector from the {_player} to location of the event-entity
force {_enderman} to face the block 3 meters above {_location} at head rotation speed 100.5 and max head pitch -40
Patterns: |
|
Since: | 2.10 |
Examples:
entity is not an adult
make entity an adult
Patterns: |
|
Since: | 2.10 |
Examples:
make entity unbreedable
Patterns: |
|
Since: | 2.7 |
Usable in events: | Egg Throw |
Examples:
# EGGS FOR DAYZ!
make the egg hatch
Patterns: |
|
Since: | 2.9.0 |
Requirements: | Spigot 1.20.5+ |
Examples:
make {_items::*} not resistant to fire
Patterns: | |
Since: | 2.5 |
Examples:
make the explosion fiery
Patterns: |
|
Since: | 2.7 |
When setting an entity to invisible while using an invisibility potion on it, the potion will be overridden and when it runs out the entity keeps its invisibility.
Examples:
Patterns: | |
Since: | 2.3 |
Examples:
force all players to send the message "I love this server"
Patterns: |
|
Since: | 2.8.0 |
Examples:
Patterns: |
|
Since: | 1.0, 2.2-dev26 (advanced features), 2.5.2 (optional sender), 2.6 (sending objects) |
Requirements: | Minecraft 1.16.4+ for optional sender |
in given string or in formatted expressions will be parsed.
Adding an optional sender allows the messages to be sent as if a specific player sent them.
This is useful with Minecraft 1.16.4's new chat ignore system, in which players can choose to ignore other players,
but for this to work, the message needs to be sent from a player.
Examples:
message "This message is a distraction. Mwahaha!"
send "Your kill streak is %{kill streak::%uuid of player%}%." to player
if the targeted entity exists:
message "You're currently looking at a %type of the targeted entity%!"
on chat:
cancel event
send "[%player%] >> %message%" to all players from player
Patterns: |
|
Since: | 2.0, 2.1.1 (closing), 2.2-Fixes-V10 (anvil), 2.4 (hopper, dropper, dispenser |
Please note that currently 'show' and 'open' have the same effect, but 'show' will eventually show an unmodifiable view of the inventory in the future.
Examples:
open the player's inventory for the player
Patterns: |
|
Since: | 2.7 |
Requirements: | Paper |
Examples:
make all cows stop pathfinding
make event-entity pathfind towards player at speed 1
Patterns: |
|
Since: | 2.1 |
Please note that some effects can only be played on entities, e.g. wolf hearts or the hurt effect, and that these are always visible to all players.
Examples:
show mob spawner flames at the targeted block to the player
Patterns: |
|
Since: | 2.2-dev28, 2.4 (sound categories), 2.9 (sound seed & entity emitter) |
Requirements: | Minecraft 1.18.1+ (entity emitters), Paper 1.19.4+ or Adventure API 4.12.0+ (sound seed) |
When running 1.19+, playing a sound from an entity directly will result in the sound coming from said entity, even while moving.
If the sound is custom, a location emitter will follow the entity. Do note that pitch and volume
are reflected based on the entity, and Minecraft may not use the values from this syntax.
If using Paper 1.19.4+ or Adventure API 4.12.0+ you can utilize sound seeds. Minecraft sometimes have a set of sounds under one sound ID
that will randomly play, to counter this, you can directly state which seed to use.
Please note that sound names can get changed in any Minecraft or Spigot version, or even removed from Minecraft itself.
Examples:
play sound "entity.experience_orb.pickup" with volume 0.5 to the player
play sound "custom.music.1" in jukebox category at {speakerBlock}
play sound "BLOCK_AMETHYST_BLOCK_RESONATE" with seed 1 on target entity for the player #1.20.1+
Patterns: |
|
Since: | 2.3 |
Usable in events: | server list ping |
Requirements: | Paper 1.12.2 or newer |
The Vanilla Minecraft client will display ??? (dark gray) instead of player counts and will not show the
hover hist when hiding player info.
The version string can override the ???.
Also the Online Players Count and
Max Players expressions will return -1 when hiding player info.
Examples:
hide player related information in the server list
reveal all player related info
Patterns: |
|
Since: | 1.3.2 |
Examples:
poison the victim for 20 seconds
cure the player from poison
Patterns: |
|
Since: | 2.0, 2.2-dev27 (ambient and particle-less potion effects), 2.5 (replacing existing effect), 2.5.2 (potion effects), 2.7 (icon and infinite) |
Examples:
remove haste from the victim
on join:
apply infinite potion of strength of tier {strength::%uuid of player%} to the player
apply potion of strength of tier {strength::%uuid of player%} to the player for 999 days # Before 1.19.4
apply potion effects of player's tool to player
apply haste potion of tier 3 without any particles whilst hiding the potion icon to the player # Hide potions
Patterns: |
|
Since: | 2.10 |
Usable in events: | Fishing |
Examples:
pull in hooked entity
Patterns: |
|
Since: | 2.10 |
Item tags should be used for contexts where the item is not placed down, while block tags should be used for contexts where the item is placed. For example, and item tag could be "skript:edible", while a block tag would be "skript:needs_water_above".
All custom tags will be given the namespace "skript", followed by the name you give it. The name must only include the characters A to Z, 0 to 9, and '/', '.', '_', and '-'. Otherwise, the tag will not register.
Please note that two tags can share a name if they are of different types. Registering a new tag of the same name and type will overwrite the existing tag. Tags will reset on server shutdown.
Examples:
register an item tag named "skript:wasp_weapons/swords" containing diamond sword and netherite sword
register block tag named "pokey" containing sweet berry bush and bamboo sapling
on player move:
block at player is tagged as tag "skript:pokey"
damage the player by 1 heart
Patterns: |
|
Since: | 2.0, 2.2-dev24 (multiple strings, items in inventory), 2.5 (replace first, case sensitivity), 2.10 (regex) |
Examples:
replace every "&" with "§" in line 1 of targeted block
# Very simple chat censor
on chat:
replace all "idiot" and "noob" with "****" in the message
regex replace "\b(idiot|noob)\b" with "****" in the message # Regex version using word boundaries for better results
replace all stone and dirt in player's inventory and player's top inventory with diamond
Patterns: |
|
Since: | 2.2, 2.8.0 (returns aliases) |
Examples:
return 2 * {_i}
function divide(i: number) returns number:
return {_i} / 2
Patterns: | |
Since: | 2.9.0 |
Requirements: | Spigot 1.19.4+ |
Optionally, the entity that rang the bell and the direction the bell should ring can be specified.
A bell can only ring in two directions, and the direction is determined by which way the bell is facing.
By default, the bell will ring in the direction it is facing.
Examples:
Patterns: |
|
Since: | 2.2-dev28, 2.10 (quaternions, displays) |
Vectors can only be rotated around the global X/Y/Z axes, or an arbitrary vector axis.
Quaternions are more flexible, allowing rotation around the global or local X/Y/Z axes, arbitrary vectors, or all 3 local axes at once.
Global axes are the ones in the Minecraft world. Local axes are relative to how the quaternion is already oriented.
Rotating a display is a shortcut for rotating its left rotation. If the right rotation needs to be modified, it should be acquired, rotated, and re-set.
Note that rotating a quaternion/display around a vector results in a rotation around the local vector, so results may not be what you expect. For example, rotating quaternions/displays around vector(1, 0, 0) is the same as rotating around the local X axis.
The same applies to rotations by all three axes at once. In addition, rotating around all three axes of a quaternion/display at once will rotate in ZYX order, meaning the Z rotation will be applied first and the X rotation last.
Examples:
rotate last spawned block display around y axis by 10 degrees
rotate {_vector} around vector(1, 1, 1) by 45
rotate {_quaternion} by x 45, y 90, z 135
Patterns: |
|
Since: | 2.10 |
Examples:
run {_function}
run {_function} with arguments {_things::*}
Patterns: |
|
Since: | 2.8.0 |
Note: saving many worlds at once may possibly cause the server to freeze.
Examples:
save all worlds
Patterns: |
|
Since: | 2.2-dev37c, 2.5.1 (block data support) |
Examples:
make player see target block as campfire[facing=south]
Patterns: | |
Since: | 2.4 |
the resource pack in the background, and will automatically switch to it once the download is complete.
The URL must be a direct download link.
The hash is used for caching, the player won't have to re-download the resource pack that way.
The hash must be SHA-1, you can get SHA-1 hash of your resource pack using
this online tool.
The resource pack request action can be used to check
status of the sent resource pack request.
Examples:
send the resource pack from "URL" with hash "hash" to the player
Patterns: |
|
Since: | 2.0 (cows, sheep & snowmen), 2.8.0 (all shearable entities) |
Requirements: | Paper 1.19.4+ (all shearable entities) |
Please note that..:
- If your server is not running with Paper 1.19.4 or higher, this effect will only change its 'shear state', and the 'force' effect is unavailable
- Force-shearing or un-shearing on a sheared mushroom cow is not possible
Examples:
shear the clicked sheep
chance of 10%
force shear the clicked sheep
Patterns: |
|
Since: | 2.9.0, 2.10 (sort order) |
When using the full sort %~objects% (by|based on) <expression>
pattern, the input expression can be used to refer to the current item being sorted. (See input expression for more information.)
Examples:
sort {_words::*} # alphabetical sort
sort {_words::*} by length of input # shortest to longest
sort {_words::*} in descending order by length of input # longest to shortest
sort {_words::*} based on {tastiness::%input%} # sort based on custom value
Patterns: |
|
Since: | 2.5 |
Examples:
restart server
Patterns: |
|
Since: | 2.4, 2.7 (stop all sounds) |
Requirements: | MC 1.17.1 (stop all sounds) |
Please note that sound names can get changed in any Minecraft or Spigot version, or even removed from Minecraft itself.
Examples:
stop playing sounds "ambient.underwater.loop" and "ambient.underwater.loop.additions" to the player
stop all sounds for all players
stop sound in the record category
Patterns: |
|
Since: | 2.5.1 |
Requirements: | Minecraft 1.15.2+ |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
untame {_horse}
Patterns: |
|
Since: | 1.0, 2.10 (flags) |
Requirements: | Paper 1.19+ (teleport flags) |
This effect is delayed by default on Paper, meaning certain syntax such as the return effect for functions cannot be used after this effect.
The keyword 'force' indicates this effect will not be delayed,
which may cause lag spikes or server crashes when using this effect to teleport entities to unloaded chunks.
Teleport flags are settings to retain during a teleport. Such as direction, passengers, x coordinate, etc.
Examples:
teleport the attacker to the victim
on dismount:
cancel event
teleport the player to {server::spawn} retaining vehicle and passengers
Patterns: | |
Since: | 2.10 |
Examples:
if {_display} has drop shadow:
remove drop shadow from the text of {_display}
Patterns: | |
Since: | 2.10 |
Examples:
prevent all text displays from being visible through walls
Patterns: | |
Since: | 2.3 |
If you're sending only the subtitle, it will be shown only if there's a title displayed at the moment, otherwise it will be sent with the next title. To show only the subtitle, use:
send title " " with subtitle "yourtexthere" to player
.Note: if no input is given for the times, it will keep the ones from the last title sent, use the reset title effect to restore the default values.
Examples:
send title "Hi %player%" to player
send title "Loot Drop" with subtitle "starts in 3 minutes" to all players
send title "Hello %player%!" with subtitle "Welcome to our server" to player for 5 seconds with fadein 1 second and fade out 1 second
send subtitle "Party!" to all players
Patterns: |
|
Since: | 2.8.0 |
Examples:
send "You can no longer pick up items!" to player
on drop:
if player can't pick up items:
allow player to pick up items
Patterns: |
|
Since: | 2.10 |
Evaluates the given expression for each element in the list, replacing the original element with the expression's result.
If the given expression returns a single value, the indices of the list will not change. If the expression returns multiple values, then then indices will be reset as a single index cannot contain multiple values.
Only variable lists can be transformed with this effect. For other lists, see the transform expression.
Examples:
transform {_a::*} using input * 2
# {_a::*} is now 2, 4, and 6
# get a list of the sizes of all clans without manually looping
set {_clan-sizes::*} to indices of {clans::*}
transform {_clan-sizes::*} using {clans::%input%::size}
# set all existing values of a list to 0:
transform {_list::*} to 0
Patterns: |
|
Since: | 1.0 |
This may require that there is enough space above the given location and that the block below is dirt/grass, but it is possible that the tree will just grow anyways, possibly replacing every block in its path.
Examples:
Patterns: |
|
Since: | 2.10 |
Using 'without physics' will not send updates to the surrounding blocks of the blocks being set.
Example: Updating a block next to a sand block in the air 'without physics' will not cause the sand block to fall.
Examples:
update {_blocks::*} to be sand without physics updates
update {_blocks::*} as stone without neighbouring updates
Patterns: |
|
Since: | 2.0 |
Examples:
make the attacker ride the victim
Patterns: |
|
Since: | 1.0 |
Examples:
deop all players
Patterns: |
|
Since: | 2.10 |
Examples:
shoot a pig from all players:
add event-entity to {_projectiles::*}
Patterns: |
|
Since: | 1.0, 2.6.1 (with section), 2.8.6 (dropped items), 2.10 (entity snapshots) |
Requirements: | Minecraft 1.20.2+ (entity snapshots) |
If it is used as a section, the section is run before the entity is added to the world.
You can modify the entity in this section, using for example 'event-entity' or 'cow'.
Do note that other event values, such as 'player', won't work in this section.
If you're spawning a display and want it to be empty on initialization, like not having a block display be stone, set hidden config node 'spawn empty displays' to true.
Note that when spawning an entity via entity snapshots, the code within the section will not run instantaneously as compared to spawning normally (via 'a zombie').
Examples:
spawn a ghast 5 meters above the player
spawn a zombie at the player:
set name of the zombie to ""
spawn a block display of a ladder[waterlogged=true] at location above player:
set billboard of event-display to center # allows the display to rotate around the center axis
Patterns: | |
Since: | 2.9.0 |
Requirements: | Spigot 1.19.4+ |
A bell will start resonating five game ticks after being rung, and will continue to resonate for 40 game ticks.
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
entity can't age
broadcast "An immortal has been born!" to player
Patterns: |
|
Since: | 2.10 |
Examples:
event-entity can't breed
send "Turns out %event-entity% is not breedable. Must be a Skript user!" to player
Patterns: |
|
Since: | 2.0 |
Requirements: | Supported regions plugin |
This condition requires a supported regions plugin to be installed.
Examples:
description: set the block at your crosshair to a different type
trigger:
player cannot build at the targeted block:
message "You do not have permission to change blocks there!"
stop
set the targeted block to argument
Patterns: |
|
Since: | 1.0 |
Examples:
player has enough space for 64 feathers
Patterns: |
|
Since: | 2.8.0 |
Examples:
send "You can pick up items!" to player
on drop:
if player can't pick up items:
send "Be careful, you won't be able to pick that up!" to player
Patterns: | |
Since: | 2.3, 2.10 (entities) |
Requirements: | Minecraft 1.19+ (entities) |
Examples:
message "who dat?"
if the player can see the last spawned entity:
message "hello there!"
Patterns: | |
Since: | 2.10 |
Requirements: | Paper |
Examples:
send "Find the red word in <red>this<reset> message."
else:
send "You cannot partake in finding the colored word."
Patterns: | |
Since: | 2.10 |
Requirements: | Paper |
Examples:
send "You can see all messages."
if player can only see commands:
send "This game doesn't work with commands-only chat."
if player can't see any messages:
send action bar "Server shutting down in 5 minutes!"
Patterns: |
|
Since: | 1.0 |
Valid values are between 0% and 100%, or if the percent sign is omitted between 0 and 1.
Examples:
drop a diamond
chance of {chance}% # {chance} between 0 and 100
chance of {chance} # {chance} between 0 and 1
Patterns: |
|
Since: | 1.0 |
Note: This is the only element where not all patterns are shown. It has actually another two sets of similar patters, but with
(was|were)
or will be
instead of (is|are)
respectively, which check different time states of the first expression. Examples:
time in the player's world is greater than 8:00
the creature is not an enderman or an ender dragon
Patterns: |
|
Since: | 1.0 |
Examples:
player has 4 flint and 2 iron ingots
{list::*} contains 5
Patterns: |
|
Since: | 2.0 |
Examples:
on damage:
damage was caused by lava, fire or burning
victim is a player
victim has a potion of fire resistance
cancel event
apply fire resistance to the victim for 30 seconds
remove 1 potion of fire resistance from the victim
# prevent mobs from dropping items under certain circumstances
on death:
entity is not a player
damage wasn't caused by a block explosion, an attack, a projectile, a potion, fire, burning, thorns or poison
clear drops
Patterns: |
|
Since: | 2.7 |
Requirements: | Minecraft 1.16+ |
Examples:
Patterns: |
|
Since: | 2.7 |
Usable in events: | Egg Throw |
Examples:
if an entity won't hatch:
send "Better luck next time!" to the player
Patterns: |
|
Since: | 2.8.0 |
Requirements: | MC 1.13+ (cows, sheep & snowmen), Paper 1.19.4+ (all shearable entities) |
Examples:
send "This entity has nothing left to shear!" to player
Patterns: | |
Since: | 2.6.1 |
Requirements: | Minecraft 1.16+ (in water), Paper 1.16+ (in rain, lava and bubble column) |
Examples:
if player is in water:
player is in lava:
player is in bubble column
Patterns: |
|
Since: | 2.2-dev36 |
Examples:
if event is cancelled:
broadcast "no clicks allowed!"
Patterns: | |
Since: | 1.2 |
Examples:
on damage:
projectile exists
broadcast "%attacker% used a %projectile% to attack %victim%!"
Patterns: |
|
Since: | 2.10 |
Usable in events: | Fishing |
Examples:
if lure enchantment is applied:
cancel event
Patterns: |
|
Since: | 2.5 |
Examples:
Patterns: | |
Since: | 2.10 |
Requirements: | Paper |
Examples:
send "<gray>This server may contain mature chat messages. You have been warned!" to player
Patterns: | |
Since: | 2.3 |
Examples:
message "Your custom weather is %player's weather%"
Patterns: |
|
Since: | 2.5 |
Requirements: | 1.14+ |
Examples:
Patterns: |
|
Since: | 2.8.0 |
Examples:
Patterns: |
|
Since: | 2.8.0 |
Examples:
send "You can't use this item right now. Wait %item cooldown of player's tool for player%"
Patterns: |
|
Since: | 2.9.0 |
Requirements: | Spigot 1.20.5+ |
The 'entire tooltip' is what shows to the player when they hover an item (i.e. name, lore, etc.).
The 'additional tooltip' hides certain information from certain items (potions, maps, books, fireworks, and banners).
Examples:
if additional tooltip of {_item} is hidden:
Patterns: |
|
Since: | 2.8.0 |
Examples:
victim has line of sight to attacker
player has no line of sight to location 100 blocks in front of player
Patterns: | |
Since: | 2.10 |
Examples:
if event-block has a loot table:
# this will never happen, because it doesn't have a loot table.
set loot table of event-block to "minecraft:chests/simple_dungeon"
if event-block has a loot table:
# this will happen, because it now has a loot table.
Patterns: |
|
Since: | 2.2-dev36 |
Examples:
Patterns: |
|
Since: | 1.0 |
Examples:
victim has the permission "admin":
send "You're attacking an admin!" to attacker
Patterns: |
|
Since: | 1.4, 2.7 (multiple players) |
Examples:
player hasn't played before
Patterns: |
|
Since: | 2.6.1 |
Examples:
send "You are sonic!"
if all players have potion effects speed and haste:
broadcast "You are ready to MINE!"
Patterns: | |
Since: | 2.4 |
Requirements: | Paper 1.9 or newer |
Examples:
Patterns: | |
Since: | 2.3 |
Examples:
Patterns: |
|
Since: | 2.5 |
Requirements: | Paper 1.13 or newer |
Examples:
loop all players in radius 3 of the last spawned creeper
send "RUN!!!" to the loop-player
Patterns: | |
Since: | 2.10 |
Note that using the 'now' expression will not be in the past or future when used directly in the condition.
Examples:
wait 5 seconds
if {_date} is in the past:
# this will be true
if now is in the future:
# this will be false
set {_dates::*} to 1 day from now, 12 days from now, and 1 year from now
if {_dates::*} are in the future:
# this will be true
if {_dates::*} have passed:
# this will be false
Patterns: |
|
Since: | 2.10 |
Examples:
event-entity is not an adult
kill event-entity
Patterns: | |
Since: | 2.0, 2.4-alpha4 (non-living entity support) |
Examples:
on shoot:
while the projectile is alive:
Patterns: |
|
Since: | 2.10 |
Examples:
event-entity is a baby
kill event-entity
Patterns: |
|
Since: | 1.4 |
Examples:
victim is not IP-banned
"127.0.0.1" is banned
Patterns: |
|
Since: | 2.7 |
Usable in events: | respawn |
Requirements: | Minecraft 1.16+ |
Examples:
the respawn location is a bed
broadcast "%player% is respawning in their bed! So cozy!"
Patterns: |
|
Since: | 2.4 |
Examples:
{list::*} are blocks
Patterns: | |
Since: | 2.5 |
Examples:
send "This block is well-powered by redstone!"
if clicked block is indirectly redstone powered:
send "This block is indirectly redstone powered."
Patterns: | |
Since: | unknown (before 2.1) |
Examples:
victim is blocking
damage attacker by 0.5 hearts
Patterns: | |
Since: | 1.4.4 |
Examples:
victim is burning:
increase damage by 2
Patterns: | |
Since: | 2.5, 2.10 (withers, wither skulls) |
Examples:
broadcast "A charged creeper is at %location of last spawned creeper%"
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Minecraft 1.17+ |
Examples:
wait a second
if the last spawned spider is climbing:
message"The spider is now climbing!"
Patterns: | |
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.2-dev36 |
Examples:
player's tool is edible
Patterns: |
|
Since: | unknown (before 2.1) |
Examples:
Patterns: |
|
Since: | 1.4.6 |
Examples:
helm, chestplate, leggings or boots are enchanted
Patterns: | |
Since: | 2.10 |
Examples:
if 11 cannot be evenly divided by 10:
Patterns: |
|
Since: | 2.9.0 |
Requirements: | Spigot 1.20.5+ |
Examples:
if {_items::*} aren't resistant to fire:
Patterns: | |
Since: | 2.10 |
Usable in events: | Fishing |
Open water is defined by a 5x4x5 area of water, air and lily pads. If in open water, treasure items may be caught.
Examples:
if fish hook is in open water:
send "You will catch a shark soon!"
Patterns: |
|
Since: | 2.2-dev36 |
Examples:
player's tool is flammable
Patterns: | |
Since: | 2.10 |
Requirements: | PaperMC |
Examples:
Patterns: |
|
Since: | 2.5.1 |
Requirements: | Minecraft 1.11.2+ |
Examples:
if player's tool is not fuel:
send "Please hold a valid fuel item in your hand"
cancel event
Patterns: |
|
Since: | 2.7 |
Examples:
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper |
Hands are raised when an entity is using an item (eg: blocking, drawing a bow, eating).
Examples:
if victim's main hand is raised:
drop player's tool at player
set player's tool to air
Patterns: |
|
Since: | 1.0 |
Examples:
victim isn't holding a sword of sharpness
Patterns: |
|
Since: | 2.10 |
Examples:
if entity is in love:
broadcast "That was quick!"
Patterns: | |
Since: | 2.5 |
Examples:
if the explosion is fiery:
broadcast "A fiery explosive has been ignited!"
Patterns: |
|
Since: | 2.7 |
Examples:
Patterns: |
|
Since: | 2.5.2 |
Requirements: | Minecraft 1.13+ |
Examples:
if event-block is interactable:
cancel event
send "You cannot break interactable blocks!"
Patterns: |
|
Since: | 2.7 |
Examples:
Patterns: | |
Since: | 2.5, 2.10 (gamemode) |
Requirements: | Paper 1.20.6+ (gamemodes) |
Examples:
loop all gamemodes:
if loop-value is not invulnerable:
broadcast "the gamemode %loop-value% is vulnerable!"
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper 1.15+ |
Examples:
while event-entity is not jumping:
wait 5 ticks
push event-entity upwards
Patterns: |
|
Since: | 2.5 |
Examples:
Patterns: | |
Since: | 2.3, 2.5 (revamp with chunk at location/coords), 2.10 (Scripts) |
'chunk at 1, 1' uses chunk coordinates, which are location coords divided by 16.
Examples:
if chunk 1, 10 in world "world" is loaded:
if world("lobby") is loaded:
if script named "MyScript.sk" is loaded:
Patterns: | |
Since: | 2.10 |
Examples:
set {_pig} to last spawned entity
if {_pig} is lootable:
set loot table of {_pig} to "minecraft:entities/cow"
# the pig will now drop the loot of a cow when killed, because it is indeed a lootable entity.
set block at event-location to chest
if block at event-location is lootable:
set loot table of block at event-location to "minecraft:chests/simple_dungeon"
# the chest will now generate the loot of a simple dungeon when opened, because it is indeed a lootable block.
set block at event-location to wool block
if block at event-location is lootable:
# uh oh, nothing will happen because a wool is not a lootable block.
Patterns: |
|
Since: | 2.1 |
Requirements: | Supported regions plugin |
This condition requires a supported regions plugin to be installed.
Examples:
player is the owner of the region
message "Welcome back to %region%!"
send "%player% just entered %region%!" to all members of the region
Patterns: |
|
Since: | 2.5.1 |
Examples:
Patterns: |
|
Since: | 1.4 |
Requirements: | Paper 1.20+ (Connected) |
Examples:
player-argument is offline
while player is connected:
wait 60 seconds
send "hello!" to player
# The following will act like `{_player} is online`.
# Using variables with `is connected` will not behave the same as with non-variables.
while {_player} is connected:
broadcast "online!"
wait 1 tick
Patterns: |
|
Since: | 2.7 |
Examples:
Patterns: | |
Since: | 2.5.1 |
Requirements: | Minecraft 1.13.2+ |
A block is passable if it has no colliding parts that would prevent players from moving through it.
Blocks like tall grass, flowers, signs, etc. are passable, but open doors, fence gates, trap doors, etc. are not because they still have parts that can be collided with.
Examples:
Patterns: |
|
Since: | 2.9.0 |
Requirements: | Paper |
Can only be a living entity that is a Mob.
Examples:
while {_entity} is pathfinding
wait a second
launch flickering trailing burst firework colored red at location of {_entity}
subtract 10 from {defence::tower::health}
clear entity within {_entity}
Patterns: | |
Since: | 2.6 |
Plugin names can be found in the plugin's 'plugin.yml' file or by using the '/plugins' command, they are NOT the name of the plugin's jar file.
When checking if a plugin is not enabled, this will return true if the plugin is either disabled or not on the server.
When checking if a plugin is disabled, this will return true if the plugin is on the server and is disabled.
Examples:
if plugin "WorldGuard" is not enabled:
if plugins "Essentials" and "Vault" are enabled:
if plugin "MyBrokenPlugin" is disabled:
Patterns: |
|
Since: | 1.4.4 |
Examples:
cure the player from poison
message "You have been cured!"
Patterns: |
|
Since: | 2.7 |
Requirements: | 1.16.5+, Paper 1.19.2+ (blockdata) |
Examples:
event-block is set
if player's tool is the preferred tool for event-block:
break event-block naturally using player's tool
else:
cancel event
Patterns: |
|
Since: | 2.10 |
Requirements: | Minecraft 1.21.2+ |
Examples:
if player is pressing forward movement key:
send "You are moving forward!"
Patterns: |
|
Since: | 2.0 |
Examples:
Patterns: |
|
Since: | 2.5 |
Examples:
Patterns: |
|
Since: | 2.10 |
If 'properly' is used, this will only return true if the entity is wearing specifically a saddle item.
Examples:
Patterns: | |
Since: | 2.3 |
Slimes can generally spawn in the swamp biome and in slime chunks.
For more info, see the Minecraft wiki.
Examples:
trigger:
if chunk at player is a slime chunk:
send "Yeah, it is!"
else:
send "Nope, it isn't"
Patterns: | |
Since: | 1.4.4 |
Examples:
on target:
target is sneaking
distance of target and the entity is bigger than 4
cancel the event
Patterns: |
|
Since: | 2.2-dev36 |
Examples:
player's tool isn't solid
Patterns: |
|
Since: | 2.7 |
Examples:
birch wood is stackable
torch is stackable
Patterns: |
|
Since: | 2.3 |
Requirements: | 1.13 or newer |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
enchant player's tool with sharpness 1
if all logs are tagged with tag "minecraft:logs"
Patterns: |
|
Since: | 2.5 |
Examples:
if victim is tameable:
cancel event
Patterns: |
|
Since: | 2.2-dev36 |
Examples:
Patterns: |
|
Since: | 2.5.1, 2.9.0 (breakable) |
Examples:
send "This item is unbreakable!" to player
if tool of {_p} is breakable:
send "Your tool is breakable!" to {_p}
Patterns: | |
Since: | 2.9.0 |
Examples:
on load:
if the script is using "example feature":
broadcast "You're using an experimental feature!"
Patterns: | |
Since: | 2.7, 2.10 (Scripts & Configs) |
An invalid entity may have died or de-spawned for some other reason.
An invalid script reference may have been reloaded, moved or disabled since.
Examples:
Patterns: |
|
Since: | 1.0 |
Examples:
player is wearing all diamond armour
target is wearing wolf armor
Patterns: |
|
Since: | 2.5.2, 2.9.0 (enforce, offline players) |
Requirements: | MC 1.17+ (enforce) |
Examples:
if the server is whitelisted:
if the server whitelist is enforced:
Patterns: | |
Since: | 2.7 |
Requirements: | MC 1.17+ (within block) |
Note that using the is between condition will refer to a straight line between locations, while this condition will refer to the cuboid between locations.
Examples:
send "You are in a PvP zone!" to player
if player is in world("world"):
send "You are in the overworld!" to player
if attacker's location is inside of victim:
cancel event
send "Back up!" to attacker and victim
Patterns: | |
Since: | 2.7 |
Examples:
if attacker's location is within 10 blocks around {_spawn}:
cancel event
send "You can't PVP in spawn."
Patterns: |
|
Since: | 1.4 |
Examples:
victim is of type {villager type}
Patterns: |
|
Since: | 2.10 |
Requirements: | Spigot 1.20.5+ |
Examples:
send "Your tool has the enchantment glint override." to player
if {_item} is forced to glint:
send "This item is forced to glint." to player
else if {_item} is forced to not glint:
send "This item is forced to not glint." to player
else:
send "This item does not have any glint override." to player
Patterns: |
|
Since: | 2.10 |
Requirements: | Spigot 1.20.5+ |
Examples:
send "Your tool has the enchantment glint override." to player
if {_item} is forced to glint:
send "This item is forced to glint." to player
else if {_item} is forced to not glint:
send "This item is forced to not glint." to player
else:
send "This item does not have any glint override." to player
Patterns: |
|
Since: | 2.10 |
Usable in events: | Unleash |
Requirements: | Paper 1.16+ |
Examples:
if the leash will drop:
prevent the leash from dropping
else:
allow the leash to drop
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper 1.17.1+ (entities) |
Paper 1.17.1+ is required for non-player entities.
Examples:
if victim is left handed:
cancel event
Patterns: | |
Since: | 2.10 |
Examples:
open the lid of {_block}
Patterns: | |
Since: | 2.5.2 |
Examples:
if message partially matches "\d":
send "Message contains a digit!"
if message doesn't match "[A-Za-z]+":
send "Message doesn't only contain letters!"
Patterns: |
|
Since: | 2.1 |
Requirements: | Supported regions plugin |
This condition requires a supported regions plugin to be installed.
Examples:
on region enter:
region contains {flags.%world%.red}
message "The red flag is near!"
Patterns: |
|
Since: | 2.4 |
Usable in events: | resource pack request response |
Examples:
if the resource pack wasn't accepted:
kick the player due to "You have to install the resource pack to play in this server!"
Patterns: |
|
Since: | 2.5 |
Examples:
Patterns: | |
Since: | 2.10 |
Examples:
remove drop shadow from the text of {_display}
Patterns: | |
Since: | 2.10 |
Examples:
prevent last spawned text display from being visible through walls
Patterns: | |
Since: | 2.0 |
Examples:
trigger:
{command::%player's uuid%::last-usage} was less than a minute ago:
message "Please wait a minute between uses of this command."
stop
set {command::%player's uuid%::last-usage} to now
# ... actual command trigger here ...
Patterns: |
|
Since: | 2.10 |
Requirements: | Paper |
Examples:
if the used firework will be consumed:
prevent the used firework from being consume
Patterns: |
|
Since: | 1.0 |
if: executed when its condition is true
else if: executed if all previous chained conditionals weren't executed, and its condition is true
else: executed if all previous chained conditionals weren't executed
parse if: a special case of 'if' condition that its code will not be parsed if the condition is not true
else parse if: another special case of 'else if' condition that its code will not be parsed if all previous chained conditionals weren't executed, and its condition is true
Examples:
send "Your health is okay so far but be careful!"
else if player's health is greater than 2:
send "You need to heal ASAP, your health is very low!"
else: # Less than 2 hearts
send "You are about to DIE if you don't heal NOW. You have only %player's health% heart(s)!"
parse if plugin "SomePluginName" is enabled: # parse if %condition%
# This code will only be executed if the condition used is met otherwise Skript will not parse this section therefore will not give any errors/info about this section
Patterns: |
|
Since: | 2.10 |
It also supports filtering based on meeting any of the given criteria, rather than all, like multi-line if statements.
Examples:
filter {_a::*} to match:
input is a number
mod(input, 2) = 0
input > 0
send {_a::*} # sends 2, 4, 6, 8, and 10
Patterns: | |
Since: | 2.10 |
When looping a simple (non-indexed) set of values, e.g. all players, the index will be the loop counter number.
Examples:
send "Hello %{_player}%!" to {_player}
loop {_item} in {list of items::*}:
broadcast {_item}'s name
for each key {_index} in {list of items::*}:
broadcast {_index}
loop key {_index} and value {_value} in {list of items::*}:
broadcast "%{_index}% = %{_value}%"
for each {_index}, {_value} in {my list::*}:
broadcast "%{_index}% = %{_value}%"
Patterns: |
|
Since: | 1.0 |
A loop will loop through all elements of the given expression, e.g. all players, worlds, items, etc. The conditions & effects inside the loop will be executed for every of those elements, which can be accessed with ‘loop-
send "hello" to loop-player
. When a condition inside a loop is not fulfilled the loop will start over with the next element of the loop. You can however use stop loop
to exit the loop completely and resume code execution after the end of the loop.Loopable Values
All expressions that represent more than one value, e.g. ‘all players’, ‘worlds’, etc., as well as list variables, can be looped. You can also use a list of expressions, e.g.
loop the victim and the attacker
, to execute the same code for only a few values.List Variables
When looping list variables, you can also use
loop-index
in addition to loop-value
inside the loop. loop-value
is the value of the currently looped variable, and loop-index
is the last part of the variable's name (the part where the list variable has its asterisk *). Examples:
send "Hello %loop-player%!" to loop-player
loop items in player's inventory:
if loop-item is dirt:
set loop-item to air
loop 10 times:
send title "%11 - loop-value%" and subtitle "seconds left until the game begins" to player for 1 second # 10, 9, 8 etc.
wait 1 second
loop {Coins::*}:
set {Coins::%loop-index%} to loop-value + 5 # Same as "add 5 to {Coins::%loop-index%}" where loop-index is the uuid of the player and loop-value is the number of coins for the player
loop shuffled (integers between 0 and 8):
if all:
previous loop-value = 1
loop-value = 4
next loop-value = 8
then:
kill all players
Patterns: |
|
Since: | 2.0, 2.6 (do while) |
Examples:
send "More players are needed to begin the adventure" to all players
wait 5 seconds
set {_counter} to 1
do while {_counter} > 1: # false but will increase {_counter} by 1 then get out
add 1 to {_counter}
# Be careful when using while loops with conditions that are almost
# always true for a long time without using 'wait %timespan%' inside it,
# otherwise it will probably hang and crash your server.
while player is online:
give player 1 dirt
wait 1 second # without using a delay effect the server will crash
Patterns: | |
Since: | 1.3.4 |
Requirements: |
Examples:
at 7am in "world"
Patterns: |
|
Since: | 2.7 |
Requirements: | Paper |
Note: this does not include anvil damage from falling.
Examples:
cancel the event
Patterns: |
|
Since: | 2.7 |
Requirements: |
Examples:
event-item is set # result item
chance of 5%:
set repair cost to repair cost * 50%
send "You're LUCKY! You got 50% discount." to player
Patterns: |
|
Since: | 2.2-dev21 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.5.1 |
Requirements: |
Examples:
send "You swung your arm!"
Patterns: |
|
Since: | 2.5 |
Requirements: | Paper |
Examples:
send "You equipped %event-item%!"
Patterns: |
|
Since: | 2.10 |
Requirements: | Paper |
Examples:
broadcast event-player
broadcast event-block
broadcast primary beacon effect
broadcast secondary beacon effect
on beacon change effect:
on player change beacon effect:
Patterns: |
|
Since: | Unknown |
Requirements: |
Examples:
Patterns: |
|
Since: | Unknown |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.9.0 |
Requirements: | Spigot 1.19.4+ |
Examples:
send "<red>Raiders are nearby!" to all players in radius 32 around event-block
Patterns: |
|
Since: | 2.9.0 |
Requirements: | Spigot 1.19.4+ or Paper 1.16.5+ (no event-direction) |
Examples:
send "<gold>Ding-dong!<reset>" to all players in radius 10 of event-block
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
if block is log:
send "You can't break the holy log!"
Patterns: |
|
Since: | 2.10 |
Requirements: |
- event-player: The player that broke the block
- past event-block: The block that was broken
- event-block: The block after being broken
- event-items (or drops): The drops of the block
- event-entities: The entities of the dropped items
If the breaking of the block leads to others being broken, such as torches, they will appearin "event-items" and "event-entities".
Examples:
broadcast event-player
broadcast past event-block
broadcast event-block
broadcast event-items
broadcast event-entities
on block drop of oak log:
Patterns: |
|
Since: | 2.5 |
Requirements: | Minecraft 1.13 or newer |
Examples:
send "Fertilized %size of fertilized blocks% blocks got fertilized."
Patterns: |
|
Since: | 2.2-Fixes-V10 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.2-dev31 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.2-dev31 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 (break), unknown (mine), 2.6 (BlockData support) |
Requirements: |
Examples:
on break of stone:
on mine of any ore:
on break of chest[facing=north]:
on break of potatoes[age=7]:
Patterns: |
|
Since: | 2.10 |
Requirements: |
Examples:
set broadcast-message to "&c[BROADCAST] %broadcasted message%"
Patterns: |
|
Since: | Unknown |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0, 2.6 (BlockData support) |
Requirements: |
Examples:
on burn of wood, fences, or chests:
on burn of oak_log[axis=y]:
Patterns: |
|
Since: | 1.0 (basic), 2.0 ([un]cancellable) |
Requirements: |
Please note that the data value of the block to be placed is not available in this event, only its ID.
Examples:
cancel event
Patterns: |
|
Since: | 1.4.1 |
Requirements: |
Use chat format to change message format.
Use chat recipients to edit chat recipients.
Examples:
if player has permission "owner":
set chat format to "<red>[player]<light gray>: <light red>[message]"
else if player has permission "admin":
set chat format to "<light red>[player]<light gray>: <orange>[message]"
else: #default message format
set chat format to "<orange>[player]<light gray>: <white>[message]"
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0, 2.10 (blockdata) |
Requirements: |
Please note that rightclick events with an empty hand while not looking at a block are not sent to the server, so there's no way to detect them.
Also note that a leftclick on an entity is an attack and thus not covered by the 'click' event, but the 'damage' event.
Examples:
on rightclick holding a fishing rod:
on leftclick on a stone or obsidian:
on rightclick on a creeper:
on click with a sword:
on click on chest[facing=north]:
on click on campfire[lit=true]:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.0 |
Requirements: |
Examples:
on command "/stop":
on command "pm Njol ":
Patterns: |
|
Since: | 2.0 |
Requirements: |
Examples:
player doesn't have permission "VIP"
number of players is greater than 15
kick the player due to "The last 5 slots are reserved for VIP players."
Patterns: |
|
Since: | 2.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | unknown (before 2.1) |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0, 2.7 (by entity) |
Requirements: |
Examples:
on damage of a player:
on damage of player by zombie:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
on death of player:
on death of a wither or ender dragon:
broadcast "A %entity% has been slain in %world%!"
Patterns: |
|
Since: | unknown (before 2.1) |
Requirements: |
Examples:
send "that'd be 19.99 please!"
Patterns: |
|
Since: | unknown (before 2.1), 2.7 (entity) |
Requirements: |
Examples:
if event-item is compass:
cancel event
on entity drop of an egg:
if event-entity is a chicken:
set item of event-dropped item to a diamond
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.10 |
Requirements: | Paper |
Examples:
if the used firework will be consumed:
prevent the used firework from being consume
Patterns: |
|
Since: | 2.5 |
Requirements: |
To get the enchanted item, see the enchant item expression
Examples:
if the clicked button is 1: # offer 1
set the applied enchantments to sharpness 10 and unbreaking 10
Patterns: |
|
Since: | 2.5 |
Requirements: |
To get the enchant item, see the enchant item expression
Examples:
set enchant offer 1 to sharpness 1
set the cost of enchant offer 1 to 10 levels
Patterns: |
|
Since: | 2.9.0 |
Requirements: | Paper |
Note: This does not stop enderman from targeting the player as a result of getting damaged.
Examples:
on enderman enrage:
if player has permission "safeFrom.enderman":
cancel event
Patterns: |
|
Since: | unknown, 2.5.2 (falling block), 2.8.0 (any entity support) |
Requirements: |
event-block represents the old block and event-blockdata represents the new replacement that'll be applied to the block.
Examples:
kill event-entity
broadcast "A sheep stole some grass!"
on falling block land:
event-entity is a falling dirt
cancel event
Patterns: |
|
Since: | 2.10 |
Requirements: |
Examples:
send "When a %breeding mother% and %breeding father% love each other very much they make %offspring%" to breeder
Patterns: |
|
Since: | 2.2-dev13b |
Requirements: |
Examples:
kill event-entity
Patterns: |
|
Since: | 2.7 |
Requirements: | Paper 1.15.2+ |
Examples:
if entity is a wither skeleton:
cancel event
Patterns: |
|
Since: | 2.2-dev13b |
Requirements: |
Examples:
cancel event
Patterns: |
|
Since: | 2.5.3 |
Requirements: |
Examples:
broadcast "A %type of event-entity% has entered a portal!
Patterns: |
|
Since: | 2.10 |
Requirements: |
This modification can include adding, removing or changing their potion effect.
Examples:
broadcast "A potion effect was added to %event-entity%!"
on entity potion effect modification of night vision:
Patterns: |
|
Since: | 2.8.0 |
Requirements: |
Examples when it's called include; when a zombie gets cured and a villager spawns, an entity drowns in water like a zombie that turns to a drown, an entity that gets frozen in powder snow, a mooshroom that when sheared, spawns a new cow.
Examples:
on mooshroom transforming:
on zombie, skeleton or slime transform:
Patterns: |
|
Since: | 2.7 |
Requirements: |
Examples:
set {_xp} to event-experience
broadcast "%{_xp}%"
Patterns: |
|
Since: | 2.10 |
Requirements: |
Experience cooldown is how long until a player can pick up another orb of experience.
Examples:
broadcast event-player
broadcast event-timespan
broadcast past event-timespan
broadcast xp cooldown change reason
Patterns: |
|
Since: | 2.0 |
Requirements: |
Please note that this event will not fire for xp orbs spawned by plugins (including Skript) with Bukkit.
Examples:
world is "minigame_world"
cancel event
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0, 2.6 (BlockData support) |
Requirements: |
Examples:
on fade of snow[layers=2]
Patterns: |
|
Since: | 2.4 |
Requirements: |
Examples:
if event-colors contains red:
on firework exploding colored red, light green and black:
on firework explosion colored rgb 0, 255, 0:
broadcast "A firework colored %colors% was exploded at %location%!"
Patterns: |
|
Since: | 1.3.7 |
Requirements: |
Examples:
broadcast "Welcome %player% to the server!"
Patterns: |
|
Since: | Unknown |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.2-dev36 |
Requirements: |
Examples:
if {game::%player%::playing} exists:
cancel event
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
if event-block is water:
broadcast "Build more dams! It's starting to get wet in here"
Patterns: |
|
Since: | 1.0, 2.6 (BlockData support) |
Requirements: |
Examples:
on form of a mushroom:
Patterns: |
|
Since: | 1.0, 2.10 (specific item) |
Requirements: |
Examples:
broadcast fuel burned
if burned fuel is coal:
add 20 seconds to burn time
Patterns: |
|
Since: | 2.10 |
Requirements: |
Examples:
if event-items is an iron ingot:
remove event-items from event-player's inventory
Patterns: |
|
Since: | 2.2-dev21 |
Requirements: |
Examples:
cancel the event # bad idea, but you CAN do it!
Patterns: |
|
Since: | 1.0, 2.2-dev20 (plants), 2.8.0 (from, into, blockdata) |
Requirements: |
"of" matches any grow event, "from" matches only the old state, "into" matches only the new state,and "from into" requires matching both the old and new states.
Using "and" lists in this event is equivalent to using "or" lists. The event will trigger if any one of the elements is what grew.
Examples:
on grow of tree:
on grow of wheat[age=7]:
on grow from a sapling:
on grow into tree:
on grow from a sapling into tree:
on grow of wheat, carrots, or potatoes:
on grow into tree, giant mushroom, cactus:
on grow from wheat[age=0] to wheat[age=1] or wheat[age=2]:
Patterns: |
|
Since: | 2.3 |
Requirements: |
Works also when one or both of the slots are empty.
The event is called before the items are actually swapped,
so when you use the player's tool or player's offtool expressions,
they will return the values before the swap -
this enables you to cancel the event before anything happens.
Examples:
event-player's tool is a diamond sword
cancel event
Patterns: |
|
Since: | 1.0, 2.9.0 (by reason) |
Requirements: |
Examples:
on player healing from a regeneration potion:
on healing of a zombie, cow or a wither:
heal reason is healing potion
cancel event
Patterns: |
|
Since: | 2.5.1 |
Requirements: |
Examples:
push event-entity upwards at speed 2
Patterns: |
|
Since: | 1.4.4 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
The burn event will be called when the block is about do be destroyed by the fire.
Examples:
if event-block is a ladder:
cancel event
Patterns: |
|
Since: | 2.2-Fixes-V10 |
Requirements: |
Examples:
if event-item is stone:
give player 1 stone
remove 20$ from player's balance
Patterns: |
|
Since: | 2.2-dev21 |
Requirements: |
Examples:
if player's location is {location}:
send "You exited the shop!"
Patterns: |
|
Since: | 2.7 |
Requirements: |
Examples:
if player's current inventory is {_gui}:
send "You can't drag your items here!" to player
cancel event
Patterns: |
|
Since: | 2.8.0 |
Requirements: |
When this event is called, the initiator may have already removed the item from the source inventory and is ready to move it into the destination inventory.
If this event is cancelled, the items will be returned to the source inventory.
Examples:
broadcast "%holder of past event-inventory% is transporting %event-item% to %holder of event-inventory%!"
Patterns: |
|
Since: | 2.2-dev21 |
Requirements: |
Examples:
close player's inventory
Patterns: |
|
Since: | 2.5.1 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.7 |
Requirements: | Paper 1.19.2+ |
Warning: setting the event-slot to a new item can result in an infinite loop.
Examples:
if event-item is a diamond:
send "You obtained a diamond!" to player
Patterns: |
|
Since: | 2.1.1 |
Requirements: |
This event cannot be cancelled.
Examples:
Patterns: |
|
Since: | 2.5 |
Requirements: |
Examples:
cancel event
Patterns: |
|
Since: | 2.2-dev35 |
Requirements: |
Examples:
send "Not my precious!"
cancel event
Patterns: |
|
Since: | 2.5.1 |
Requirements: | Minecraft 1.13 or newer |
Examples:
chance of 50%:
cancel the event
send "Oops! Mending failed!" to player
Patterns: |
|
Since: | 2.2-dev35 |
Requirements: |
Examples:
cancel event
Patterns: |
|
Since: | unknown (before 2.1) |
Requirements: |
Examples:
broadcast "Someone dropped an iron sword!"
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
message "Welcome on our awesome server!"
broadcast "%player% just joined the server!"
Patterns: |
|
Since: | 2.3 |
Requirements: |
This event requires PaperSpigot.
Examples:
event-player does not have permission "jump"
cancel event
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.3 |
Requirements: |
This event requires Minecraft 1.12+.
Examples:
if player's language starts with "en":
send "Hello!"
Patterns: |
|
Since: | 2.10 |
Requirements: |
Examples:
send "Baaaaa--" to player
on player leash:
send "<%event-entity%> Let me go!" to player
on unleash:
broadcast "<%event-entity%> I'm free"
on player unleash:
send "<%event-entity%> Thanks for freeing me!" to player
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0, 2.4 (level up/down) |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
spawn a zombie at location of event-entity
Patterns: |
|
Since: | 2.7 |
Requirements: | MC 1.16+ |
For example, when opening a shipwreck chest.
Examples:
chance of 10%
add 64 diamonds to the loot
send "You hit the jackpot at %event-location%!"
Patterns: |
|
Since: | 2.10 |
Requirements: |
Examples:
cancel event # No one is allowed love here
Patterns: |
|
Since: | 2.6, 2.8.0 (turn around) |
Requirements: | Paper 1.16.5+ (entity move) |
NOTE: Move event will only be called when the entity/player moves position, keyword 'turn around' is for orientation (ie: looking around), and the combined syntax listens for both.
NOTE: These events can be performance heavy as they are called quite often.
Examples:
if player does not have permission "player.can.move":
cancel event
on skeleton move:
if event-entity is not in world "world":
kill event-entity
on player turning around:
send action bar "You are currently turning your head around!" to player
Patterns: |
|
Since: | 2.0 |
Requirements: |
Please note that using this event can cause lag if there are many players online.
Examples:
on stepping on stone:
Patterns: |
|
Since: | 1.4.6 |
Requirements: |
Examples:
on block physics:
block is sand
cancel event
Patterns: |
|
Since: | unknown (before 2.1), 2.5 (entity) |
Requirements: |
Examples:
on entity pickup of wheat:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.10 |
Requirements: | Minecraft 1.16+ |
Cancelling will prevent piglins from dropping items, but will still make them pick up the input.
Examples:
if barter drops contain diamond:
send "Diamonds belong in the money pit!" to player
cancel event
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
broadcast "A piston is extending!"
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
broadcast "A piston is retracting!"
Patterns: |
|
Since: | 1.0, 2.6 (BlockData support) |
Requirements: |
Examples:
on place of a furnace, workbench or chest:
on break of chest[type=right] or chest[type=left]
Patterns: |
|
Since: | 2.7 |
Requirements: |
Examples:
send "You entered a chunk: %past event-chunk% -> %event-chunk%!" to player
Patterns: |
|
Since: | 2.7 |
Requirements: | Paper 1.16+ |
Cancelling this event will prevent the player from being counted as deeply sleeping unless they exit and re-enter the bed.
Examples:
send "Zzzz.." to player
Patterns: |
|
Since: | 2.10 |
Requirements: | Minecraft 1.21.3+ |
Note: The input keys event value is the set of keys the player is currently pressing, not the keys that were pressed or released.
Examples:
send "You are pressing: %event-inputkeys%" to player
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Minecraft 1.14+ (event-projectile) |
Examples:
cancel the event
teleport event-projectile to block 5 above event-projectile
Patterns: |
|
Since: | 2.7 |
Requirements: | Paper 1.16.5+ |
Examples:
chance of 50%:
cancel event
send "The trade was somehow denied!" to player
Patterns: |
|
Since: | 2.2-dev28 |
Requirements: |
Examples:
world is "city"
send "Welcome to the City!"
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0, 2.5.3 (event-entity support) |
Requirements: | Minecraft 1.14+ (event-entity support) |
In Minecraft 1.14+, you can use the player in this event.
Please note that there may not always be a player (or other entity) in this event.
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.2-Fixes-V10 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 (pressure plate), 1.4.4 (tripwire) |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.5 |
Requirements: | Paper |
Examples:
teleport shooter of event-projectile to event-entity
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
if victim's health <= 3:
delete event-projectile
Patterns: |
|
Since: | 1.0 (simple disconnection) |
Requirements: |
Examples:
on disconnect:
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper |
Cancelling this event will skip the current arrow item and fire a new event for the next arrow item.
The arrow and bow in the event can be accessed with the Readied Arrow/Bow expression.
Examples:
selected bow's name is "Spectral Bow"
if selected arrow is not a spectral arrow:
cancel event
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
send "someone is using redstone" to console
Patterns: |
|
Since: | 2.1 |
Requirements: | Supported regions plugin |
This event requires a supported regions plugin to be installed.
Examples:
message "Leaving %region%."
Patterns: |
|
Since: | 2.4 |
Requirements: |
send resource pack effect.
The resource pack condition can be used
to check the resource pack state.
This event will be triggered once when the player accepts or declines the resource pack request,
and once when the resource pack is successfully installed or failed to download.
Examples:
if the resource pack was declined or failed to download:
on resource pack deny:
kick the player due to "You have to install the resource pack to play in this server!"
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.2-dev28 |
Requirements: |
Examples:
entity is player
entity has permission "admin.undying"
uncancel the event
Patterns: |
|
Since: | 2.5 |
Requirements: |
Note: the riptide action is performed client side, so manipulating the player in this event may have undesired effects.
Examples:
send "You are riptiding!"
Patterns: |
|
Since: | 2.0 |
Requirements: |
The keyword 'async' indicates the trigger can be ran asynchronously,
Examples:
set {running::%script%} to true
on unload:
set {running::%script%} to false
Patterns: |
|
Since: | 2.8.0 |
Requirements: |
Modifications will affect what commands show up for the player to tab complete. They will not affect what commands the player can actually run.
Adding new commands to the list is illegal behavior and will be ignored.
Examples:
set command list to command list where [input does not contain ":"]
remove "help" from command list
Patterns: |
|
Since: | 2.3 |
Requirements: |
The IP expression can be used to get the IP adress of the pinger.
This event can be cancelled on PaperSpigot 1.12.2+ only and this means the player will see the server as offline (but still can join).
Also you can use MOTD, Max Players, Online Players Count, Protocol Version, Version String, Hover List and Server Icon expressions, and Player Info Visibility and Hide Player from Server List effects to modify the server list.
Examples:
set the motd to "Welcome %{player-by-IP::%ip%}%! Join now!" if {player-by-IP::%ip%} is set, else "Join now!"
set the fake max players count to (online players count + 1)
set the shown icon to a random server icon out of {server-icons::*}
Patterns: |
|
Since: | 2.0 |
Requirements: |
Examples:
on server stop:
Patterns: |
|
Since: | 2.2-dev21 |
Requirements: |
Examples:
cancel event
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
if projectile is an arrow:
send "you shot an arrow!" to shooter
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
line 2 is empty
set line 1 to "<red>%line 1%"
Patterns: |
|
Since: | 2.2-dev26 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0, 2.10 (specific item) |
Requirements: |
Examples:
clear the smelted item
on smelt of raw iron:
broadcast smelted item
set the smelted item to iron block
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
on sneak toggle:
player is sneaking
push the player upwards at speed 0.5
Patterns: |
|
Since: | 1.0, 2.5.1 (non-living entities) |
Requirements: |
Examples:
on spawn of an ender dragon:
broadcast "A dragon has been sighted in %world%!"
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
broadcast "someone changed the spawn!"
Patterns: |
|
Since: | 2.7 |
Requirements: | Paper |
Examples:
Patterns: |
|
Since: | 2.5 |
Requirements: | Minecraft 1.13 or newer |
Examples:
loop absorbed blocks:
broadcast "%loop-block% was absorbed by a sponge"!
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
player is not sprinting
send "Run!"
Patterns: |
|
Since: | 2.10 |
Requirements: |
Examples:
if the smelting item is raw iron:
set total cook time to 1 second
on smelting start of raw iron:
add 20 seconds to total cook time
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper 1.16+ |
Examples:
cancel the event
on stonecutting:
broadcast "%player% is using stonecutter to craft %event-item%!"
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper 1.18.2+ |
Note that event-timespan will return the time the item was used for.
Examples:
broadcast "%player% used %event-item% for %event-timespan%."
Patterns: |
|
Since: | 2.3 |
Requirements: | 1.13 or newer |
Examples:
event-entity does not have permission "swim"
cancel event
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
target is a player
Patterns: |
|
Since: | 1.0, 2.9.0 (entity teleport) |
Requirements: |
When teleporting entities, the event may also be called due to a result of natural causes, such as an enderman or shulker teleporting, or wolves teleporting to players.
When teleporting players, the event can be called by teleporting through a nether/end portal, or by other means (e.g. plugins).
Examples:
on player teleport:
on creeper teleport:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 2.10 |
Requirements: |
Examples:
on vehicle collision with obsidian:
on vehicle collision with a zombie:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
cancel event
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
entity is a player
cancel event
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
if event-entity is a spider:
kill event-entity
Patterns: |
|
Since: | 2.10 |
Requirements: |
Please note that using this event can cause lag if there are multiple vehicle entities, i.e. Horse, Pig, Boat, Minecart
Examples:
broadcast past event-location
broadcast event-location
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
on weather change to sunny:
Patterns: |
|
Since: | 1.0, 2.8.0 (defining worlds) |
Requirements: |
any scripts are loaded, this event is only called for newly created worlds.
World management plugins might change the behaviour of this event though.
Examples:
Patterns: |
|
Since: | 1.0, 2.8.0 (defining worlds) |
Requirements: |
Examples:
broadcast "The world %event-world% has been loaded!"
Patterns: |
|
Since: | 1.0, 2.8.0 (defining worlds) |
Requirements: |
Examples:
broadcast "The world %event-world% has been saved"
Patterns: |
|
Since: | 1.0, 2.8.0 (defining worlds) |
Requirements: |
Examples:
broadcast "the %event-world% has been unloaded!"
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
Patterns: |
|
Since: | 1.0 |
Requirements: |
Examples:
every minecraft hour:
every tick: # can cause lag depending on the code inside the event
every minecraft days:
Patterns: | |
Since: | 1.0 |
Requirements: |
Examples:
every minecraft hour in "flatworld":
every tick in "world": # can cause lag depending on the code inside the event
every minecraft days in "plots":
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
the amount of {thing}
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.5 |
NOTE: Minecraft namespaces are supported, ex: 'minecraft:generic.attack_damage'.
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 1.4.4 |
NOTE: Minecraft namespaces are supported, ex: 'minecraft:basalt_deltas'.
Examples:
Patterns: |
|
Since: | 2.5 |
Examples:
set target block of player to oak stairs[facing=north;waterlogged=true]
set block at player to grass_block[snowy=true]
set loop-block to minecraft:chest[facing=north]
set block above player to oak_log[axis=y]
set target block of player to minecraft:oak_leaves[distance=2;persistent=false]
Patterns: |
|
Since: | 1.0 |
Examples:
Patterns: |
|
Since: | 2.4 |
Requirements: | Minecraft 1.14 or newer |
NOTE: Minecraft namespaces are supported, ex: 'minecraft:british_shorthair'.
Examples:
Patterns: |
|
Since: | 2.0 |
Examples:
Patterns: |
|
Since: | 2.2-dev16b, 2.2-dev35 (renamed to click type) |
Examples:
Patterns: |
|
Since: | Unknown |
Examples:
set the color of the block to green
message "You're holding a &amp;amp;amp;amp;amp;amp;lt;%color of tool%&amp;amp;amp;amp;amp;amp;gt;%color of tool%&amp;amp;amp;amp;amp;amp;lt;reset&amp;amp;amp;amp;amp;amp;gt; wool block"
Patterns: |
|
Since: | 1.0 |
Examples:
trigger:
if arg-1 is not set:
if command sender is console:
send "You can't push yourself as a console :\" to sender
stop
push sender upwards with force 2
send "Yay!"
else:
push arg-1 upwards with force 2
send "Yay!" to sender and arg-1
Patterns: |
|
Since: | 2.10 |
Configs can be reloaded or navigated to find options.
Examples:
Patterns: |
|
Since: | 2.0 |
Please note that support for this type is very rudimentary, e.g. lava, fire and burning, as well as projectile and attack are considered different types.
Examples:
Patterns: |
|
Since: | 1.4 |
See time and timespan for the other time types of Skript.
Examples:
subtract a day from {_yesterday}
# now {_yesterday} represents the date 24 hours before now
Patterns: |
|
Since: | 2.3 |
Examples:
Patterns: | |
Since: | 2.0 |
Locations and some blocks also have a direction, but without a length.
Please note that directions have changed extensively in the betas and might not work perfectly. They can also not be used as command arguments.
Examples:
loop blocks from the block infront of the player to the block 10 below the player:
set the block behind the loop-block to water
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 1.4.6 |
NOTE: Minecraft namespaces are supported, ex: 'minecraft:basalt_deltas'.
As of Minecraft 1.21 this will also support custom enchantments using namespaces, ex: 'myenchants:explosive'.
Examples:
Patterns: |
|
Since: | 2.5 |
Examples:
set enchant offer 1 to sharpness 1
set the cost of enchant offer 1 to 10 levels
Patterns: |
|
Since: | 1.4.6 |
Examples:
helmet is enchanted with waterbreathing
Patterns: |
|
Since: | 1.0 |
Examples:
player is an op
projectile is an arrow
shoot a fireball from the player
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.10 |
Requirements: | Minecraft 1.20.2+ |
This includes all of the data associated with an entity (its name, health, attributes, etc.), at the time this expression is used. Essentially, these are a way to create templates for entities.
Individual attributes of a snapshot cannot be modified or retrieved.
Examples:
Patterns: |
|
Since: | 1.3 |
Examples:
spawn a creeper
Patterns: |
|
Since: | 1.3 |
Examples:
Patterns: |
|
Since: | 2.10 |
This may also return a result.
Examples:
Patterns: |
|
Since: | 2.0 |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.4 |
which can be used in the launch firework effect.
See the firework effect expression for detailed patterns.
Examples:
launch trailing flickering star colored purple, yellow, blue, green and red fading to pink at target entity
launch ball large colored red, purple and white fading to light green and black at player's location with duration 1
Patterns: |
|
Since: | 2.4 |
Examples:
Patterns: |
|
Since: | 2.10 |
This can be executed (with arguments) and may return a result.
Examples:
set {_result} to the result of {_function}
Patterns: |
|
Since: | 1.0 |
Examples:
set the player argument's game mode to creative
Patterns: |
|
Since: | 2.5 |
Requirements: | Minecraft 1.13 or newer |
Examples:
Patterns: |
|
Since: | 2.5 |
Examples:
Patterns: |
|
Since: | 2.4 |
Requirements: | Minecraft 1.14 or newer |
Examples:
Patterns: |
|
Since: | 2.5 |
Examples:
Patterns: |
|
Since: | 2.10 |
Requirements: | Minecraft 1.21.3+ |
Examples:
Patterns: |
|
Since: | 1.0 |
An inventory has a fixed amount of slots which represent a specific place in the inventory, e.g. the helmet slot for players (Please note that slot support is still very limited but will be improved eventually).
Examples:
Patterns: |
|
Since: | 2.2-dev16 |
Examples:
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper |
Examples:
Patterns: |
|
Since: | 2.2-dev32 |
Examples:
Patterns: |
|
Since: | 1.0 |
You don't usually need this type except when you want to make a command that only accepts an exact item.
Please note that currently 'material' is exactly the same as 'item', i.e. can have an amount & enchantments.
Examples:
{_item} is a torch
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 1.0 |
An item type can also have one or more enchantments with or without a specific level defined, and can optionally start with 'all' or 'every' to make this item type represent all types that the alias represents, including data ranges.
Examples:
add all slabs to the inventory of the block
player's tool is a diamond sword of sharpness
remove a pickaxes of fortune 4 from {stored items::*}
set {_item} to 10 of every upside-down stair
block is dirt or farmland
Patterns: |
|
Since: | 1.0 |
Examples:
shoot a zombie from the creeper
Patterns: |
|
Since: | 2.10 |
Some loot tables will require some values (i.e. looter, location, looted entity) in a loot context when generating loot whereas others may not.
For example, the loot table of a simple dungeon chest will only require a location, whereas the loot table of a cow will require a looting player, looted entity, and location.
You can find more information about this in https://minecraft.wiki/w/Loot_context
Examples:
Patterns: |
|
Since: | 2.10 |
You can find more information about this in https://minecraft.wiki/w/Loot_table
Examples:
Patterns: |
|
Since: | 2.2-dev36 |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.0 |
Requirements: | Vault, an economy plugin that supports Vault |
add 100$ to the player's balance
and add 100 to the player's balance
. Examples:
remove Fr. 9.95 from the player's money
set the victim's money to 0
increase the attacker's balance by the level of the victim * 100
Patterns: |
|
Since: | 2.7 |
Requirements: | Paper 1.16+ |
Examples:
Patterns: |
|
Since: | 2.10 |
This may have navigable children.
Examples:
Patterns: |
|
Since: | 1.0 |
Please note that many expressions only need integers, i.e. will discard any fractional parts of any numbers without producing an error.
Radians will be converted to degrees.
Examples:
set {_temp} to 2*{_temp} - 2.5
set {_angle} to 3.14 in radians # will be converted to degrees
Patterns: |
|
Since: | 1.0 |
Examples:
Patterns: |
|
Since: | 2.0 beta 8 |
Examples:
Patterns: |
|
Since: | 1.0 |
You have two possibilities to use players as command arguments: <player> and <offline player>. The first requires that the player is online and also accepts only part of the name, while the latter doesn't require that the player is online, but the player's name has to be entered exactly.
Examples:
set {_p} to "N" parsed as a player # returns Notch if Notch is online because their name starts with 'N' (case insensitive) however, it would return nothing if no player whose name starts with 'N' is online.
Patterns: |
|
Since: | 2.5.2 |
Examples:
Patterns: |
|
Since: | Unknown |
Examples:
apply potion of speed 2 to the player for 60 seconds
remove invisibility from the victim
Patterns: |
|
Since: | 1.0 |
Examples:
shoot an arrow at speed 5 from the player
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
add "hello" to {queue}
broadcast the 1st element of {queue}
Patterns: |
|
Since: | 2.8.0 |
Requirements: | Paper 1.16.5+ |
Examples:
Patterns: |
|
Since: | 2.1 |
Requirements: | Supported regions plugin |
Please note that some regions plugins do not have named regions, some use numerical ids to identify regions, and some may have regions with the same name in different worlds, thus using regions like "region name" in scripts may or may not work.
Examples:
Patterns: |
|
Since: | 2.4 |
Examples:
Patterns: |
|
Since: | 2.10 |
Disabled scripts will report as being empty since their content has not been loaded.
Examples:
Patterns: |
|
Since: | 2.3 |
Examples:
Patterns: |
|
Since: | Unknown |
The most important property that distinguishes a slot from an item is its ability to be changed, e.g. it can be set, deleted, enchanted, etc. (Some item expressions can be changed as well, e.g. items stored in variables. For that matter: slots are never saved to variables, only the items they represent at the time when the variable is set).
Please note that tool can be regarded a slot, but it can actually change it's position, i.e. doesn't represent always the same slot.
Examples:
delete helmet of the victim
set the color of the player's tool to green
enchant the player's chestplate with projectile protection 5
Patterns: |
|
Since: | 2.4 |
Examples:
Patterns: |
|
Since: | 2.3 |
Examples:
Patterns: |
|
Since: | 2.2-dev35 |
Examples:
Patterns: |
|
Since: | 2.10 |
Requirements: | Paper 1.19+ |
Examples:
Patterns: |
|
Since: | Unknown |
Examples:
Patterns: |
|
Since: | Unknown |
Examples:
Patterns: |
|
Since: | Unknown |
Examples:
Patterns: |
|
Since: | Unknown |
Examples:
Patterns: |
|
Since: | 1.0 |
Because scripts are also text, you have to put text into double quotes to tell Skript which part of the line is an effect/expression and which part is the text.
Please read the article on Texts and Variable Names to learn more.
Examples:
message "Hello %player%"
message "The id of ""%type of tool%"" is %id of tool%."
Patterns: |
|
Since: | 1.0 |
This type might be removed in the future as you can use 'time of world is between x and y' as a replacement.
Examples:
Patterns: |
|
Since: | 1.0, 2.6.1 (weeks, months, years) |
NOTE: Months always have the value of 30 days, and years of 365 days.
See date and time for the other time types of Skript.
Examples:
wait a minecraft second and 5 ticks
every 10 mc days and 12 hours:
halt for 12.7 irl minutes, 12 hours and 120.5 seconds
Patterns: |
|
Since: | 2.8.0 |
Examples:
Patterns: |
|
Since: | Unknown |
Examples:
grow a huge red mushroom above the block
Patterns: |
|
Since: | 2.0 |
This is mostly used for expressions like 'event-<type>', '<type>-argument', 'loop-<type>', etc., e.g. event-world, number-argument and loop-player.
Examples:
{variable} is a type # check whether the variable contains a type, e.g. number or player
{variable} is an object # will always succeed if the variable is set as everything is an object, even types.
disable PvP in the event-world
kill the loop-entity
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.2-dev23 |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.10 |
Examples:
Patterns: |
|
Since: | 2.1 |
Examples:
play mob spawner flames at the targeted block to the player
Patterns: |
|
Since: | 1.0 |
Examples:
is sunny in the player's world
message "It is %weather in the argument's world% in %world of the argument%"
Patterns: |
|
Since: | @VERSION |
Requirements: | Minecraft 1.21+ |
NOTE: Minecraft namespaces are supported, ex: 'minecraft:ashen'.
Examples:
Patterns: |
|
Since: | 1.0, 2.2 (alternate syntax) |
Examples:
Patterns: |
|
Since: | 2.7 |
Examples:
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
Examples:
abs(-2) = 2
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
The returned angle is measured counterclockwise in a standard mathematical coordinate system (x to the right, y to the top).
Examples:
atan2(10, 0) = 90
atan2(-10, 5) = -63.4349
Patterns: |
|
Since: | 2.10 |
Return Type: | Quaternion |
Examples:
Patterns: |
|
Since: | 2.2-dev32 |
Return Type: | long |
Examples:
Patterns: |
|
Since: | 2.5 |
Return Type: | Boolean |
Examples:
caseEquals("text", "text", "text") = true
caseEquals({some list variable::*})
Patterns: |
|
Since: | 2.2 |
Return Type: | long |
Examples:
ceil(2) = 2
ceil(2.99) = 3
Patterns: |
|
Since: | 2.8.0 |
Return Type: | Number |
Examples:
clamp(5.5, 0, 5) = 5
clamp(0.25, 0, 0.5) = 0.25
clamp(5, 7, 10) = 7
clamp((5, 0, 10, 9, 13), 7, 10) = (7, 7, 10, 9, 10)
set {_clamped::*} to clamp({_values::*}, 0, 10)
Patterns: |
|
Since: | 2.9.0 |
Return Type: | Text |
Examples:
concat("foo ", 100, " bar") # foo 100 bar
Patterns: |
|
Since: | 2.2 |
Return Type: | Date |
A time zone and DST offset can be specified as well (in minutes), if they are left out the server's time zone and DST offset are used (the created date will not retain this information).
Examples:
date(1990, 3, 5, 14, 30) # 14:30, 5th May 1990
date(1999, 12, 31, 23, 59, 59, 999, -3*60, 0) # almost year 2000 in parts of Brazil (-3 hours offset, no DST)
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
Examples:
exp(1) = 2.7183
Patterns: |
|
Since: | 2.10 |
Return Type: | Text |
Examples:
Patterns: |
|
Since: | 2.2 |
Return Type: | long |
Examples:
floor(2) = 2
floor(2.99) = 2
Patterns: |
|
Since: | 2.10 |
Return Type: | Text |
Will return none if the format is invalid.
For further reference, see this article.
Examples:
aliases: bal
executable by: players
trigger:
set {_money} to formatNumber({money::%sender's uuid%})
send "Your balance: %{_money}%" to sender
Patterns: |
|
Since: | 2.8.0 |
Return Type: | Boolean |
Examples:
isNaN(0/0) # true
isNaN(sqrt(-1)) # true
Patterns: |
|
Since: | 2.10 |
Return Type: | Text |
Examples:
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
Returns NaN (not a number) if the argument is negative.
Examples:
ln(exp(5)) = 5
ln(2) = 0.6931
Patterns: |
|
Since: | 2.2 |
Return Type: | Location |
If for whatever reason the world is not found, it will fallback to the server's main world.
Examples:
teleport player to location(1,1,1, world "world")
teleport player to location(1,1,1, world "world", 100, 0)
teleport player to location(1,1,1, world "world", yaw of player, pitch of player)
teleport player to location(1,1,1, world of player)
teleport player to location(1,1,1, world("world"))
teleport player to location({_x}, {_y}, {_z}, {_w}, {_yaw}, {_pitch})
# SETTING BLOCKS
set block at location(1,1,1, world "world") to stone
set block at location(1,1,1, world "world", 100, 0) to stone
set block at location(1,1,1, world of player) to stone
set block at location(1,1,1, world("world")) to stone
set block at location({_x}, {_y}, {_z}, {_w}) to stone
# USING VARIABLES
set {_l1} to location(1,1,1)
set {_l2} to location(10,10,10)
set blocks within {_l1} and {_l2} to stone
if player is within {_l1} and {_l2}:
# OTHER
kill all entities in radius 50 around location(1,65,1, world "world")
delete all entities in radius 25 around location(50,50,50, world "world_nether")
ignite all entities in radius 25 around location(1,1,1, world of player)
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
log(base ^ exponent, base) = exponent
for any positive number 'base' and any number 'exponent'.Another useful equation is
base ^ log(a, base) = a
for any numbers 'base' and 'a'.Please note that due to how numbers are represented in computers, these equations do not hold for all numbers, as the computed values may slightly differ from the correct value.
Returns NaN (not a number) if any of the arguments are negative.
Examples:
log(16, 2) = 4 # 2^4 = 16
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
Examples:
max(1, 2, 3, 4) = 4
max({some list variable::*})
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
Examples:
min(1, 2, 3, 4) = 1
min({some list variable::*})
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
d/m
, where d and m are the arguments of this function.The returned value is always positive. Returns NaN (not a number) if the second argument is zero.
Examples:
mod(256436, 100) = 36
mod(-1, 10) = 9
Patterns: |
|
Since: | 2.8.0, 2.9.0 (prevent lookups) |
Return Type: | Offline Player |
Examples:
set {_p} to offlineplayer("069a79f4-44e9-4726-a5be-fca90e38aaf5")
set {_p} to offlineplayer("Notch", false)
Patterns: |
|
Since: | 2.8.0 |
Return Type: | Player |
Setting 'getExactPlayer' parameter to true will return the player whose name is exactly equal to the provided name instead of returning a player that their name starts with the provided name.
Examples:
set {_p} to player("Notch", true) # will return the only online player whose name is 'Notch'
set {_p} to player("069a79f4-44e9-4726-a5be-fca90e38aaf5") # &amp;amp;lt;none&amp;amp;gt; if player is offline
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
Examples:
product(2, 3, 4) = 24
product({some list variable::*})
product(2, {_v::*}, and the player's y-coordinate)
Patterns: |
|
Since: | 2.10 |
Return Type: | Quaternion |
Examples:
Patterns: |
|
Since: | 2.5, 2.10 (alpha) |
Return Type: | Color |
Examples:
set the colour of a text display to rgb(10, 50, 100, 50)
Patterns: |
|
Since: | 2.2, 2.7 (decimal placement) |
Return Type: | Number |
Examples:
round(2) = 2
round(2.99) = 3
round(2.5) = 3
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
Examples:
sin(60) = 0.866
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
(argument) ^ (1/2)
– other roots can be calculated via number ^ (1/root)
, e.g. set {_l} to {_volume}^(1/3)
.Returns NaN (not a number) if the argument is negative.
Examples:
sqrt(2) = 1.4142
sqrt(-1) = NaN
Patterns: |
|
Since: | 2.2 |
Return Type: | Number |
Examples:
sum(2, 3, 4) = 9
sum({some list variable::*})
sum(2, {_v::*}, and the player's y-coordinate)
Patterns: |
|
Since: | 2.2-dev23 |
Return Type: | Vector |
Examples: