Skript by SkriptLang

Create unique and inspiring features for Minecraft servers.

















Patch Release 2.8.4 5 days, 3 hours and 40 minutes ago

Skript 2.8.4

Skript 2.8.4 is here and it brings with it many bug fixes. You can report any issues on our issue tracker.

Happy Skripting!

Bug Fixes

- #6413 Adds missing attributes for MC 1.20.5
- #6473 Fixes an issue where spawning a falling block would load the chunk at 0,0.
- #6475 Fixes issue when spawning an entity at a location with no world.
- #6484 Fixes error when trying to spawn en entity from a disabled datapack.
- #6495 Fixes strings in lists not getting sorted properly.
- #6497 Adds error message to catch null return types.
- #6502 Fixes error when using invalid amounts of random characters.
- #6510 Fixes Anvil Text examples, updates Location function examples.
- #6512 Fixes unparsed literal error with the random expression.

Click here to view the full list of commits made since 2.8.3

As always, if you encounter any issues or have some minor suggestions, please report them at
If you have any bigger ideas or input for the future of Skript, you can share those too at

View Update

Patch Release 2.8.3 45 days, 4 hours and 42 minutes ago

Skript 2.8.3

A new month means a new patch! Skript 2.8.3 is here and it brings with it many bug fixes. You can report any issues on our issue tracker.

Happy Skripting!

If, and only if, you have the case-insensitive-variables config option set to false, you may experience slight changes to code behavior in functions. Previously, function parameters did not respect this option. This means that if you relied the bug that made the following code work (despite your config option set to false), your code will no longer work in this update.

function test(TEST: text):
broadcast {_test} # only {_TEST} is set now, not {_test}

Bug Fixes
- #6233 Fixed an issue where event values for the inventory item move event were mistakenly removed.
- #6309 Fixed an issue that caused some click events to fire multiple times for a single event.
- #6192 Fixed an issue where using the groups expression with LuckPerms would cause an exception.
- #6328 Fixed an issue where multiplying or adding timespans could overflow into negative values.
- #6387 Fixed an exception when trying to get the components of a non-vector.
- #6388 Fixed function parameters not respecting the case-insensitive-variables config option.
- #6391 Fixed plain always getting the same item for aliases representing multiple items.
- #6392 Fixed bucket events returning the wrong event-block.
- #6463 Fixed the at time event failing to property trigger when a world's time was changed.
- #6455 Fixed a parser issue that caused parsing to fail for some syntax when special characters were used.

Click here to view the full list of commits made since 2.8.2

As always, if you encounter any issues or have some minor suggestions, please report them at
If you have any bigger ideas or input for the future of Skript, you can share those too at

View Update

Emergency Patch Release 2.8.2 72 days, 8 hours and 28 minutes ago

Skript 2.8.2

We are releasing Skript 2.8.2 to patch a critical issue that prevented the plugin from loading on Spigot versions older than 1.18. You can report any issues on our issue tracker.

Happy Skripting!


Bug Fixes
  • #6399 Fixed an issue that prevented Skript from loading on Spigot versions older than 1.18.

Click here to view the full list of commits made since 2.8.1

As always, if you encounter any issues or have some minor suggestions, please report them at
If you have any bigger ideas or input for the future of Skript, you can share those too at

View Update

Patch Release 2.8.1 73 days, 16 hours and 48 minutes ago

Skript 2.8.1

Skript 2.8.1 is here to resolve some of the most notable issues reported with 2.8.0. We will continue to assess stability and make fixes as necessary. As always, you can report any issues on our issue tracker.

You can view the release on GitHub here.

Happy Skripting!

  • #6367 Added support for experimental entities from 1.20.3, breeze and wind charge.

  • #6357 armour is now valid for the player armor change event.

Bug Fixes
  • #6352 Fixed a mapping issue that could cause an error on shutdown.
  • #6357 Fixed an issue that caused armor of %entities% to be considered a single value.
  • #6358 Fixed an issue that allowed invalid function definitions to parse successfully.
  • #6360 Fixed parsing issues that caused valid code like loop-value - 1 to error. Additionally, many improvements have been made to the arithmetic expression to greatly improve parsing and general stability.
  • #6374 Fixed an issue that caused the scripts expression to return absolute paths for enabled scripts.
  • #6375 Fixed an error that could occur when Skript attempted to interpret an unknown enumerator as a string.
  • #6378 Fixed an invalid documentation link to the text tutorial.
  • #6383 Fixed a syntax conflict that prevented the usage of the vector from coordinates expression.

Click here to view the full list of commits made since 2.8.0

View Update

Skript 2.8.0 90 days, 3 hours and 7 minutes ago

Skript 2.8.0 is here for everyone to enjoy! This release contains many new features and bug fixes to improve the Skript experience.

Below, you can familiarize yourself with the changes. As always, report any issues to our issues page! Per our new release model, we plan to release 2.8.1 on February 1st to continue addressing bugs. In the event of any critical issues, an emergency patch release may come sooner.

Happy Skripting!

⚠ Breaking Changes
  • Using players in variable names will soon change from defaulting to names to defaulting to UUIDs. Warnings have been added to help smooth out this transition. See #6270 for more information.
  • Removed Projectile Bounce State condition and expression. These haven't done anything for years.
  • The target entity of player expression has been improved and now uses raytracing to find the player's target. This should cut down on false positives significantly, but the change in behavior may cause issues for some users who relied on its quirks.
  • Parsing players from player names is now a bit more intuitive. Previously, parsing "xyz" as a player would return the first online player to contain "xyz" somewhere in their name. Now, it only returns players that start with "xyz". See #5875 for more.
  • Major changes have been made to the on grow event. The grow event now has many more options to specify how you want it to listen. These changes mean that code that uses on grow of x may fire twice as often as expected.

# x -> something
on grow[th] from X

# something -> x
on grow[th] into X

# X -> Y
on grow[th] from X [in]to Y

# x is involved in some way
on grow[th] of X

  • The expression durability of %item% now actually returns the durability (a pick with durability 103/160, for example, returns 103) instead of the prior behavior, where it would act like damage of %item% (returning 57 for 103/160).
  • When there are multiple valid event-values for a default expression, Skript will now error and ask you to state which one you want instead of silently picking one. See the following example:

on right click on entity:
send "test"
# This will now error, because Skript doesn't know whether to
# send it to the clicked entity or the player doing the clicking.

  • Arithmetic evaluation will now return <none> for a whole chain if one of the operations is illegal. Previously, adding 1 + "hello" would treat "hello" as 0 and just return 1. This now returns <none>. However, the behavior of adding things to unset values hasn't changed. 1 + {_none} still returns 1.


  • #4198 Added syntax for interacting with item cooldowns:
    • a condition that checks whether a player has a cooldown for an item
    • an expression to get and change the cooldown of an item for a player

  • #4593 Added raw index of slot expression.
  • #4595 Added loop-(counter|iteration)[-%number%] for both normal and while loop and improved performance for loop-value.
  • #4614 Added the ability to only get certain item types when using the items in inventory expression.
  • #4617 Added anvil repair cost expression.
  • #5098 Added an expression to repeat a given string multiple times.
  • #5271 Added time states for the tool change event's event-slot and for the hotbar slot expression. Also allows the ommission of the player in hotbar slot when using it in events that have an event-player.
  • #5356 Added an expression for getting and changing the portal cooldown of an entity.
  • #5357 Added toggle pickup for items on living entities.
  • #5359 Added is jumping for living entities condition. (Paper 1.15+)
  • #5365 Added syntax for interacting with an entity's active item:
    • a condition that checks whether an entity's hand(s) is raised
    • an expression to get an entity's active item (e.g. a bow)
    • an expression to get the time they've spent using it or how long they need to keep using it to complete the action (e.g. eating)
    • an expression to get the maximum time an item can be used for
    • an expression to get the arrow selected in the ready arrow event
    • an effect to cancel the usage of an item
    • events for when a player readies an arrow and when a player stops using an item.

  • #5366 Added support for getting and modifying the inventories of items, like shulker boxes.
  • #5367 Added syntax to check and set whether a sign has glowing text.
  • #5456 Added the ability to get all armor pieces of an entity.
  • #5460 Added an event for when a player selects a stonecutting recipe.
  • #5462 Added InventoryMoveItemEvent.
  • #5482 Added an expression to get the vector projection of two vectors.
  • #5494 Added a condition to check if an entity is left or right handed, and adds an effect to change their handedness.
  • #5502 Added syntax to create vectors from directions.
  • #5562 Added a condition to check if an entity has unbstructed line of sight to another entity or location.
  • #5571 Added a condition to check if an entity is shorn or not. Also expands the entities that can be shorn with the shear effect.
  • #5573 Added a function to clamp a value between two others.
  • #5588 Added player arrow pickup event.
  • #5589 Added hit block of projectile.
  • #5618 Added is climbing for living entities condition.
  • #5636 Added Free/Max/Total Server Memory expression.
  • #5662 Added expression to return the loaded chunks of worlds.
  • #5678 Added item damage to the damage expression.
  • #5680 Added inventory close reason in inventory close event.
  • #5683 Added event-item and event-slot to the resurrect event. If no totem is present, these values are none.
  • #5763 Added Paper 1.16.5+ quit reason for finding out why a player disconnected.
  • #5800 Added an event for when an entity transforms into another entity, like a zombie villager being cured or a slime splitting into smaller slimes.
  • #5811 Added the ability to execute a command as a bungeecord command like /alert.
  • #5814 Added returns aliases for function definition.
  • #5845 Added player and offlineplayer functions.
  • #5867 Added expressions to get all characters between two characters, or an amount of random characters within a range.
  • #5894 Added support for keybind components in formatted messages (<keybind:value>).
  • #5898 Added apply bone meal effect.
  • #5948 Added an event for when players are sent the server's list of commands, as well as an expression to modify them.
  • #5949 Added an expression to get a percentage of one or more numbers.
  • #5961 Added the ability to listen for entities rotating, or rotating and moving, in the on move event.
  • #6101 Adds an effect to copy the contents and indices of one variable into others.
  • #6146 Multiple # signs at the beginning of a line now start a comment.
  • #6162 Added a function isNaN(number) to check if a number is NaN.
  • #6180 The syntax to get a location from a vector and a world has been re-added.
  • #6198 Added Turkish translation.

Bug Fixes
  • #5308 Fixed cursor slot not always returning the correct item in inventory click events.
  • #5406 Fixed some order of operation issues with the difference expression.
  • #5744 Fixed an issue where the error for missing enum lang entries would be printed much more often than they should be.
  • #5815 Improvements to comparators and converters.
  • #5878 Fixed some issues with the parsed as expression returning arrays or throwing exceptions.
  • #6224 Fixed the examples for applying potion effects.
  • #6229 Fixed an exception when trying to get the text input of an anvil.
  • #6231 Fixed an exception when trying to print a block state.
  • #6239 Fixed an exception when removing items from drops in 1.20.2+.
  • #6266 Fixed a bug that caused incorrect errors to be printed when comparing things.

  • #5958 Removed the projectile bounce state condition and expression. These had no function.


View Update

2.7.3 135 days, 18 hours and 22 minutes ago

Bug Fixes
  • #6123 Fixed a priority issue that could cause the "sets" expression to match over other, better-fitting possibilities.
  • #6171 Fixed an issue that caused accessing inventories in death events as well as checking the type of a spawner to be impossible.
  • #6205 Location comparisons have been improved to significantly reduce the possibility of false negative results.

API Changes
  • #6201 This is a behavioral change for the asynchronous execution API that was added to SkriptEvent (SkriptEvent#canExecuteAsynchronously). The SkriptEvent#check method may now be called asynchronously if the SkriptEvent can execute asynchronously. While we will not typically include behavioral changes like this in patch releases, this change was to address major performance issues that could occur from locking threads.

View Update

Skript 2.7.2 Patch 136 days, 10 hours and 57 minutes ago

Skript version 2.7.2 has been released on Nov 1st
Bug Fixes

  • #6038 Fixed the JavaDocs name and title elements
  • #6078 Updated documentation links to the new Minecraft wiki
  • #6080 Fixed issues with language nodes in command help
  • #6090 Fixed the fake player count syntax for Paper
  • #6103 Fixed UTF-8 encoding when building Skript
  • #6106 Fixed reloading a directory with the script file effect
  • #6117 Fixed an error when printing block inventories
  • #6121 Fixed an issue where Skript options would not work in functions in some cases
  • #6126 Fixed permission messages not showing for Skript commands.
  • #6128 Fixed issue when checking if Minecraft time is between two values that span across midnight.
  • #6132 Fixed floating point error that could occur when trying to loop with "x times".

Click here to view the full list of commits made since 2.7.2

View Update

2.6.2 Release 658 days, 11 hours and 35 minutes ago

For full information regarding this release please see

View Update

Skript 2371 days, 9 hours and 57 minutes ago

Skript is a Minecraft plugin for Spigot that enables administrators to create unique and inspiring features for their servers. It is simple to use with no experience necessary. For those who already know how to write plugins, Skript makes it easy to build prototypes that can be later developed into full plugins. Altogether, Skript is more than capable of creating a feature-rich server experience.

About Skript
Originally released in 2011 on by Njol, Skript has always been about inclusive programming. Skript is an easy-to-use language that provides a path for server admins to easily create unique and inspiring features for their Minecraft server with no prior experience necessary. Today, the project lives on GitHub and is completely community made. With thousands of contributions and community hours poured into continued development, Skript is a very powerful plugin for any server owner.

Unlike other scripting plugins, Skript's syntax is easy to understand and follow. The focus is on simple English sentences that can be written and read by anyone. No odd syntax patterns, line breaks, or difficult setups. Plus, a large, helpful, and rapidly growing community exists to provide you with the support and directions you need.

Skript is packed with useful syntax for building both simple and complex creations.

Natural Syntax
Simple-to-use and easy to understand English sentences power Skript to customize your server.

Custom Commands
Define custom commands to integrate your creations or override existing ones to change their behavior.

No need to copy and paste. Functions allow you to run the same code over and over again with customizable inputs.

Effective Error Messages
While traditional errors can be harder to understand for beginners, Skript focuses on presenting them as simply as possible. If Skript is unable to fix your error for you, it will report back in clear terms what went wrong.

The community continues to build addons that further enhance Skript's capabilities. If Skript cannot do something, it is likely that someone has built as an addon that can.

Skript requires Spigot to work. Paper, which is a derivative of Spigot, is recommended. Skript supports only the latest patch versions of Minecraft 1.13 and newer. For example, this means that 1.16.5 is supported, but 1.16.4 is not. Minecraft 1.12 and earlier are not supported. When new Minecraft versions are released, we will work as quickly as possible to support them. It is worth noting that the latest version of Skript may work fine on new versions, but without support for any new features.

NOTE: If you must use Skript on an older Minecraft server, Skript 2.6.4 was the final release with support for versions 1.9 through 1.12. Click here to view it on GitHub.

Contributing to Skript
Skript is a large project with many parts working together. If you are new to Java, Skript is not the project for you. Due to Skript's size and development history, working on the project demands prior Java experience. It can be useful to familiarize yourself with Skript's codebase by exploring many of the addons that have been built for it (see below). Anyone interesed in contributing should review our contributing guidelines.

Downloading Skript, Addons and Scripts
You can download the latest stable version of Skript by clicking the download button above. For pre-releases, see the project's GitHub releases page. As with any plugin, place the downloaded Skript file inside the server's plugins folder. Restart the server, and once it loads, you will be ready to begin.

Addons follow the same setup as any plugin. Place the downloaded file into the server's plugins folder and restart. Some addons may have different setups or require tweaking. Be sure to review the addon's download page for any installation instructions.

When creating a new script, simply create a new .sk file in Skript's scripts folder. To install a script, place the file in that same scripts folder. Restart your server or load the script using /sk reload <file name>.

Having an Issue with Skript?
If you experience unexpected behavior with Skript, you can report it as an issue on our GitHub Repository. Understand that this platform is for bug reports only. If you need help with your scripts, please review the linked resources below.

Getting Help
Community support is available through the Spigot Forums, the skUnity Discord Server, skUnity also hosts tutorials for those new to Skript.

Skript Documentation
You can easily and quickly view all the syntax of Skript at Community-built documentation is available on skUnity.

Addons and Scripts
You can find a wide selection of addons and scripts from multiple community platforms, including Spigot, and skUnity. As with any plugin or tool that has the ability to modify your server's functionality, take caution in what you install.

View Update

© Copyright 2014-2024 skUnity

All rights reserved.