Update dependency com.github.SkriptLang:Skript to v2.17.0-feature-docs-overhaul #14
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "renovate/com.github.skriptlang-skript-2.x"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
2.6.1->2.17.0-feature-docs-overhaulRelease Notes
SkriptLang/Skript (com.github.SkriptLang:Skript)
v2.16.0-pre1: Pre-Release 2.16.0-pre1Skript 2.16.0-pre1
Supports: Paper 1.21.4 - 26.1.2
Today, we're excited to be releasing the first pre-release of Skript 2.16! This release, while a bit smaller, includes a handful of new features to work with as we continue to lay the groundwork for even more exciting features later this year.
In accordance with supporting the last 18 months of Minecraft updates, Skript 2.16.0 supports Minecraft 1.21.4 to 26.1.2. Newer versions may also work but were not tested at time of release. Paper is required.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.16.0 on July 15th. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Release Highlights
Boss Bars
At last, support has been added for creating and interacting with boss bars. There is full support for a bar's title, progress, color, and more:
It is also possible to create keyed bars that persist through restarts and are available in the /bossbar command:
The ability to interact with the boss bar of actual bosses is available too:
Stored Enchantments
A 'stored enchantments' expression has been added for working with enchanted books. This enables the creation of enchanted books that can be applied onto items.
Here's an example for creating a book to apply to a sword:
Text Component Resolution
A 'resolved component' expression has been added which provides support for using certain MiniMessage tags such as selector, score, and nbt.
Consider this example:
The component must be resolved with a player so that the
@sselector can be identified. Simply using the syntax:You can get an actual input, such as
My name is Njol!Wait Section
The 'wait' effect can used as a section to delay the code within it. The code after the section will continue to run as normal, without a delay.
Consider this example:
Running this would result in
Aand thenCbeing broadcast, followed byBafter 1 second.⚠ Breaking Changes
structuretypetotreetype.Changelog
Additions
uuids(plural) in the 'UUID' expression.Changes
structuretypetotreetype.[player]and[message]placeholders in the 'chat format' expression in favor of the existing 'player' and 'chat message' expressions.Bug Fixes
remove allwith the 'potion effects of entity/item' expression did not correctly consider active/hidden effects.API Changes
SectionUtils#loadDelayableLinkedCode, an alternative toSectionUtils#loadLinkedCodethat permits the use of delays within the linked code.registerComparatoroptions ofEnumClassInfoandRegistryClassInfo. This functionality was required due to a previous bug which has since been resolved.EnumClassInfoandRegistryClassInfofor providing a callback consumer to be invoked on a successful parse. This is available through new constructors.SyntaxInfo#simple) for creating syntax infos from a class and patterns, without having to use a builder.EffTeleportand removes dependency on PaperLib.SimpleEvent(String)) for creating SimpleEvents with a customtoStringvalue.Click here to view the full list of commits made since 2.15.4
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.15.4: Patch Release 2.15.4Compare Source
Skript 2.15.4
Supports: Paper 1.21.1 - 26.1.2
Today, we are releasing Skript 2.15.4 to finish ironing out bugs from the transition of legacy systems in 2.15.
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Changes
mob griefinggamerule isfalse.Bug Fixes
player's namein a variable would no longer literally resolve to that player's name.showwas not part of the second pattern of the 'play or draw an effect' effect.Click here to view the full list of commits made since 2.15.3
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
New Documentation Site
Over the past few months, we have been working hard to build our new documentation site. Not only do we have a new-and-improved syntaxes page, we are also finally launching a proper platform for official tutorials on using Skript, from writing scripts to building addons.
As we continue to prepare the site for launch later this year, the beta is available for viewing at https://beta-docs.skriptlang.org.
Join us on Discord
We have an official Discord community where we share announcements and and perform testing for upcoming features.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.15.3: Patch Release 2.15.3Compare Source
Skript 2.15.3
Supports: Paper 1.21.1 - 26.1.2
Today, we are releasing Skript 2.15.3 to continue ironing out bugs reported with the recent 2.15 releases.
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Changes
Bug Fixes
MD5in an effect command.usageentry of 'commands'.Click here to view the full list of commits made since 2.15.2
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
New Documentation Site
Over the past few months, we have been working hard to build our new documentation site. Not only do we have a new-and-improved syntaxes page, we are also finally launching a proper platform for official tutorials on using Skript, from writing scripts to building addons.
As we continue to prepare the site for launch later this year, the beta is available for viewing at https://beta-docs.skriptlang.org.
Join us on Discord
We have an official Discord community where we share announcements and and perform testing for upcoming features.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.15.2: Emergency Patch Release 2.15.2Compare Source
Skript 2.15.2
Supports: Paper 1.21.1 - 26.1.2
Today, we are releasing Skript 2.15.2 as an emergency patch to fix a major bug in Skript 2.15.1.
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Bug Fixes
&k,&l,&m,&n,&oand&r) were not formatted.Click here to view the full list of commits made since 2.15.1
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
New Documentation Site
Over the past few months, we have been working hard to build our new documentation site. Not only do we have a new-and-improved syntaxes page, we are also finally launching a proper platform for official tutorials on using Skript, from writing scripts to building addons.
While this site is still under heavy development, the beta is available for viewing at https://beta-docs.skriptlang.org.
Join us on Discord
We have an official Discord community where we share announcements and and perform testing for upcoming features.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.15.1: Patch Release 2.15.1Compare Source
Skript 2.15.1
Supports: Paper 1.21.1 - 26.1.2
Today, we are releasing Skript 2.15.1 to resolve some of the issues found with Skript 2.15.
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Additions
Bug Fixes
parsed asexpression for more predictable behvaior.on click on entityevent wouldn't get called, and theevent-entityevent value always being null in normalon clickevents.<##AABBCC>).containsdidn't work with components.loreexpression.replaceeffect.API Fixes
Click here to view the full list of commits made since 2.15.0
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
New Documentation Site
Over the past few months, we have been working hard to build our new documentation site. Not only do we have a new-and-improved syntaxes page, we are also finally launching a proper platform for official tutorials on using Skript, from writing scripts to building addons.
While this site is still under heavy development, the beta is available for viewing at https://beta-docs.skriptlang.org.
Join us on Discord
We have an official Discord community where we share announcements and and perform testing for upcoming features.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.15.0: Feature Release 2.15.0Compare Source
Skript 2.15.0
Today, we are releasing Skript 2.15.0 with exciting features, bug fixes and enhancements. This release includes a few new major features and enhancements as we lay the groundwork for some exciting things coming later this year.
In accordance with supporting the last 18 months of Minecraft updates, Skript 2.15.0 supports Minecraft 1.21.1 to 26.1.1. Newer versions may also work but were not tested at time of release. Paper is required.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release patch releases starting on May 1st. We may release additional emergency patch releases before then should the need arise.
Happy Skripting!
Major Changes
Adventure and MiniMessage Integration
After several months of testing, we are excited to share that Skript is now using Adventure and MiniMessage!
What is Adventure and/or MiniMessage?
Adventure is Paper's approach for supporting Minecraft's user interface elements. This includes chat messages, titles, player tablists, and more. These elements support all kinds of features, the most notable being colors and text decorations (e.g., bold, italic, etc.). Adventure is used throughout Paper, so by making this change, Skript is better aligned to support Paper's current and upcoming features.
MiniMessage is a way of representing these features in a text-based format. Skript has long used its own similar system, which most skripters are familiar with:
MiniMessage is a much more developed system, resolving many of the issues that became apparent in Skript's existing system. Further, it has better support for all sorts of features:
You can read more on Paper's documentation website about using MiniMessage and the features it offers: https://docs.papermc.io/adventure/minimessage/format
What does this mean for scripters?
We have put in significant effort to ensure this transition is smooth. Legacy formatting codes are still supported. However, there are a few edge cases to be aware of.
Most importantly, we have made some changes to the tags that are processed by default. Skript will only process color and decoration based tags, such as
<red>or<bold>. However, we understand that some users may have a different preference for what is parsed by default. We have added a new configuration option,safe tags, so that which tags are parsed automatically can be controlled:If we wanted to add another tag, say sprites, we simply add it to the list:
In some cases, Skript's color tags went directly against their formal definition in Minecraft. As a result, you may notice some color tags appear differently than before.
For addons expecting legacy formatted strings, this formatting is no longer processed automatically. For cases where formatting is not being processed, you can attempt process the string using the colored expression:
colored "This is my &4legacy &rtext!"Persistent Data Tags
Persistent data tags, also known as persistent data containers (PDC), are a way to store custom data directly on players, entities, items, blocks, chunks, and worlds. Unlike variables, which are stored separately from the rest of the game world, persistent data tags are a direct part of the thing they are attached to.
They serve a similar role to metadata, but they persist through server restarts and attach directly to things.
Here is a simple example of storing a damage bonus on a sword:
You can read more about Persistent Data in the new tutorial available on our new documentation site (in beta).
Region Hook Deprecation
With this release, we are deprecating Skript's region hooks for future removal. They have been unmaintained for some time and are full of difficult to resolve issues.
As an alternative, we have developed skript-worldguard, an official addon providing far more extensive support for WorldGuard.
You can read more about skript-worldguard on its repository: https://github.com/SkriptLang/skript-worldguard
We do not currently have any plans to offer addons for other region plugins.
(API) Event Value Registry
Following our efforts to modernize syntax registration, we are introducing a new, registry-based approach for event values. This system features new benefits such as custom identifiers (
event-X), enhanced event validation, and support for changers (other than SET).Here is an example of the full process:
For more information, you can consult the relevant pull request: #8326
⚠ Breaking Changes
type ofexpression, which previously only cleared the name and durability of an item.Changelog
Changes since pre-2
Additions
Changes
type ofexpression, which previously only cleared the name and durability of an item.damage sourceexperiment mainstream, no longer requiringusing damage sourcesto enable.Bug Fixes
API Changes
Click here to view the full list of commits made since 2.14.3
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.15.0-pre2: Pre-Release 2.15.0-pre2Compare Source
Skript 2.15.0-pre2
Today, we are releasing the second pre-release for Skript 2.15.0 with some additional fixes and enhancements. This release includes a few new major features and enhancements as we lay the groundwork for some exciting things coming later this year.
In accordance with supporting the last 18 months of Minecraft updates, Skript 2.15.0 supports Minecraft 1.21.1 to 26.1.1. Newer versions may also work but were not tested at time of release. Paper is required. Please note that Paper 26.1 is still in alpha and this build may or may not work with future Paper 26.1 releases. We will release additional compatibility updates if later Paper builds break this.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.15.0 on April 15th. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Major Changes
Adventure and MiniMessage Integration
After several months of testing, we are excited to share that Skript is now using Adventure and MiniMessage!
What is Adventure and/or MiniMessage?
Adventure is Paper's approach for supporting Minecraft's user interface elements. This includes chat messages, titles, player tablists, and more. These elements support all kinds of features, the most notable being colors and text decorations (e.g., bold, italic, etc.). Adventure is used throughout Paper, so by making this change, Skript is better aligned to support Paper's current and upcoming features.
MiniMessage is a way of representing these features in a text-based format. Skript has long used its own similar system, which most skripters are familiar with:
MiniMessage is a much more developed system, resolving many of the issues that became apparent in Skript's existing system. Further, it has better support for all sorts of features:
You can read more on Paper's documentation website about using MiniMessage and the features it offers: https://docs.papermc.io/adventure/minimessage/format
What does this mean for scripters?
We have put in significant effort to ensure this transition is smooth. Legacy formatting codes are still supported. However, there are a few edge cases to be aware of.
Most importantly, we have made some changes to the tags that are processed by default. Skript will only process color and decoration based tags, such as
<red>or<bold>. However, we understand that some users may have a different preference for what is parsed by default. We have added a new configuration option,safe tags, so that which tags are parsed automatically can be controlled:If we wanted to add another tag, say sprites, we simply add it to the list:
In some cases, Skript's color tags went directly against their formal definition in Minecraft. As a result, you may notice some color tags appear differently than before.
For addons expecting legacy formatted strings, this formatting is no longer processed automatically. For cases where formatting is not being processed, you can attempt process the string using the colored expression:
colored "This is my &4legacy &rtext!"Persistent Data Tags
Persistent data tags, also known as persistent data containers (PDC), are a way to store custom data directly on players, entities, items, blocks, chunks, and worlds. Unlike variables, which are stored separately from the rest of the game world, persistent data tags are a direct part of the thing they are attached to.
They serve a similar role to metadata, but they persist through server restarts and attach directly to things.
Here is a simple example of storing a damage bonus on a sword:
You can read more about Persistent Data in the new tutorial available on our new documentation site (in beta).
Region Hook Deprecation
With this release, we are deprecating Skript's region hooks for future removal. They have been unmaintained for some time and are full of difficult to resolve issues.
As an alternative, we have developed skript-worldguard, an official addon providing far more extensive support for WorldGuard.
You can read more about skript-worldguard on its repository: https://github.com/SkriptLang/skript-worldguard
We do not currently have any plans to offer addons for other region plugins.
(API) Event Value Registry
Following our efforts to modernize syntax registration, we are introducing a new, registry-based approach for event values. This system features new benefits such as custom identifiers (
event-X), enhanced event validation, and support for changers (other than SET).Here is an example of the full process:
For more information, you can consult the relevant pull request: #8326
⚠ Breaking Changes
Changelog
Changes since pre-1
Additions
Changes
type ofexpression, which previously only cleared the name and durability of an item.damage sourceexperiment mainstream, no longer requiringusing damage sourcesto enable.Bug Fixes
API Changes
Click here to view the full list of commits made since 2.14.3
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.15.0-pre1: Pre-Release 2.15.0-pre1Compare Source
Skript 2.15.0-pre1
Today, we are excited to release the first pre-release for Skript 2.15.0. This release includes a few new major features and enhancements as we lay the groundwork for some exciting things coming later this year. It's no joke either, these features are real and available now!
In accordance with supporting the last 18 months of Minecraft updates, Skript 2.15.0 supports Minecraft 1.21.1 to 1.21.11. Newer versions may also work but were not tested at time of release. Paper is required.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.15.0 on April 15th. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Major Changes
Adventure and MiniMessage Integration
After several months of testing, we are excited to share that Skript is now using Adventure and MiniMessage!
What is Adventure and/or MiniMessage?
Adventure is Paper's approach for supporting Minecraft's user interface elements. This includes chat messages, titles, player tablists, and more. These elements support all kinds of features, the most notable being colors and text decorations (e.g., bold, italic, etc.). Adventure is used throughout Paper, so by making this change, Skript is better aligned to support Paper's current and upcoming features.
MiniMessage is a way of representing these features in a text-based format. Skript has long used its own similar system, which most skripters are familiar with:
MiniMessage is a much more developed system, resolving many of the issues that became apparent in Skript's existing system. Further, it has better support for all sorts of features:
You can read more on Paper's documentation website about using MiniMessage and the features it offers: https://docs.papermc.io/adventure/minimessage/format
What does this mean for scripters?
We have put in significant effort to ensure this transition is smooth. We expect all scripts to continue working without issue. Legacy formatting codes are still supported. However, there are a few edge cases to be aware of.
In some cases, Skript's color tags went directly against their formal definition in Minecraft. As a result, you may notice some color tags appear differently than before.
For addons expecting legacy formatted strings, this formatting is no longer processed automatically. For cases where formatting is not being processed, you can attempt process the string using the colored expression:
colored "This is my &4legacy &rtext!"Persistent Data Tags
Persistent data tags, also known as persistent data containers (PDC), are a way to store custom data directly on players, entities, items, blocks, chunks, and worlds. Unlike variables, which are stored separately from the rest of the game world, persistent data tags are a direct part of the thing they are attached to.
They serve a similar role to metadata, but they persist through server restarts and attach directly to things.
Here is a simple example of storing a damage bonus on a sword:
You can read more about Persistent Data in the new tutorial available on our new documentation site (in beta).
Region Hook Deprecation
With this release, we are deprecating Skript's region hooks for future removal. They have been unmaintained for some time and are full of difficult to resolve issues.
As an alternative, we have developed skript-worldguard, an official addon providing far more extensive support for WorldGuard.
You can read more about skript-worldguard on its repository: https://github.com/SkriptLang/skript-worldguard
We do not currently have any plans to offer addons for other region plugins.
(API) Event Value Registry
Following our efforts to modernize syntax registration, we are introducing a new, registry-based approach for event values. This system features new benefits such as custom identifiers (
event-X), enhanced event validation, and support for changers (other than SET).Here is an example of the full process:
For more information, you can consult the relevant pull request: #8326
⚠ Breaking Changes
Changelog
Additions
Changes
type ofexpression, which previously only cleared the name and durability of an item.damage sourceexperiment mainstream, no longer requiringusing damage sourcesto enable.Bug Fixes
API Changes
Click here to view the full list of commits made since 2.14.3
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.14.3: Emergency Patch 2.14.3Compare Source
Skript 2.14.3
Supports: Paper 1.21.0 - 1.21.11
Today, we are releasing 2.14.3 as a reupload of 2.14.2 due to it being uploaded as a selfbuilt jar. Whoops!
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Click here to view the change log for 2.14.2
Click here to view the full list of commits made since 2.14.2
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
New Documentation Site
Over the past few months, we have been working hard to build our new documentation site. Not only do we have a new-and-improved syntaxes page, we are also finally launching a proper platform for official tutorials on using Skript, from writing scripts to building addons.
While this site is still under heavy development, the beta is available for viewing at https://beta-docs.skriptlang.org.
Join us on Discord
We have an official Discord community where we share announcements and and perform testing for upcoming features.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.14.2: Patch Release 2.14.2Compare Source
Skript 2.14.2
Supports: Paper 1.21.0 - 1.21.11
Today, we are releasing Skript 2.14.2 to clean up some API issues, fix up some docs oversights, and generally squash a few bugs.
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Bug Fixes
delete name of toolnot working and ensured all thename ofproperties support set/reset/delete where appropriate.name of event-inventoryreturning incorrect values for theinventory openevent.inventory of vehiclenot returning the proper inventory.BlockStateBlocksfor unplacedBlockStatesAPI Fixes
EntryContainerandEntryValidatormethods for better extensibility.ExprArithmeticClick here to view the full list of commits made since 2.14.1
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
New Documentation Site
Over the past few months, we have been working hard to build our new documentation site. Not only do we have a new-and-improved syntaxes page, we are also finally launching a proper platform for official tutorials on using Skript, from writing scripts to building addons.
While this site is still under heavy development, the beta is available for viewing at https://beta-docs.skriptlang.org.
Join us on Discord
We have an official Discord community where we share announcements and and perform testing for upcoming features.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.14.1: Patch Release 2.14.1Compare Source
Skript 2.14.1
Supports: Paper 1.21.0 - 1.21.11
Today, we are releasing Skript 2.14.1 to resolve some of the issues found with Skript 2.14, and a significant number of older bugs too!
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Additions
item ofan arrow projectile, which can change the item picked up when retrieving the arrow and can change the applied potion effects if the arrow is not a spectral arrow.Bug Fixes
display name of <entity>returned the incorrect value.') could not be used in literal specification (e.g.dragon's breath (damage cause)).open inventoryeffect to use Paper's Menu API, which fixes issues with anvils and smithing tables not functioning correctly.world of xexpressions wasn't returning the correct world in some scenarios.x of ywhen both inputs were literal:5 of flame particles.API Fixes
Click here to view the full list of commits made since 2.14.1
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
New Documentation Site
Over the past few months, we have been working hard to build our new documentation site. Not only do we have a new-and-improved syntaxes page, we are also finally launching a proper platform for official tutorials on using Skript, from writing scripts to building addons.
While this site is still under heavy development, the beta is available for viewing at https://beta-docs.skriptlang.org.
Join us on Discord
We have an official Discord community where we share announcements and and perform testing for upcoming features.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.14.0: Feature Release 2.14.0Compare Source
Skript 2.14.0
Today, we are excited to be starting the year off strong with the formal release of Skript 2.14.0! This release includes dozens of major contributions to enhance Skript's existing features, along with a handful of exciting new features. With all of this early spring cleaning, there are some important breaking changes to be aware of, specifically around visual effects and potions. Be sure to look through the Breaking Changes section below to see whether your scripts are impacted.
In accordance with supporting the last 18 months of Minecraft updates, Skript 2.14.0 supports Minecraft 1.21.0 to 1.21.11. Newer versions may also work but were not tested at time of release. Paper is required.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.14.1 on February 1st. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Major Changes
Potions Rework
Potion syntax has seen a major rework in order to modernize the syntax and make working with potions a breeze.
Obtaining Potion Effects
Just as before, potion effects can be obtained through syntax like:
However, it is now also possible to obtain specific potion effects:
Potion Creation
Potion creation has been united into a single expression that may optionally be used as a section:
The current effect has been replaced with one for applying potion effects.
Potion Modification
The six primary properties of potion effects are supported:
type,duration,amplifier,ambient,particles, andicon.All of these properties may be modified in the builder (see above).
It is also now possible to modify existing potion effects:
Even better, it is now possible to modify potion effects that are actively applied to entities and items:
Hidden Effects
Full support for hidden effects has been implemented too. Hidden effects allow a player to have multiple effects of the same type. For example, if a player has speed 1 for 30 seconds, and is then affected by speed 2 for 15 seconds, after those 15 seconds, the player will have 15 seconds of speed 1 remaining.
Support for obtaining these effects has been implemented:
Just as with active effects, hidden effects support being changed too! Note that modifying a hidden effect may result in it taking precedence over the active effect.
Comparisons
Support for more lenient comparisons has been implemented too:
The 'comparison' condition (as in,
x is y), can be used for exact comparisons.These comparisons are also used for removals:
Complete Visual Effect Rework
Skript's visual effect system has been in dire need of repair, with limited to no documentation and multiple errors and outdated syntaxes. We've tackled this with a full rework of visual effects, meaning likely all code using visual effects will suffer breaking changes, but it was sadly necessary to get to a better state.
Visual effects are now split into 3 different types: particle effects, game effects, and entity effects. Entity effects are generally animations that can be played on specific entities, like the
ravager attack animationeffect. Game effects compose a variety of built-in game sounds and/or particle effects, like the combined sound+particles of the composter, or the footstep sound for a specific block. Particle effects are the standard particles you all know and love from/particle. We've overhauled the system to provide easier access to data-driven particles likedust; you can nowdraw red dust particle at player!We've also added some syntax to help users better understand and use the admittedly labyrinthine particle api in the form of scale, distribution, and velocity support, rather than simply offset (though you can still set offset manually!).
Drawing a particle should look more like this, now:
Please note that users of SkBee and skript-particles and any other addon dealing with particles will likely need to wait for these addons to be updated to use Skript's particle system instead.
Named Function Arguments
Arguments for functions can now be specified by the name of the argument. This improves clarity with regard to the passed arguments for functions with many parameters.
Mixing named and unnamed function arguments is allowed, as long as the order of the function parameters is followed, as specified in the function definition.
For-Each Loop
For loops are now available by default for all users and no longer require opting into the
for loopsexperiment. As a reminder, for loops are a kind of loop syntax that stores the loop index and value in variables for convenience.This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Interaction Entities
Syntax has been added for working with interaction entities. There is support for responsiveness and dimensions, along with obtaining the last date an interaction was clicked and the last player to interact.
The syntax is available on our documentation site.
Recursive Expression
Expressions may now return values recursively using
recursive %objects%, or combined with thekeyed %objects%expression to return its keys recursively as well. This allows Skript to pass entire structures (i.e. lists) around different contexts, like passing a list to a function while retaining indices and sublists, freely.Note: To avoid cumbersome wording, passing a keyed expression to a function will implicitly pass it recursively as well. For example:
For more information, you can review the pull request.
(API) Registration API Stabilization
The modern addon and syntax registration APIs introduced in 2.10 have moved out of their experimental status. As a result, the APIs being replaced have been deprecated and marked for removal. Due to the significant nature of some of these APIs, they will continue to function. They will not be removed without explicit warnings long in advance.
Detailed API documentation is being finalized and will be available for the full 2.14 release. For now, the pull request overview can be reviewed for further information about the new APIs: #6246
(API) Type Properties Beta Release
In 2.13 we added a new opt-in system for dealing with common properties that are often sources of conflict with addons, like
name of x, orlength of y.We are now enabling this by default in 2.14 to test it more thoroughly. You will notice a new
use type propertiesoption in yourconfig.sk, which can be set to false if you encounter issues with type properties. We do not anticipate issues, but if you encounter them, there's an easy way out! Please make an issue report on GitHub if you do encounter problems, though.For addon developers, it should be relatively safe to develop with the type properties API now, and we are in the process of preparing detailed documentation for our site.
⚠ Breaking Changes
text opacityexpression for text displays has been modified to make it much more intuitive and easier to use. Previously, opacity was as follows:This has been changed to
The expression can still be set to values between -1 and -128, which correspond to 255 to 128 respectively, but the returned value will be positive and add/subtract will not allow opacity to leave the 0-255 range.
BukkitRegistryKeysclass has been removed. The existing field,BukkitRegistryKeys.EVENTis now available atBukkitSyntaxInfos.Event.KEY.SyntaxOriginhas been replaced in favor of a more genericOriginsystem. Origins are still constructed in a similar way using the static methods available on theOrigininterface.patternsonSyntaxInfonow return SequencedCollections rather than regular Collections. If. you were implementing this interface before, you may need to update your code.AddonModulenow has a requirednamemethod. This also means that it is no longer a FunctionalInterface.Changelog
Since pre-2
Additions
player's location offset by vector(0, 1, 5) using local axes, where x becomes left/right, y is up/down, and z is forward/back.hex code of %colors%andcolor from hex code %strings%.toBase(value: number, base: number)andfromBase(value: string, base: number).Changes
loop-index.if chance of 50% fails.particle effectto simplyparticleto match its code name and docs name.Bug Fixes
API Changes
JSONGenerator.@Examplesannotation to the new@Exampleannotations.appendIf()utility method toSyntaxStringBuilder.w/x/y/z of %object%via the type property WXYZ, if type properties are enabled. Reorganizes the type property handlers to avoid one massive class.ParticleEffectclass that extends Paper'sParticleBuilderclass. Addons should use this class when dealing with particles.Modifierfor default functions,Modifier.RANGED. This can be used to limit parameters to a fixed range of values, complete with parse errors if the user uses values out of the range and automatic documentation.RuntimeErrorCatcherwould not properly remove consumers from the manager.SequencedCollectionrather thanCollection. Also adds automatic Priority detection (if not specified) forSyntaxInfo. Also adds a requirednamemethod toAddonModule(which is no longer aFunctionalInterface).Click here to view the full list of commits made since 2.13.2
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
New Documentation Site
Over the past few months, we have been working hard to build our new documentation site. Not only do we have a new-and-improved syntaxes page, we are also finally launching a proper platform for official tutorials on using Skript, from writing scripts to building addons.
While this site is still under heavy development, the beta is available for viewing at https://beta-docs.skriptlang.org.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.14.0-pre2: Pre-Release 2.14.0-pre2Compare Source
Skript 2.14.0-pre2
We are starting the weekend with the second pre-release for Skript 2.14.0, now with more bug fixes! This release includes dozens of major contributions to enhance Skript's existing features, along with a handful of exciting new features. Major changes means some breaking changes though, so we hope you all forgive us for doing some early spring cleaning (especially with visual effects). Please remember to look through the Breaking Changes section to see if anything impacts you!
In accordance with supporting the last 18 months of Minecraft updates, Skript 2.14.0 supports Minecraft 1.21.0 to 1.21.11. Newer versions may also work but were not tested at time of release. Paper is required.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.14.0 on January 15th. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Major Changes
Potions Rework
Potion syntax has seen a major rework in order to modernize the syntax and make working with potions a breeze.
Obtaining Potion Effects
Just as before, potion effects can be obtained through syntax like:
However, it is now also possible to obtain specific potion effects:
Potion Creation
Potion creation has been united into a single expression that may optionally be used as a section:
The current effect has been replaced with one for applying potion effects.
Potion Modification
The six primary properties of potion effects are supported:
type,duration,amplifier,ambient,particles, andicon.All of these properties may be modified in the builder (see above).
It is also now possible to modify existing potion effects:
Even better, it is now possible to modify potion effects that are actively applied to entities and items:
Hidden Effects
Full support for hidden effects has been implemented too. Hidden effects allow a player to have multiple effects of the same type. For example, if a player has speed 1 for 30 seconds, and is then affected by speed 2 for 15 seconds, after those 15 seconds, the player will have 15 seconds of speed 1 remaining.
Support for obtaining these effects has been implemented:
Just as with active effects, hidden effects support being changed too! Note that modifying a hidden effect may result in it taking precedence over the active effect.
Comparisons
Support for more lenient comparisons has been implemented too:
The 'comparison' condition (as in,
x is y), can be used for exact comparisons.These comparisons are also used for removals:
Complete Visual Effect Rework
Skript's visual effect system has been in dire need of repair, with limited to no documentation and multiple errors and outdated syntaxes. We've tackled this with a full rework of visual effects, meaning likely all code using visual effects will suffer breaking changes, but it was sadly necessary to get to a better state.
Visual effects are now split into 3 different types: particle effects, game effects, and entity effects. Entity effects are generally animations that can be played on specific entities, like the
ravager attack animationeffect. Game effects compose a variety of built-in game sounds and/or particle effects, like the combined sound+particles of the composter, or the footstep sound for a specific block. Particle effects are the standard particles you all know and love from/particle. We've overhauled the system to provide easier access to data-driven particles likedust; you can nowdraw red dust particle at player!We've also added some syntax to help users better understand and use the admittedly labyrinthine particle api in the form of scale, distribution, and velocity support, rather than simply offset (though you can still set offset manually!).
Drawing a particle should look more like this, now:
Please note that users of SkBee and skript-particles and any other addon dealing with particles will likely need to wait for these addons to be updated to use Skript's particle system instead.
Named Function Arguments
Arguments for functions can now be specified by the name of the argument. This improves clarity with regard to the passed arguments for functions with many parameters.
Mixing named and unnamed function arguments is allowed, as long as the order of the function parameters is followed, as specified in the function definition.
For-Each Loop
For loops are now available by default for all users and no longer require opting into the
for loopsexperiment. As a reminder, for loops are a kind of loop syntax that stores the loop index and value in variables for convenience.This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Interaction Entities
Syntax has been added for working with interaction entities. There is support for responsiveness and dimensions, along with obtaining the last date an interaction was clicked and the last player to interact.
The syntax is available on our documentation site.
Recursive Expression
Expressions may now return values recursively using
recursive %objects%, or combined with thekeyed %objects%expression to return its keys recursively as well. This allows Skript to pass entire structures (i.e. lists) around different contexts, like passing a list to a function while retaining indices and sublists, freely.Note: To avoid cumbersome wording, passing a keyed expression to a function will implicitly pass it recursively as well. For example:
For more information, you can review the pull request.
(API) Registration API Stabilization
The modern addon and syntax registration APIs introduced in 2.10 have moved out of their experimental status. As a result, the APIs being replaced have been deprecated and marked for removal. Due to the significant nature of some of these APIs, they will continue to function. They will not be removed without explicit warnings long in advance.
Detailed API documentation is being finalized and will be available for the full 2.14 release. For now, the pull request overview can be reviewed for further information about the new APIs: #6246
(API) Type Properties Beta Release
In 2.13 we added a new opt-in system for dealing with common properties that are often sources of conflict with addons, like
name of x, orlength of y.We are now enabling this by default in 2.14 to test it more thoroughly. You will notice a new
use type propertiesoption in yourconfig.sk, which can be set to false if you encounter issues with type properties. We do not anticipate issues, but if you encounter them, there's an easy way out! Please make an issue report on GitHub if you do encounter problems, though.For addon developers, it should be relatively safe to develop with the type properties API now, and we are in the process of preparing detailed documentation for our site.
⚠ Breaking Changes
text opacityexpression for text displays has been modified to make it much more intuitive and easier to use. Previously, opacity was as follows:This has been changed to
The expression can still be set to values between -1 and -128, which correspond to 255 to 128 respectively, but the returned value will be positive and add/subtract will not allow opacity to leave the 0-255 range.
BukkitRegistryKeysclass has been removed. The existing field,BukkitRegistryKeys.EVENTis now available atBukkitSyntaxInfos.Event.KEY.SyntaxOriginhas been replaced in favor of a more genericOriginsystem. Origins are still constructed in a similar way using the static methods available on theOrigininterface.patternsonSyntaxInfonow return SequencedCollections rather than regular Collections. If. you were implementing this interface before, you may need to update your code.AddonModulenow has a requirednamemethod. This also means that it is no longer a FunctionalInterface.Changelog
Since pre-1
particle(rather thanparticle effect) for consistency with other particles.patterns) to be a SequencedCollection rather than a regular Collection. Further,AddonModulenow has a requirednamemethod to be implemented (as a result, it is no longer a FunctionalInterface). This is a breaking change from 2.13.2. Finally, the newly introducedmodulemethod onAddonModulenow takes anAddonModulerather than aString.Additions
player's location offset by vector(0, 1, 5) using local axes, where x becomes left/right, y is up/down, and z is forward/back.hex code of %colors%andcolor from hex code %strings%.toBase(value: number, base: number)andfromBase(value: string, base: number).Changes
loop-index.if chance of 50% fails.particle effectto simplyparticleto match its code name and docs name.Bug Fixes
API Changes
JSONGenerator.@Examplesannotation to the new@Exampleannotations.appendIf()utility method toSyntaxStringBuilder.w/x/y/z of %object%via the type property WXYZ, if type properties are enabled. Reorganizes the type property handlers to avoid one massive class.ParticleEffectclass that extends Paper'sParticleBuilderclass. Addons should use this class when dealing with particles.Modifierfor default functions,Modifier.RANGED. This can be used to limit parameters to a fixed range of values, complete with parse errors if the user uses values out of the range and automatic documentation.RuntimeErrorCatcherwould not properly remove consumers from the manager.SequencedCollectionrather thanCollection. Also adds automatic Priority detection (if not specified) forSyntaxInfo. Also adds a requirednamemethod toAddonModule(which is no longer aFunctionalInterface).Click here to view the full list of commits made since 2.13.2
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.14.0-pre1: Pre-Release 2.14.0-pre1Compare Source
Skript 2.14.0-pre1
We are kicking off the new year with the first pre-release for Skript 2.14.0. This release includes dozens of major contributions to enhance Skript's existing features, along with a handful of exciting new features. Major changes means some breaking changes though, so we hope you all forgive us for doing some early spring cleaning (especially with visual effects). Please remember to look through the Breaking Changes section to see if anything impacts you!
In accordance with supporting the last 18 months of Minecraft updates, Skript 2.14.0 supports Minecraft 1.21.0 to 1.21.11. Newer versions may also work but were not tested at time of release. Paper is required.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.14.0 on January 15th. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Major Changes
Potions Rework
Potion syntax has seen a major rework in order to modernize the syntax and make working with potions a breeze.
Obtaining Potion Effects
Just as before, potion effects can be obtained through syntax like:
However, it is now also possible to obtain specific potion effects:
Potion Creation
Potion creation has been united into a single expression that may optionally be used as a section:
The current effect has been replaced with one for applying potion effects.
Potion Modification
The six primary properties of potion effects are supported:
type,duration,amplifier,ambient,particles, andicon.All of these properties may be modified in the builder (see above).
It is also now possible to modify existing potion effects:
Even better, it is now possible to modify potion effects that are actively applied to entities and items:
Hidden Effects
Full support for hidden effects has been implemented too. Hidden effects allow a player to have multiple effects of the same type. For example, if a player has speed 1 for 30 seconds, and is then affected by speed 2 for 15 seconds, after those 15 seconds, the player will have 15 seconds of speed 1 remaining.
Support for obtaining these effects has been implemented:
Just as with active effects, hidden effects support being changed too! Note that modifying a hidden effect may result in it taking precedence over the active effect.
Comparisons
Support for more lenient comparisons has been implemented too:
The 'comparison' condition (as in,
x is y), can be used for exact comparisons.These comparisons are also used for removals:
Complete Visual Effect Rework
Skript's visual effect system has been in dire need of repair, with limited to no documentation and multiple errors and outdated syntaxes. We've tackled this with a full rework of visual effects, meaning likely all code using visual effects will suffer breaking changes, but it was sadly necessary to get to a better state.
Visual effects are now split into 3 different types: particle effects, game effects, and entity effects. Entity effects are generally animations that can be played on specific entities, like the
ravager attack animationeffect. Game effects compose a variety of built-in game sounds and/or particle effects, like the combined sound+particles of the composter, or the footstep sound for a specific block. Particle effects are the standard particles you all know and love from/particle. We've overhauled the system to provide easier access to data-driven particles likedust; you can nowdraw red dust particle at player!We've also added some syntax to help users better understand and use the admittedly labyrinthine particle api in the form of scale, distribution, and velocity support, rather than simply offset (though you can still set offset manually!).
Drawing a particle should look more like this, now:
Please note that users of SkBee and skript-particles and any other addon dealing with particles will likely need to wait for these addons to be updated to use Skript's particle system instead.
Named Function Arguments
Arguments for functions can now be specified by the name of the argument. This improves clarity with regard to the passed arguments for functions with many parameters.
Mixing named and unnamed function arguments is allowed, as long as the order of the function parameters is followed, as specified in the function definition.
For-Each Loop
For loops are now available by default for all users and no longer require opting into the
for loopsexperiment. As a reminder, for loops are a kind of loop syntax that stores the loop index and value in variables for convenience.This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Interaction Entities
Syntax has been added for working with interaction entities. There is support for responsiveness and dimensions, along with obtaining the last date an interaction was clicked and the last player to interact.
The syntax is available on our documentation site.
Recursive Expression
Expressions may now return values recursively using
recursive %objects%, or combined with thekeyed %objects%expression to return its keys recursively as well. This allows Skript to pass entire structures (i.e. lists) around different contexts, like passing a list to a function while retaining indices and sublists, freely.Note: To avoid cumbersome wording, passing a keyed expression to a function will implicitly pass it recursively as well. For example:
For more information, you can review the pull request.
(API) Registration API Stabilization
The modern addon and syntax registration APIs introduced in 2.10 have moved out of their experimental status. As a result, the APIs being replaced have been deprecated and marked for removal. Due to the significant nature of some of these APIs, they will continue to function. They will not be removed without explicit warnings long in advance.
Detailed API documentation is being finalized and will be available for the full 2.14 release. For now, the pull request overview can be reviewed for further information about the new APIs: #6246
(API) Type Properties Beta Release
In 2.13 we added a new opt-in system for dealing with common properties that are often sources of conflict with addons, like
name of x, orlength of y.We are now enabling this by default in 2.14 to test it more thoroughly. You will notice a new
use type propertiesoption in yourconfig.sk, which can be set to false if you encounter issues with type properties. We do not anticipate issues, but if you encounter them, there's an easy way out! Please make an issue report on GitHub if you do encounter problems, though.For addon developers, it should be relatively safe to develop with the type properties API now, and we are in the process of preparing detailed documentation for our site.
⚠ Breaking Changes
text opacityexpression for text displays has been modified to make it much more intuitive and easier to use. Previously, opacity was as follows:This has been changed to
The expression can still be set to values between -1 and -128, which correspond to 255 to 128 respectively, but the returned value will be positive and add/subtract will not allow opacity to leave the 0-255 range.
Changelog
Additions
player's location offset by vector(0, 1, 5) using local axes, where x becomes left/right, y is up/down, and z is forward/back.hex code of %colors%andcolor from hex code %strings%.toBase(value: number, base: number)andfromBase(value: string, base: number).Changes
loop-index.if chance of 50% fails.Bug Fixes
API Changes
JSONGenerator.@Examplesannotation to the new@Exampleannotations.appendIf()utility method toSyntaxStringBuilder.w/x/y/z of %object%via the type property WXYZ, if type properties are enabled. Reorganizes the type property handlers to avoid one massive class.ParticleEffectclass that extends Paper'sParticleBuilderclass. Addons should use this class when dealing with particles.Modifierfor default functions,Modifier.RANGED. This can be used to limit parameters to a fixed range of values, complete with parse errors if the user uses values out of the range and automatic documentation.RuntimeErrorCatcherwould not properly remove consumers from the manager.Click here to view the full list of commits made since 2.13.2
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.13.2: Patch Release 2.13.2Compare Source
Skript 2.13.2
Supports: Paper 1.20.4 - 1.21.10
Today, we are releasing Skript 2.13.2 to resolve some various issues found with Skript 2.13, as well as solving a few older bugs.
We have also revamped our contributor guide to be much more beginner-friendly, so now's a great time to try making your first PR! For existing contributors, please note the addition of the AI usage disclosure requirement for PRs:
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Additions / Changes
Bug Fixes
on brew completewas not a valid pattern, buton brew completwas.pastandfuturewhen using thelevel of playerin thelevel changeevent.Click here to view the full list of commits made since 2.13.1
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
For-Each Loop
Enable by adding
using for loopsto your script.A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
Join us on Discord
We have an official Discord community where we share announcements and and perform testing for upcoming features.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.13.1: Patch Release 2.13.1Compare Source
Skript 2.13.1
Today, we are releasing Skript 2.13.1 to resolve some of the most common issues reported with Skript 2.13.0.
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Additions / Changes
text ofexpression.closestas an alias in the 'nearest entity' expression.Bug Fixes
thein the 'tablisted players' expression.ORinputs.Click here to view the full list of commits made since 2.13.0
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
For-Each Loop
Enable by adding
using for loopsto your script.A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
Join us on Discord
We have an official Discord community where we share announcements and and perform testing for upcoming features.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.13.0: Feature Release 2.13.0Compare Source
Skript 2.13.0
Today, we are excited to release Skript 2.13.0. This release includes a handful of new features, bug fixes, and behind-the-scenes API improvements to play with. For addon developers, we strongly recommend reviewing the Type Properties section below.
Please also note our changes to the supported versions. 2.13 will be 1.20.4+, and Paper is required.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.13.1 on November 1st. We may release emergency patches before then should the need arise.
Happy Skripting!
Changes to Supported Versions and Platforms
As announced with 2.12, we have updated our policy for supported versions. Going forward, Skript will guarantee support for the last 18 months of Minecraft releases. This means 2.13 will be 1.20.4+, while 2.14 will be 1.21+.
Additionally, with Paper forking itself from Spigot, it has become increasingly difficult to support both platforms. As a result, this version of Skript has dropped support for Spigot. Skript now requires Paper or a downstream fork of Paper, such as Purpur or Pufferfish.
Major Changes
Equippable Components (Experimental)
Added in #7194
Equippable components allow retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Automatic Reloading
Added in #7464
A new Structure has been added that enables automatic reloading of a script when it is updated (e.g. the file is saved). This feature is only supported if asynchronous loading is enabled in Skript's configuration file (
config.sk).Debug Information Expression
Added in #8207
A new expression that returns additional information about a value has been added. Currently, this consists of the value itself and its class, though this is subject to change in the future.
Type Properties (Experimental)
Added in #8165
Included in 2.13 is an experimental opt-in API for what we're tenatively calling 'type properties'. These are a way for addons to be able to use the same generic
name of xorx contains ysyntaxes that Skript does without causing syntax conflicts. You can register your type (ClassInfo) as having a property, such asProperty#NAMEforname of x, and Skript will automatically allow it to be used in thename ofexpression. For more details on how to do this and what else you can do with type properties, see the PR. We plan on making a more comprehensive API spec/tutorial once the implementation is solidified, but for now the PR description should be more than sufficient to try it out.However, since this is still experimental and not well tested, it requires a secret config option to enable. To activate property syntaxes, add the line
use type properties: truesomewhere in yourconfig.sk. Without it, Skript will still use the old syntaxes for things likename of. We hope you try out this new API and give us feedback on what works, what doesn't, and what you'd like to see for its full release in 2.14. The number of property-driven syntaxes is rather small, but we plan on adding many more in the coming months!⚠ Breaking Changes
EntityData#init. Adds parametermatchedCodeNameand refactorsmatchedPattern.physicsinstead ofphysicin the block update effect.Changelog
Additions
event-locationfor 'portal' event.playtimeas an alias to the 'time played' expression.pullas an alias to the 'push' effect.Changes
physicsinstead ofphysicin the block update effect.Bug Fixes
red foxandsnow fox.minecart.API Changes
project.testEnvinbuild.gradleinstead of updating the latest version for both.Patternto allow providingnullas the object for generic usage.Taskapi.EntryDatamultiple times.JSONGeneratoravailable for addons and updates thedocs.jsonformat.Coloras an ARGB integer.PatternElementand tests to catch possible pattern conflicts.SimplifiedConditionfor constant conditions.ConditionimplementsSimplifiable.Expressionclass fromexpressionTypetoexpressionClassinSkript#registerExpression.RuntimeErrorFilter, which allows different consumers to apply different levels of filtering to the errors they print.ClassLoader.ExpressionListreturns foracceptChangeto more accurately reflect the changers of the expressions within the list.Functions#getJavaFunctionsto only returnJavaFunctions.Click here to view the full list of commits made since 2.12.2
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
For-Each Loop
Enable by adding
using for loopsto your script.A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.13.0-pre1: Pre-Release 2.13.0-pre1Compare Source
Skript 2.13.0-pre1
Hi all, we've got a new feature pre-release for you all. Thankfully, this one's a bit more reasonable in size than the massive releases of 2.10, 2.11, and 2.12. We have some great features and a bunch of behind-the-scenes API improvements for you this go around. Addon developers should pay special attention to the Type Properties section below.
Please also note our changes to the supported versions. 2.13 is 1.20.4+, and Paper only.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.13.0 on October 15th. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Changes to Supported Versions and Platforms
As announced with 2.12, we have updated our policy for supported versions. Going forward, Skript will guarantee support for the last 18 months of Minecraft releases. This means 2.13 is 1.20.4+, while 2.14 will be 1.21+.
Additionally, with Paper forking itself from Spigot, it has become increasingly difficult to support both platforms. As a result, this version of Skript is dropping support for Spigot. Skript now requires Paper or a downstream fork of Paper, such as Purpur or Pufferfish.
Major Changes
config.sk:debug infoexpression that prints out extra information about a value. Currently this consists of the value itself and its class, though this is subject to expansion in the future!Type Properties (For Addon Devs)
Included in 2.13 is an experimental opt-in API for what we're tenatively calling 'type properties'. These are a way for addons to be able to use the same generic
name of xorx contains ysyntaxes that Skript does without causing syntax conflicts. You can register your type (ClassInfo) as having a property, such asProperty#NAMEforname of x, and Skript will automatically allow it to be used in thename ofexpression. For more details on how to do this and what else you can do with type properties, see the PR. We plan on making a more comprehensive API spec/tutorial once the implementation is solidified, but for now the PR description should be more than sufficient to try it out.However, since this is still experimental and not well tested, it requires a secret config option to enable. To activate property syntaxes, add the line
use type properties: truesomewhere in yourconfig.sk. Without it, Skript will still use the old syntaxes for things likename of. We hope you try out this new API and give us feedback on what works, what doesn't, and what you'd like to see for its full release in 2.14. The number of property-driven syntaxes is rather small, but we plan on adding many more in the coming months!⚠ Breaking Changes
EntityData#init. Adds parametermatchedCodeNameand refactorsmatchedPattern.physicsinstead ofphysicin the block update effect.Changelog
Additions
debug infoexpression that prints out extra information about a value. Currently this consists of the value itself and its class, though this is subject to expansion in the future!Changes
project.testEnvinbuild.gradleinstead of updating the latest version for both.force entity to attack entityeffect.physicsinstead ofphysicin the block update effect.vehiclealone in the mount event.event-locationforon portal.Bug Fixes
red foxandsnow fox.minecart.at %time% [in] real timeby triggering the code on the main thread.API Changes
Patternto allow providingnullas the object for generic usage.Taskapi.EntryDatamultiple times.JSONGeneratoravailable for addons and updates thedocs.jsonformat.Coloras an ARGB integer.PatternElementand tests to catch possible pattern conflicts.SimplifiedConditionfor constant conditions.ConditionimplementsSimplifiable.Expressionclass fromexpressionTypetoexpressionClassinSkript#registerExpression.RuntimeErrorFilter, which allows different consumers to apply different levels of filtering to the errors they print.ClassLoader.ExpressionListreturns foracceptChangeto more accurately reflect the changers of the expressions within the list.Functions#getJavaFunctionsto only returnJavaFunctions.Click here to view the full list of commits made since 2.12.2
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
For-Each Loop
Enable by adding
using for loopsto your script.A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Equippable Components
Enable by adding
using equippable componentsto your script.Equippable components allows retrieving and changing the data of an item in the usage as equipment/armor.
Below is an example of creating a blank equippable component, modifying it, and applying it to an item:
Changes can be made directly on to the existing equippable component of an item whether using the item itself or the retrieved equippable component
For more details about the syntax, visit equippable component on our documentation website.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.12.2: Patch Release 2.12.2Compare Source
Skript 2.12.2
Today, we are releasing Skript 2.12.2 to continue resolving issues reported with 2.12.
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Bug Fixes
%classinfo% inputexpression.elsesection was considered delayed due to a delay in itsifsection.reversed 2 timesby only allowing plural inputs toreversed %objects%.API/Development
BukkitUtils#getRegistryClassInfo()to assist with creating types backed by Bukkit or Paper registries.Direction.combine().EntryDataExpressionfromTto? extends Tto allow for subtypes for the default values.ExpressionListare accurate after use ofgetConvertedExpression().SectionContextandSectionContext#modify()public for addon use.Click here to view the full list of commits made since 2.12.1
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
For-Each Loop
Enable by adding
using for loopsto your script.A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Join us on Discord
We have an official Discord community where we share announcements and and perform testing for upcoming features.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.12.1: Patch Release 2.12.1Compare Source
Skript 2.12.1
Today, we are releasing Skript 2.12.1 to resolve some of the most common issues reported with Skript 2.12.0. This release includes support for Minecraft 1.21.8.
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Additions / Changes
launchas an alternative keyword for the 'shoot' event.Bug Fixes
all item typescould result in an error on newer versions.loop-Xinputs for specific types.API/Development
Click here to view the full list of commits made since 2.12.0
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
For-Each Loop
Enable by adding
using for loopsto your script.A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Join us on Discord
We have an official Discord community where we share announcements and and perform testing for upcoming features.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.12.0: Feature Release 2.12.0Compare Source
Skript 2.12.0
2.12.0 is here! Please excuse the later release time, Pickle's on vacation! We've got a bounty of new features, changes, and bug fixes for you in Skript 2.12, along with early support for 1.21.6/7.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.12.1 on August 1st. We may release emergency patches before then should the need arise.
We would also like to welcome a new addition to the team, @Absolutionism!
Happy Skripting!
Changes to Supported Versions and Platforms
Back in 2.10, we switched to supporting the last three major versions. While reasonable at the time, Mojang has continued to make significant changes between minor versions and seems to have shyed away from incrementing the major version counter. In order to reduce the development burden of supporting so many versions with different features, as of 2.13 (next release) we have decided to switch to supporting the last 18 months of Minecraft releases. This means as of 2.13, Skript will support 1.20.4 and newer. 2.14 will be 1.21.0 and newer. We hope this change will allow us to modernize Skript more quickly and more fully support new systems like item components going forward. To clarify, 2.12 still supports 1.19.4+. These changes will affect 2.13 and later.
In the same vein, Paper has recently completed its fork away from Spigot. We have aimed to maintain support for both versions so far, but we are running into issues where the API differences between Paper and Spigot are becoming too great. It is not feasible for us to develop two parallel versions of Skript, and as a result, we will be dropping support for Spigot starting with 2.13. We encourage the small portion of our users who are still using Spigot to upgrade to Paper if possible.
Major Changes
Ephemeral Variables
Ephemeral variables (or ram vars, or memory vars) are now fully implemented by default for all users. These are global variables that are not saved between restarts. To make a variable ephemeral, add a hyphen (
-) to the start of its name:{-var}. These variables are about 2.5x faster to change compared to normal global variables. You do not need to do anything to enable them.Function Overloading
Function overloading enables creating functions that have the same name but different parameters types/parameter counts.
Local Variable Type Hints (Experimental)
Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching (Experimental)
A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources (Experimental)
Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Contributing Updates
We are now allowing contributors to release their code contributions under the more-permissive MIT License. For more information, please review our LICENSING.md file.
⚠ Breaking Changes
index of "a" in "b", values that do not appear in the second string will now returnnoneinstead of the previous-1.is enchanted withcondition now looks for exact levels instead of the specified level or better. Old behavior can be replicated withif {_item} is enchanted with sharpness 2 or better. Some examples:amount of {a::*}, "b", it was before parsed as(amount of {a::*}), "b", but it is now parsed asamount of ({a::*}, "b"). Use parentheses as necessary to clarify your intent.beaconis now a required keyword for therangeandtierexpressions.remove allchanger for the 'custom model data' expression has been removed. It functioned the same asremove.headhas been removed as an option for the 'player skull' expression ashead of playerconflicts with the 'head location' expression.typehas been removed as an option for the 'damage cause' expression asdamage causeanddamage typenow refer to different things.world.RegistryParser#getAllNameshas been removed in favor ofRegistryParser#getCombinedPatterns(from thePatternedParserinterface).sincedocumentation field have changed on SkriptEventInfo:SkriptEventInfo#getSince() (String) -> SkriptEventInfo#getSince() (String[])BukkitSyntaxInfos.Event.since() (String) -> BukkitSyntaxInfos.Event.since() (Collection<String>)BukkitSyntaxInfos.Event.Builder.since(String) -> BukkitSyntaxInfos.Event.Builder.addSince(String)Changelog
Additions
-) which are cleared when the server restarts.alongas an option in the 'push' effect:push player along vector(1,1,1) at speed 3.remove allchanger support has been removed.arg-1could be misinterpreted as(arg) - 1.event-entity typeevent value for entity related events.1.23E4,10e-10) to numbers.amount of {a::*}, "b", it was before parsed as(amount of {a::*}), "b", but it is now parsed asamount of ({a::*}, "b"). Use parentheses as necessary to clarify your intent.Changes
noneinstead of-1.rangeandtierexpressions now requirebeaconin their syntax.or betterandor worseadded as newly available comparison options.aliasesfolder will now be created automatically so that users know where to place custom aliases.Bug Fixes
event-itemin a 'craft' event often returnedairdue to the recipe being complex.raid omeneffect was incorrectly given the aliasbad omen.orlists.if sharpness 1, efficiency 3, and knockback 2 contains sharpness.next/previous'loop-value' could fail to reset in-between loops.pigentity data could not be saved in a variable.Skriptlang/instead ofSkript/lang/.API Changes
sincedocumentation field. Some methods have had their signatures changed and addons using them will need to be updated.RegistryParser#getAllNamesmethod withRegistryParser#getCombinedPatterns(from thePatternedParserinterface).Expression#possibleReturnTypes()andExpression#canReturn().headhas been removed as an option for theplayer skullexpression.Typegeneric parameter in theAnyContainsinterface.PropertyCondition.#isSectionOnly()method in SectionExpression allowing the ability to check if it requires a Section.SyntaxInfobuilder methods to the "property" type syntax classes, in favor of the existingregistermethods.Click here to view the full list of commits made since 2.11.2
Click here to view the full list of commits made since 2.12.0-pre1
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
For-Each Loop
Enable by adding
using for loopsto your script.A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.12.0-pre2: Pre-Release 2.12.0-pre2Compare Source
Skript 2.12.0-pre2
Today, we are releasing Skript 2.12.0-pre2. This pre-release includes additional bug fixes, including some for issues that were reported with the first pre-release. Skript 2.12 includes dozens of new features and bug fixes, along with early support for 1.21.6/7.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.12.0 on July 15th. We may release additional pre-releases before then should the need arise.
We would also like to welcome a new addition to the team, @Absolutionism!
Happy Skripting!
Changes to Supported Versions and Platforms
Back in 2.10, we switched to supporting the last three major versions. While reasonable at the time, Mojang has continued to make significant changes between minor versions and seems to have shyed away from incrementing the major version counter. In order to reduce the development burden of supporting so many versions with different features, as of 2.13 (next release) we have decided to switch to supporting the last 18 months of Minecraft releases. This means as of 2.13, Skript will support 1.20.4 and newer. 2.14 will be 1.21.0 and newer. We hope this change will allow us to modernize Skript more quickly and more fully support new systems like item components going forward. To clarify, 2.12 still supports 1.19.4+. These changes will affect 2.13 and later.
In the same vein, Paper has recently completed its fork away from Spigot. We have aimed to maintain support for both versions so far, but we are running into issues where the API differences between Paper and Spigot are becoming too great. It is not feasible for us to develop two parallel versions of Skript, and as a result, we will be dropping support for Spigot starting with 2.13. We encourage the small portion of our users who are still using Spigot to upgrade to Paper if possible.
Major Changes
Ephemeral Variables
Ephemeral variables (or ram vars, or memory vars) are now fully implemented by default for all users. These are global variables that are not saved between restarts. To make a variable ephemeral, add a hyphen (
-) to the start of its name:{-var}. These variables are about 2.5x faster to change compared to normal global variables. You do not need to do anything to enable them.Function Overloading
Function overloading enables creating functions that have the same name but different parameters types/parameter counts.
Local Variable Type Hints (Experimental)
Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching (Experimental)
A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources (Experimental)
Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Contributing Updates
We are now allowing contributors to release their code contributions under the more-permissive MIT License. For more information, please review our LICENSING.md file.
⚠ Breaking Changes
index of "a" in "b", values that do not appear in the second string will now returnnoneinstead of the previous-1.is enchanted withcondition now looks for exact levels instead of the specified level or better. Old behavior can be replicated withif {_item} is enchanted with sharpness 2 or better. Some examples:amount of {a::*}, "b", it was before parsed as(amount of {a::*}), "b", but it is now parsed asamount of ({a::*}, "b"). Use parentheses as necessary to clarify your intent.beaconis now a required keyword for therangeandtierexpressions.remove allchanger for the 'custom model data' expression has been removed. It functioned the same asremove.headhas been removed as an option for the 'player skull' expression ashead of playerconflicts with the 'head location' expression.typehas been removed as an option for the 'damage cause' expression asdamage causeanddamage typenow refer to different things.world.RegistryParser#getAllNameshas been removed in favor ofRegistryParser#getCombinedPatterns(from thePatternedParserinterface).sincedocumentation field have changed on SkriptEventInfo:SkriptEventInfo#getSince() (String) -> SkriptEventInfo#getSince() (String[])BukkitSyntaxInfos.Event.since() (String) -> BukkitSyntaxInfos.Event.since() (Collection<String>)BukkitSyntaxInfos.Event.Builder.since(String) -> BukkitSyntaxInfos.Event.Builder.addSince(String)Changelog
Pre-Release 2 Changes
SyntaxInfobuilder methods to the "property" type syntax classes, in favor of the existingregistermethods.Expression#simplify().pigentity data could not be saved in a variable.Additions
-) which are cleared when the server restarts.alongas an option in the 'push' effect:push player along vector(1,1,1) at speed 3.remove allchanger support has been removed.arg-1could be misinterpreted as(arg) - 1.event-entity typeevent value for entity related events.1.23E4,10e-10) to numbers.amount of {a::*}, "b", it was before parsed as(amount of {a::*}), "b", but it is now parsed asamount of ({a::*}, "b"). Use parentheses as necessary to clarify your intent.Changes
noneinstead of-1.rangeandtierexpressions now requirebeaconin their syntax.or betterandor worseadded as newly available comparison options.aliasesfolder will now be created automatically so that users know where to place custom aliases.Bug Fixes
event-itemin a 'craft' event often returnedairdue to the recipe being complex.raid omeneffect was incorrectly given the aliasbad omen.orlists.if sharpness 1, efficiency 3, and knockback 2 contains sharpness.next/previous'loop-value' could fail to reset in-between loops.pigentity data could not be saved in a variable.API Changes
sincedocumentation field. Some methods have had their signatures changed and addons using them will need to be updated.RegistryParser#getAllNamesmethod withRegistryParser#getCombinedPatterns(from thePatternedParserinterface).Expression#possibleReturnTypes()andExpression#canReturn().headhas been removed as an option for theplayer skullexpression.Typegeneric parameter in theAnyContainsinterface.PropertyCondition.#isSectionOnly()method in SectionExpression allowing the ability to check if it requires a Section.SyntaxInfobuilder methods to the "property" type syntax classes, in favor of the existingregistermethods.Click here to view the full list of commits made since 2.11.2
Click here to view the full list of commits made since 2.12.0-pre1
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
For-Each Loop
Enable by adding
using for loopsto your script.A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.12.0-pre1: Pre-Release 2.12.0-pre1Compare Source
Skript 2.12.0-pre1
Today, we are excited to celebrate the beginning of the second half of the year with a new Skript pre-release! Skript 2.12.0-pre1 is now available! This release includes dozens of new features and bug fixes, along with early support for 1.21.6/7.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.12.0 on July 15th. We may release additional pre-releases before then should the need arise.
We would also like to welcome a new addition to the team, @Absolutionism!
Happy Skripting!
Major Changes
Ephemeral Variables
Ephemeral variables (or ram vars, or memory vars) are now fully implemented by default for all users. These are global variables that are not saved between restarts. To make a variable ephemeral, add a hyphen (
-) to the start of its name:{-var}. These variables are about 2.5x faster to change compared to normal global variables. You do not need to do anything to enable them.Function Overloading
Function overloading enables creating functions that have the same name but different parameters types/parameter counts.
Local Variable Type Hints (Experimental)
Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching (Experimental)
A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources (Experimental)
Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Contributing Updates
We are now allowing contributors to release their code contributions under the more-permissive MIT License. For more information, please review our LICENSING.md file.
⚠ Breaking Changes
index of "a" in "b", values that do not appear in the second string will now returnnoneinstead of the previous-1.is enchanted withcondition now looks for exact levels instead of the specified level or better. Old behavior can be replicated withif {_item} is enchanted with sharpness 2 or better. Some examples:amount of {a::*}, "b", it was before parsed as(amount of {a::*}), "b", but it is now parsed asamount of ({a::*}, "b"). Use parentheses as necessary to clarify your intent.beaconis now a required keyword for therangeandtierexpressions.remove allchanger for the 'custom model data' expression has been removed. It functioned the same asremove.headhas been removed as an option for the 'player skull' expression ashead of playerconflicts with the 'head location' expression.typehas been removed as an option for the 'damage cause' expression asdamage causeanddamage typenow refer to different things.world.RegistryParser#getAllNameshas been removed in favor ofRegistryParser#getCombinedPatterns(from thePatternedParserinterface).sincedocumentation field have changed on SkriptEventInfo:SkriptEventInfo#getSince() (String) -> SkriptEventInfo#getSince() (String[])BukkitSyntaxInfos.Event.since() (String) -> BukkitSyntaxInfos.Event.since() (Collection<String>)BukkitSyntaxInfos.Event.Builder.since(String) -> BukkitSyntaxInfos.Event.Builder.addSince(String)Changelog
Additions
-) which are cleared when the server restarts.alongas an option in the 'push' effect:push player along vector(1,1,1) at speed 3.remove allchanger support has been removed.arg-1could be misinterpreted as(arg) - 1.event-entity typeevent value for entity related events.1.23E4,10e-10) to numbers.amount of {a::*}, "b", it was before parsed as(amount of {a::*}), "b", but it is now parsed asamount of ({a::*}, "b"). Use parentheses as necessary to clarify your intent.Changes
noneinstead of-1.rangeandtierexpressions now requirebeaconin their syntax.or betterandor worseadded as newly available comparison options.aliasesfolder will now be created automatically so that users know where to place custom aliases.Bug Fixes
event-itemin a 'craft' event often returnedairdue to the recipe being complex.raid omeneffect was incorrectly given the aliasbad omen.orlists.if sharpness 1, efficiency 3, and knockback 2 contains sharpness.next/previous'loop-value' could fail to reset in-between loops.API Changes
sincedocumentation field. Some methods have had their signatures changed and addons using them will need to be updated.RegistryParser#getAllNamesmethod withRegistryParser#getCombinedPatterns(from thePatternedParserinterface).Expression#possibleReturnTypes()andExpression#canReturn().headhas been removed as an option for theplayer skullexpression.Typegeneric parameter in theAnyContainsinterface.PropertyCondition.#isSectionOnly()method in SectionExpression allowing the ability to check if it requires a Section.Click here to view the full list of commits made since 2.11.2
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
For-Each Loop
Enable by adding
using for loopsto your script.A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Local Variable Type Hints
Enable by adding
using type hintsto your script.Local variable type hints enable Skript to understand what kind of values your local variables will hold at parse time. Consider the following example:
Previously, the code above would parse without issue. However, Skript now understands that when it is used,
{_a}could only be a number (and not a text). Thus, the code above would now error with a message about mismatched types.Please note that this feature is currently only supported by simple local variables. A simple local variable is one whose name does not contain any expressions:
Runtime Error Catching
Enable by adding
using error catchingto your script.A new
catch [run[ ]time] error[s]section allows you to catch and suppress runtime errors within it and access them later with[the] last caught [run[ ]time] errors.Damage Sources
Enable by adding
using damage sourcesto your script.Damage sources are a more advanced and detailed version of damage causes. Damage sources include information such as the type of damage, the location where the damage originated from, the entity that directly caused the damage, and more.
Below is an example of what damaging using custom damage sources looks like:
For more details about the syntax, visit damage source on our documentation website.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.11.2: Patch Release 2.11.2Compare Source
Skript 2.11.2
As we prepare for Skript 2.12 in July, Skript 2.11.2 is here to resolve some additional bugs.
As always, you can report any issues on our issue tracker.
Skript 2.11.2 supports Spigot or Paper servers on versions 1.19.4 to 1.21.4, with tentative support for 1.21.5.
Happy Skripting!
Changelog
Bug Fixes
ainstead ofanin the default language file.playerevent value not working in a 'flight toggle' event.API Changes
Click here to view the full list of commits made since 2.11.1
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments available in this release
For-Each Loop
Enable by adding
using for loopsto your script.A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.11.1: Patch Release 2.11.1Compare Source
Skript 2.11.1
What better than a new Skript release to celebrate the beginning of May? Today, we are releasing Skript 2.11.1 which brings with it a handful of bug fixes.
As always, you can report any issues on our issue tracker.
Skript 2.11.1 supports Spigot or Paper servers on versions 1.19.4 to 1.21.4, with tentative support for 1.21.5.
Happy Skripting!
Changelog
Changes
Bug Fixes
API Changes
Click here to view the full list of commits made since 2.11.0
Notices
Experimental Features
Experimental features can be used to enable syntax and other behavior on a per-script basis. Some of these features are new proposals that we are testing while others may have unsafe or complex elements that regular users may not need.
While we have tested the available experiments to the best of our ability, they are they are still in development. As a result, they are subject to change and may contain bugs. Experiments should be used at your own discretion.
Additionally, example scripts demonstrating usage of the available experiments can be found here.
Click to reveal the experiments avaiable in this release
For-Each Loop
Enable by adding
using for loopsto your script.A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Queue
Enable by adding
using queuesto your script.A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Script Reflection
Enable by adding
using script reflectionto your script.This feature includes:
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.11.0: Feature Release 2.11.0Compare Source
Skript 2.11.0
Skript 2.11.0 is now available! This release is of a much more manageable size compared to 2.10, but includes a significant amount of new syntaxes to play around with, as well as a major fix for some item variables. Please read the Major Changes section closely.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Skript 2.11.0 supports Spigot or Paper servers on versions 1.19.4 to 1.21.4.
Per our release model, we plan to release 2.11.1 on May 1st to address any immediate issues that are spotted with this release. Should it be necessary, an emergency patch release may come before then.
Happy Skripting!
Major Changes
black (wolf color)orblack (color).⚠ Breaking Changes
last colour of %string%expression has been reworked, adding additional support. This necessitated a pattern change, so existing code using this expression should now uselast string colour code of %string%.potion typetype has been renamed topotion effect type. Usages of the previous name will need to be updated in scripts.chiseled bookshelfanddecorated potinventory types have been renamed to[chiseled] bookshelf inventoryanddecorated pot inventoryrespectively. Usages of the previous names will need to be updated in scripts.event-itemin the 'armor change event' has been removed in favor of 'old armor item' and 'new armor item'Changelog
Additions
on helmet change.a, b, or crather thana, b, and c:if {_X} is any of {_possibilities::*}.past event-item,future event-item, andevent-slotto the armor change event.black (wolf color)orblack (color).Changes
last colour of %string%, adds support for returning colour objects, the first colour, and all colours.effectwhen using the typepotion effect type.minecraft:oak_log.if player is in world "world" or world "world_nether".skript tagas an alternative forcustom tag.5 xp + 10.using experiment.itemstackas another way to reference theitemtype.with all item flags.armourinstead ofarmor.Bug Fixes
resin brickandresin bricks.anyin the player input event.Removals
[is] event cancelledas it has been superseded by CondCancelled for years.API Changes
canLoad()method toAddonModulefor controlling whether a module should be initialized and then loaded.Click here to view the full list of commits made since 2.10.2
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.11.0-pre2: Pre-Release 2.11.0-pre2Compare Source
Skript 2.11.0-pre2
Skript 2.11.0-pre2 is now available! This release includes a handful of extra bug fixes not present in pre1, including one major bug fix relating to some item variables. Please read the Major Changes section closely.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.11.0 on April 15th. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Major Changes
black (wolf color)orblack (color).⚠ Breaking Changes
last colour of %string%expression has been reworked, adding additional support. This necessitated a pattern change, so existing code using this expression should now uselast string colour code of %string%.potion typetype has been renamed topotion effect type. Usages of the previous name will need to be updated in scripts.chiseled bookshelfanddecorated potinventory types have been renamed to[chiseled] bookshelf inventoryanddecorated pot inventoryrespectively. Usages of the previous names will need to be updated in scripts.event-itemin the 'armor change event' has been removed in favor of 'old armor item' and 'new armor item'Changelog
Pre-Release 2 Changes
resin brickandresin bricks.anyin the player input event.Additions
on helmet change.a, b, or crather thana, b, and c:if {_X} is any of {_possibilities::*}.past event-item,future event-item, andevent-slotto the armor change event.black (wolf color)orblack (color).Changes
last colour of %string%, adds support for returning colour objects, the first colour, and all colours.effectwhen using the typepotion effect type.minecraft:oak_log.if player is in world "world" or world "world_nether".skript tagas an alternative forcustom tag.5 xp + 10.using experiment.itemstackas another way to reference theitemtype.with all item flags.armourinstead ofarmor.Bug Fixes
resin brickandresin bricks.anyin the player input event.Removals
[is] event cancelledas it has been superseded by CondCancelled for years.API Changes
canLoad()method toAddonModulefor controlling whether a module should be initialized and then loaded.Click here to view the full list of commits made since 2.10.2
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.11.0-pre1: Pre-Release 2.11.0-pre1Compare Source
Skript 2.11.0-pre1
It's no joke: Skript 2.11.0-pre1 is now available! This release includes dozens of new features, bug fixes, and other enhancements.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.11.0 on April 15th. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Major Changes
⚠ Breaking Changes
last colour of %string%expression has been reworked, adding additional support. This necessitated a pattern change, so existing code using this expression should now uselast string colour code of %string%.potion typetype has been renamed topotion effect type. Usages of the previous name will need to be updated in scripts.chiseled bookshelfanddecorated potinventory types have been renamed to[chiseled] bookshelf inventoryanddecorated pot inventoryrespectively. Usages of the previous names will need to be updated in scripts.event-itemin the 'armor change event' has been removed in favor of 'old armor item' and 'new armor item'Changelog
Additions
on helmet change.a, b, or crather thana, b, and c:if {_X} is any of {_possibilities::*}.past event-item,future event-item, andevent-slotto the armor change event.black (wolf color)orblack (color).Changes
last colour of %string%, adds support for returning colour objects, the first colour, and all colours.effectwhen using the typepotion effect type.minecraft:oak_log.if player is in world "world" or world "world_nether".skript tagas an alternative forcustom tag.5 xp + 10.using experiment.itemstackas another way to reference theitemtype.with all item flags.armourinstead ofarmor.Bug Fixes
Removals
[is] event cancelledas it has been superseded by CondCancelled for years.API Changes
canLoad()method toAddonModulefor controlling whether a module should be initialized and then loaded.Click here to view the full list of commits made since 2.10.2
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.10.2: Patch Release 2.10.2Compare Source
Skript 2.10.2
Skript 2.10.2 is here with some more bug fixes and some docs enhancements!
We would like to welcome two new additions to the team, who will be focused mainly on triaging issues and bug fixes:
@Burbulinis
@TheMug06
Thank you to everyone who applied!
We are also updating our release schedule, which you can view here. To summarize the changes, we are introducing minor feature releases in April and October, which will be focused on additions and minimize breaking changes. This is to keep the update size more reasonable and to be quicker about responding to Minecraft's 'drops' update system. This means 2.11 will be next month, rather than in July.
As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Bug Fixes
event-vehicleto work properly.API Changes
Click here to view the full list of commits made since 2.10.1
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.10.1: Patch Release 2.10.1Compare Source
Skript 2.10.1
Skript 2.10.1 is here to address some of the most prominent issues reported with 2.10.0.
As always, you can report any issues on our issue tracker.
Happy Skripting!
Breaking Changes
There have been a few minor breaking changes:
Changelog
Bug Fixes
API Changes
Click here to view the full list of commits made since 2.10.0
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.10.0: Feature Release 2.10.0Compare Source
Skript 2.10.0
We are excited to share that Skript 2.10.0 is now available! It is one of our largest updates, with more than 150 new features, bug fixes, and API updates to play around with!
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.10.1 on February 1st to address any immediate issues that are spotted with this release. Should it be necessary, an emergency patch release may come before then.
Happy Skripting!
Major Changes
Minecraft Tags
Skript now supports the ability to use Minecraft tags (
#minecraft:swords,#minecraft:logs, etc.). These are being introduced as a replacement for the current category aliases (any sword,any log) and should provide much more flexibilty. You can even create your own tags!Display Entities
The long-awaited support for display entities is finally here! 2.10 includes a lot of syntax for creating, manipulating, and using display entities.
More display syntax can be found on the docs.
Variable Starting Character Reservations
Some characters are reserved at the start of variable names. Users will receive a warning when trying to use them.
This is so that these characters will be available for special variable functionality in future versions.
The following characters are reserved:
{~variable}{.variable}{$variable}{!variable}{&variable}{^variable}{*variable}{+variable}{-variable}Registration API (Preview)
This update includes the initial preview of a new Skript/Addon API, starting with addon registration and syntax registration.
The main Skript (JavaPlugin) class now has a new method,
instance(), which provides access to the modern Skript class. This class contains the registered addons and the newSyntaxRegistry, which holds all of Skript's (and its addon's) registered syntax.A tutorial with full usage information will be coming in the near future. For now, the full details are available at the pull request.
🧪 Experimental Features
Experimental features allow users to enable syntax on a per-script basis: some of these features are new proposals that we are testing, others may have unsafe or complex elements that regular users don't want.
Experimental features can be enabled by adding 'using %feature name%' at the top of a script.
Please note that anything marked as experimental is subject to changes in future versions.
For-Each Loop
A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Enabling Flag
Queue
A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Enabling Flag
Script Reflection
This feature includes:
Enabling Flag
⚠ Breaking Changes
Changelog
Changes Since 2.10.0-pre1
Additions
/my_ban_command sovde 1y 2d 3s.100_000_000.mod:itemis accessible asmod's itemoritem from mod. This feature is not officially supported, as Skript does not officially support any modded platforms.Bug Fixes
any boat.Removals
downloadargument from skript command.Changes
API Changes
-2.Click here to view the full list of commits made since 2.9.5
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.10.0-pre1: Pre-Release 2.10.0-pre1Compare Source
Skript 2.10.0-pre1
Today, we are kicking off the new year with Skript 2.10.0 Pre-Release 1! As a pre-release, be warned that there may be bugs! We do not recommend running this version on your production servers. This release contains more than 150 new features, bug fixes, and API updates to play around with!
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our release model, we plan to release 2.10.0 on January 15th. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Major Changes
Minecraft Tags
Skript now supports the ability to use Minecraft tags (
#minecraft:swords,#minecraft:logs, etc.). These are being introduced as a replacement for the current category aliases (any sword,any log) and should provide much more flexibilty. You can even create your own tags!Display Entities
The long-awaited support for display entities is finally here! 2.10 includes a lot of syntax for creating, manipulating, and using display entities.
More display syntax can be found on the docs.
Variable Starting Character Reservations
Some characters are reserved at the start of variable names. Users will receive a warning when trying to use them.
This is so that these characters will be available for special variable functionality in future versions.
The following characters are reserved:
{~variable}{.variable}{$variable}{!variable}{&variable}{^variable}{*variable}{+variable}{-variable}Registration API (Preview)
This update includes the initial preview of a new Skript/Addon API, starting with addon registration and syntax registration.
The main Skript (JavaPlugin) class now has a new method,
instance(), which provides access to the modern Skript class. This class contains the registered addons and the newSyntaxRegistry, which holds all of Skript's (and its addon's) registered syntax.A tutorial with full usage information will be coming in the near future. For now, the full details are available at the pull request.
🧪 Experimental Features
Experimental features allow users to enable syntax on a per-script basis: some of these features are new proposals that we are testing, others may have unsafe or complex elements that regular users don't want.
Experimental features can be enabled by adding 'using %feature name%' at the top of a script.
Please note that anything marked as experimental is subject to changes in future versions.
For-Each Loop
A new kind of loop syntax that stores the loop index and value in variables for convenience.
This can be used to avoid confusion when nesting multiple loops inside each other.
All existing loop features are also available in this section.
Enabling Flag
Queue
A collection that removes elements whenever they are requested.
This is useful for processing tasks or keeping track of things that need to happen only once.
Queues can be looped over like a regular list.
Enabling Flag
Script Reflection
This feature includes:
Enabling Flag
⚠ Breaking Changes
Changelog
Additions
/my_ban_command sovde 1y 2d 3s.100_000_000.mod:itemis accessible asmod's itemoritem from mod. This feature is not officially supported, as Skript does not officially support any modded platforms.Bug Fixes
any boat.Removals
downloadargument from skript command.Changes
API Changes
Click here to view the full list of commits made since 2.9.5
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.9.5: Patch Release 2.9.5Compare Source
Skript 2.9.5
Skript 2.9.5 is here with a handful of new bug fixes. As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Tweaks
Bug Fixes
API Additions
Click here to view the full list of commits made since 2.9.4
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.9.4: Patch 2.9.4Compare Source
Skript 2.9.4
Skript 2.9.4 is here with even more bug fixes and early support for Minecraft 1.21.3. As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Bug Fixes
Additions
Click here to view the full list of commits made since 2.9.3
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.9.3: Patch 2.9.3Compare Source
Skript 2.9.3
Skript 2.9.3 is here with even more bug fixes. As always, you can report any issues on our issue tracker.
We are also excited to welcome six new members to our team! These new members were selected from the numerous applications we received, and they have already been hard at work troubleshooting issues, patching bugs, and building new features. The full list of new members is as follows:
Happy Skripting!
Changelog
Bug Fixes
API Updates
Click here to view the full list of commits made since 2.9.2
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.9.2: Patch Release 2.9.2Compare Source
Skript 2.9.2
Skript 2.9.2 is here with more bug fixes and a few minor additions and tweaks. As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Additions
Tweaks
Bug Fixes
Click here to view the full list of commits made since 2.9.1
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.9.1: Patch Release 2.9.1Compare Source
Skript 2.9.1
Skript 2.9.1 is here to resolve some of the most notable issues reported with 2.9.0. We will continue to assess stability and make fixes as necessary. As always, you can report any issues on our issue tracker.
Happy Skripting!
Changelog
Additions
Tweaks
Bug Fixes
Click here to view the full list of commits made since 2.9.0
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.9.0: Feature Release 2.9.0Compare Source
Skript 2.9.0
Skript 2.9.0 is here with dozens of new features, quality-of-life improvements, and bug fixes. Notably, this release includes support for Minecraft 1.21.
We especially want to thank the recent influx of new contributors, many of whom are included in this update. Every contributor means a little less work for the team and a little more progress for Skript, so please, if you want a feature in Skript, go ahead and try to make a pull request! New contributors are very welcome! You can review our contributing guide by clicking here.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our new release model, we plan to release 2.9.1 on August 1st to address any immediate issues that are spotted with this release. Should it be necessary, an emergency patch release may come before then.
Happy Skripting!
Major Changes
listen to cancelled events by defaultconfig option totrueto allow events to listen to both uncancelled and cancelled events by default:###alone on a line.hello ### there) will not start or end a comment.set {text} to "hello" + "there") with the addition operator.concat(...)function joins any text or objects together into a single text.load default aliasesoption inconfig.sk, which allows you to tell Skript to only load aliases in theplugins/Skript/aliasesfolder. You can provide as many or as few (even none, if you want!) aliases as you like. We will provide the default folder in the GitHub release for your convenience.⚠ Breaking Changes
#characters in strings no longer need to be doubled! Skript can now tell that you are writing a string and will not start a comment in the middle of it. This change means all your##will now appear as two#instead of one! This won't break hex colours, those support either one or two#'s, but it may break other text!(){}\",.newlandnlineare no longer valid syntaxes for thenewlineexpression, butnew lineis now valid.#characters in strings no longer need to be doubled. This will mean existing doubled#s will appear as two, rather than one.non-airinstead ofsolidin thehighest solid blockexpression has been removed.on teleportwill now trigger for non-player entities. To detect only player teleports, useon player teleport.Changelog
Additions
lowest solid blockexpression for obtaining the lowest solid block at a location.is onlinemay continue to return true for players that have disconnected and then reconnected.breakablewith the existing unbreakable syntaxes.invincibleas a synonym ofinvulnerablein related syntaxes.actualpart of the target block expression. Whenactualis used, the hitboxes of blocks will be considered.teleportevent to trigger when non-player entities are teleported. NOTE: This meanson teleportwill now trigger for entities other than players. Useon player teleportfor detecting only player teleports.###(see above).+) symbol.sort {_list-of-players::*} by {hide-and-seek::%input%::score})whether <condition>expression to get the boolean (true/false) representation of a condition (example:send "Flying: %whether player is flying%").1 minute / 15 seconds = 4)Bug Fixes
is connectedpattern to support only Paper server.last damageexpression.Removals
Changes
{variable::%player%}is the same as{variable::%player's uuid%}. If you need to continue using the name, use{variable::%player's name%}. Variables will not automatically migrate. Click to view this discussion for further information.broadcasteffect to trigger message broadcast event.andlists are equal.#characters within strings. Existing strings will need updated to remove duplicate#characters. This change does not affect hex color tags.nlineandnewl. Additionally,new lineis now a valid option.load default aliasesconfig option.API Changes
returneffect)exitorreturnsyntax is used (and the section is exited).%*string%in syntax)Click here to view the full list of commits made since 2.8.7
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.9.0-pre2: Pre-Release 2.9.0-pre2Compare Source
Skript 2.9.0-pre2
Skript 2.9.0 Pre-Release 2 is here to fix some issues that came with the first pre-release. As with any other pre-release, be warned that there may be bugs! We do not recommend running this version on your production servers. This release contains many new features and bug fixes, including support for Minecraft 1.21.
We especially want to thank the recent influx of new contributors, many of whom are included in this update. Every contributor means a little less work for the team and a little more progress for Skript, so please, if you want a feature in Skript, go ahead and try to make a pull request! New contributors are very welcome! You can review our contributing guide by clicking here.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our new release model, we plan to release 2.9.0 on July 15th. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Major Changes
listen to cancelled events by defaultconfig option totrueto allow events to listen to both uncancelled and cancelled events by default:###alone on a line.hello ### there) will not start or end a comment.set {text} to "hello" + "there") with the addition operator.concat(...)function joins any text or objects together into a single text.load default aliasesoption inconfig.sk, which allows you to tell Skript to only load aliases in theplugins/Skript/aliasesfolder. You can provide as many or as few (even none, if you want!) aliases as you like. We will provide the default folder in the GitHub release for your convenience.⚠ Breaking Changes
#characters in strings no longer need to be doubled! Skript can now tell that you are writing a string and will not start a comment in the middle of it. This change means all your##will now appear as two#instead of one! This won't break hex colours, those support either one or two#'s, but it may break other text!(){}\",.newlandnlineare no longer valid syntaxes for thenewlineexpression, butnew lineis now valid.#characters in strings no longer need to be doubled. This will mean existing doubled#s will appear as two, rather than one.non-airinstead ofsolidin thehighest solid blockexpression has been removed.on teleportwill now trigger for non-player entities. To detect only player teleports, useon player teleport.Changelog
Pre-Release 2 Changes
Click here to view the full list of commits made since 2.9.0-pre1
Additions
lowest solid blockexpression for obtaining the lowest solid block at a location.is onlinemay continue to return true for players that have disconnected and then reconnected.actualpart of the target block expression. Whenactualis used, the hitboxes of blocks will be considered.teleportevent to trigger when non-player entities are teleported. NOTE: This meanson teleportwill now trigger for entities other than players. Useon player teleportfor detecting only player teleports.###.+) symbol.whether <condition>expression to get the boolean (true/false) representation of a condition (example:send "Flying: %whether player is flying%").Bug Fixes
is connectedpattern to support only Paper server.sort {_list-of-players::*} by {hide-and-seek::%input%::score})last damageexpression.Removals
Changes
#characters within strings.new lineexpression.1 second / 5 ticks = 4)load default aliasesconfig option.API Changes
broadcasteffect now calls BroadcastMessageEvent.returneffect)%*string%in syntax)Click here to view the full list of commits made since 2.8.7
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.9.0-pre1: Pre-Release 2.9.0-pre1Compare Source
Skript 2.9.0-pre1
Skript 2.9.0 Pre-Release 1 is here for everyone to begin previewing! As a pre-release, be warned that there may be bugs! We do not recommend running this version on your production servers. This release contains many new features and bug fixes, including support for Minecraft 1.21.
We especially want to thank the recent influx of new contributors, many of whom are included in this update. Every contributor means a little less work for the team and a little more progress for Skript, so please, if you want a feature in Skript, go ahead and try to make a pull request! New contributors are very welcome! You can review our contributing guide by clicking here.
Below, you can familiarize yourself with the changes. Additionally, by clicking here, you can view the list of new syntax on our documentation site. As always, report any issues to our issues page!
Per our new release model, we plan to release 2.9.0 on July 15th. We may release additional pre-releases before then should the need arise.
Happy Skripting!
Major Changes
listen to cancelled events by defaultconfig option totrueto allow events to listen to both uncancelled and cancelled events by default:###alone on a line.hello ### there) will not start or end a comment.set {text} to "hello" + "there") with the addition operator.concat(...)function joins any text or objects together into a single text.load default aliasesoption inconfig.sk, which allows you to tell Skript to only load aliases in theplugins/Skript/aliasesfolder. You can provide as many or as few (even none, if you want!) aliases as you like. We will provide the default folder in the GitHub release for your convenience.⚠ Breaking Changes
#characters in strings no longer need to be doubled! Skript can now tell that you are writing a string and will not start a comment in the middle of it. This change means all your##will now appear as two#instead of one! This won't break hex colours, those support either one or two#'s, but it may break other text!(){}\",.newlandnlineare no longer valid syntaxes for thenewlineexpression, butnew lineis now valid.#characters in strings no longer need to be doubled. This will mean existing doubled#s will appear as two, rather than one.non-airinstead ofsolidin thehighest solid blockexpression has been removed.on teleportwill now trigger for non-player entities. To detect only player teleports, useon player teleport.Changelog
Additions
lowest solid blockexpression.is connectedpattern inis online.###multi-line comment support.whether <condition>expression to allow conditions to be used as boolean expressions. (set {_test} to whether player is flying)Bug Fixes
is connectedpattern to support only Paper server.sort {_list-of-players::*} by {hide-and-seek::%input%::score})last damageexpression.Removals
Changes
#characters within strings.new lineexpression.1 second / 5 ticks = 4)load default aliasesconfig option.API Changes
broadcasteffect now calls BroadcastMessageEvent.returneffect)%*string%in syntax)Click here to view the full list of commits made since 2.8.X
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.8.7: Patch Release 2.8.7Compare Source
Skript 2.8.7
We're releasing 2.8.7 to fix some important issues that made their way into 2.8.6. We expect this to be the final version for Skript 2.8. You can report any issues through our issue tracker.
Happy Skripting!
Changelog
Bug Fixes
Click here to view the full list of commits made since 2.8.6
Notices
Java 11
From Skript 2.9.0 onwards, we will be requiring a minimum Java version of 11 to run.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.8.6: Patch Release 2.8.6Compare Source
Skript 2.8.6
Skript 2.8.6 is here. This release delivers more bug fixes with improved 1.20.5+ support. Additionally, a few quality-of-life features have made their way in. You can report any issues through our issue tracker.
Happy Skripting!
Changelog
Additions
Bug Fixes
API Updates / For Addon Developers
Entity and Blockcompared to their shared supertypeObject).Click here to view the full list of commits made since 2.8.5
Notices
Java 11
From Skript 2.9.0 onwards, we will be requiring a minimum Java version of 11 to run.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.8.5: Patch Release 2.8.5Compare Source
Skript 2.8.5
Skript 2.8.5 is here with some more bug fixes and quality-of-life additions. There is also early support for 1.20.5/1.20.6 (Skript will run and some basic 1.20.5/1.20.6 features will work). Further support will come in the next releases. You can report any issues on our issue tracker.
Happy Skripting!
Changelog
Additions
mushroom cowalias formooshroom.charged creeperrather thanpowered creeper.Skript-2.8.5.jar).Bug Fixes
[the]in the hotbar expression.Click here to view the full list of commits made since 2.8.4
Notices
Java 11
From Skript 2.9.0 onwards, we will be requiring a minimum Java version of 11 to run.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.8.4: Patch Release 2.8.4Compare Source
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!
Changelog
Bug Fixes
Click here to view the full list of commits made since 2.8.3
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.8.3: Patch Release 2.8.3Compare Source
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!
Notices
If, and only if, you have the
case-insensitive-variablesconfig option set tofalse, 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.Changelog
Bug Fixes
inventory item moveevent were mistakenly removed.groupsexpression with LuckPerms would cause an exception.plainalways getting the same item for aliases representing multiple items.event-block.at timeevent failing to property trigger when a world's time was changed.Click here to view the full list of commits made since 2.8.2
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.8.2: Emergency Patch Release 2.8.2Compare Source
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!
Changelog
Bug Fixes
Click here to view the full list of commits made since 2.8.1
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.8.1: Patch Release 2.8.1Compare Source
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.
Happy Skripting!
Changelog
Additions
breezeandwind charge.Tweaks
armouris now valid for the player armor change event.Bug Fixes
armor of %entities%to be considered a single value.loop-value - 1to error. Additionally, many improvements have been made to thearithmeticexpression to greatly improve parsing and general stability.scriptsexpression to return absolute paths for enabled scripts.vector from coordinatesexpression.Click here to view the full list of commits made since 2.8.0
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.8.0: Feature Release 2.8.0Compare Source
Skript 2.8.0
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
target entity of playerexpression 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."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.on growevent. The grow event now has many more options to specify how you want it to listen. These changes mean that code that useson grow of xmay fire twice as often as expected.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 likedamage of %item%(returning 57 for 103/160).<none>for a whole chain if one of the operations is illegal. Previously, adding1 + "hello"would treat"hello"as0and just return1. This now returns<none>. However, the behavior of adding things to unset values hasn't changed.1 + {_none}still returns1.Changelog
Additions
raw index of slotexpression.loop-(counter|iteration)[-%number%]for both normal and while loop and improved performance for loop-value.items in inventoryexpression.tool changeevent'sevent-slotand for thehotbar slotexpression. Also allows the ommission of the player inhotbar slotwhen using it in events that have an event-player.is jumpingfor living entities condition. (Paper 1.15+)ready arroweventsheareffect.is climbingfor living entities condition.Free/Max/Total Server Memoryexpression.damageexpression.event-itemandevent-slotto the resurrect event. If no totem is present, these values arenone.returnsaliases forfunctiondefinition.playerandofflineplayerfunctions.<keybind:value>).apply bone mealeffect.on moveevent.isNaN(number)to check if a number is NaN.Bug Fixes
cursor slotnot always returning the correct item ininventory clickevents.differenceexpression.parsed asexpression returning arrays or throwing exceptions.dropsin 1.20.2+.Removals
Changes
furnace slotexpressions and fixes numerous issues with them.elementexpression and adds the ability to A, get the first or last x elements of a list, and B, get the elements in a range from x to y in the list.on growevent. Fixes an issue where listening toon grow of sugarcaneor any other full-block plant, like cacti or pumpkins, would never fire. Adds more functionality to specify what exactly to listen for.case-insensitive variablesconfig option visible by default in the config file.block changeevent and adds block and blockdata event values.decreaseas an alias forreduce, e.g.decrease {_var} by 2.and withbeforefade outin thetitleeffect.continueto continue outer loops.target entityexpression to use raytracing for a player's target. This should make it much more accurate, but may change behavior slightly. Also adds an option to change the ray size and to ignore blocks.use player uuids in variable namesconfig option enabled.API Changes
Timespan#getTicksandTimespan#fromTicksfrom returning ints to returning longs. DeprecatedTimespan#getTicks_iandTimespan#fromTicks_idue to API name change.Direction#getDirectionwhich returns a vector.%objects%to avoid UnparsedLiterals.ExpressionType#NORMALwas removed.ExpressionType#EVENTwas added for EventValueExpressions. A new default register method was added to EventValueExpression.WILLto PropertyCondition to allow for easy registration for conditions likeplayer will consume the firework charge.SyntaxElementInfo#ctoSyntaxElementInfo#elementClass. This field will be made private in 2.9. Please use theSyntaxElementInfo#getElementClass()getter instead.Inventory SlottoSlot.MarkedForRemovalannotations withApiStatus.ScheduledForRemoval.cleanup()method in JUnit tests.Click here to view the full list of commits made since 2.7.3
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases. We're currently testing a new version of skript-reflect and we would love some more testers!
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.8.0-pre2: Pre-Release 2.8.0-pre2Compare Source
Skript 2.8.0-pre2
Skript 2.8.0 Pre-Release 2 is here to fix some of the issues found on the first pre-release. As a pre-release, be warned that there may be bugs! We do not recommend running this version on your production servers. Per our new release model, we plan to release Skript 2.8.0 on January 15th.
Below, you can familiarize yourself with the changes. As always, report any issues to our issues page. We will continue to work on addressing any major issues before the full release.
Happy Skripting!
Changelog
The changelog below highlights all changes since the first pre-release. For the complete 2.8.0 changelog, please review the first pre-release's changelog.
Bug Fixes
Click here to view the full list of commits made since 2.8.0-pre1
Changes
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases. We're currently testing a new version of skript-reflect and we would love some more testers!
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.8.0-pre1: Pre-Release 2.8.0-pre1Compare Source
Skript 2.8.0-pre1
Skript 2.8.0 Pre-Release 1 is here for everyone to begin previewing! This release contains all major features for Skript 2.8.0. As a pre-release, be warned that there may be bugs! We do not recommend running this version on your production servers. We will release additional pre-releases as necessary. Per our new release model, we plan to release Skript 2.8.0 on January 15th.
Below, you can familiarize yourself with the changes. As always, report any issues to our issues page! We will be working over the next two weeks to address any issues that are found.
Happy New Year and Happy Skripting!
⚠ Breaking Changes
target entity of playerexpression 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."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.on growevent. The grow event now has many more options to specify how you want it to listen. These changes mean that code that useson grow of xmay fire twice as often as expected.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 likedamage of %item%(returning 57 for 103/160).<none>for a whole chain if one of the operations is illegal. Previously, adding1 + "hello"would treat"hello"as0and just return1. This now returns<none>. However, the behavior of adding things to unset values hasn't changed.1 + {_none}still returns1.Changelog
Additions
raw index of slotexpression.loop-(counter|iteration)[-%number%]for both normal and while loop and improved performance for loop-value.items in inventoryexpression.tool changeevent'sevent-slotand for thehotbar slotexpression. Also allows the ommission of the player inhotbar slotwhen using it in events that have an event-player.is jumpingfor living entities condition. (Paper 1.15+)ready arroweventsheareffect.is climbingfor living entities condition.Free/Max/Total Server Memoryexpression.damageexpression.event-itemandevent-slotto the resurrect event. If no totem is present, these values arenone.returnsaliases forfunctiondefinition.playerandofflineplayerfunctions.<keybind:value>).apply bone mealeffect.on moveevent.isNaN(number)to check if a number is NaN.Bug Fixes
cursor slotnot always returning the correct item ininventory clickevents.differenceexpression.parsed asexpression returning arrays or throwing exceptions.dropsin 1.20.2+.Removals
Changes
furnace slotexpressions and fixes numerous issues with them.elementexpression and adds the ability to A, get the first or last x elements of a list, and B, get the elements in a range from x to y in the list.on growevent. Fixes an issue where listening toon grow of sugarcaneor any other full-block plant, like cacti or pumpkins, would never fire. Adds more functionality to specify what exactly to listen for.case-insensitive variablesconfig option visible by default in the config file.block changeevent and adds block and blockdata event values.decreaseas an alias forreduce, e.g.decrease {_var} by 2.and withbeforefade outin thetitleeffect.continueto continue outer loops.target entityexpression to use raytracing for a player's target. This should make it much more accurate, but may change behavior slightly. Also adds an option to change the ray size and to ignore blocks.use player uuids in variable namesconfig option enabled.API Changes
Timespan#getTicksandTimespan#fromTicksfrom returning ints to returning longs. DeprecatedTimespan#getTicks_iandTimespan#fromTicks_idue to API name change.Direction#getDirectionwhich returns a vector.%objects%to avoid UnparsedLiterals.ExpressionType#NORMALwas removed.ExpressionType#EVENTwas added for EventValueExpressions. A new default register method was added to EventValueExpression.WILLto PropertyCondition to allow for easy registration for conditions likeplayer will consume the firework charge.SyntaxElementInfo#ctoSyntaxElementInfo#elementClass. This field will be made private in 2.9. Please use theSyntaxElementInfo#getElementClass()getter instead.Inventory SlottoSlot.MarkedForRemovalannotations withApiStatus.ScheduledForRemoval.cleanup()method in JUnit tests.Click here to view the full list of commits made since 2.7.3
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases. We're currently testing a new version of skript-reflect and we would love some more testers!
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.7.3: Patch 2.7.3Compare Source
Skript 2.7.3
Skript 2.7.3 is here to end off the year with a few bug fixes. This will be the final release for Skript 2.7 versions. As per the new release model, Skript 2.8 will release after the new year on January 15th.
We are immensely appreciative of all of the support we have received this year.
Happy Holidays and Happy Skripting!
Changelog
Bug Fixes
API Changes
SkriptEvent#canExecuteAsynchronously). TheSkriptEvent#checkmethod 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.Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases. We're currently testing a new version of skript-reflect and we would love some more testers!
Compatibility Warning
Due to the major internal changes within the 2.7 update, some addons may no longer work properly.
Please be patient as addon developers work to update their addons.
We have published a new release of our Addon Patcher, but be aware that it cannot fix all issues.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.7.2: Patch 2.7.2Compare Source
Skript 2.7.2
As per the new release model, the first of the month brings with it a new Skript release! This release includes several bug fixes for issues that have been reported.
Thank you all for your continued support.
Happy Skripting!
Changelog
Bug Fixes
Click here to view the full list of commits made since 2.7.1
Notices
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Compatibility Warning
Due to the major internal changes within the 2.7 update, some addons may no longer work properly.
Please be patient as addon developers work to update their addons.
We have published a new release of our Addon Patcher, but be aware that it cannot fix all issues.
Thank You
Special thanks to the contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.7.1: Patch 2.7.1Compare Source
Skript 2.7.1
In this release, we have patched many of the current known issues of Skript 2.7.0. We have also added support for Minecraft 1.20.2 and most its aliases.
Thank you all again for your continued support.
Happy Skripting!
Changelog
Bug Fixes
keep inventoryin a death event and related issuesClick here to view the full list of commits made since 2.7.0
Notices
New Release Model
We have switched to a new release model starting with this version.
New syntax, features, and quality-of-life changes will be saved for large
2.Xversions, released twice per year.Bug fixes will be released monthly in smaller
2.7.Xversions.The full details of this model are available here.
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
Compatibility Warning
Due to the major internal changes within the 2.7 update, some addons may no longer work properly.
Please be patient as addon developers work to update their addons.
We have published a new release of our Addon Patcher, but be aware that it cannot fix all issues.
Thank You
We have continued to see an increase in new contributors recently, and we would like to thank all who have contributed to this version of Skript. ⭐ 🙂
Special thanks to the team members and contributors whose work was included in this version:
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.7.0Compare Source
🚀 Skript 2.7.0
📢 We are proud to finally say that 2.7.0 is here!
Our last stable release was 2.6.4 nearly a year ago, and a lot has happened since then. In this release, we have implemented over 80 new features along with nearly 70 bug fixes. Beyond that, a significant portion of this time has been spent on overhauling Skript's codebase. This update includes some of the biggest internal enhancements in years. Almost every part of Skript should run faster, and as we continue to build upon these improvements, the benefits will only grow.
We realize that this update has taken much longer than expected. Our development cycle has been rather flawed, and we are committed to making changes that will result in a clearer release schedule. We will have more to share about that soon when we finalize a new process.
🎉 We are also very excited to welcome a new member, @sovdeeth to our team.
Thank you all again for your continued support. Happy Skripting! ⚡
📢 End of 1.12.2 Support
As mentioned in the previous releases, we have decided to drop support for 1.12 and lower (legacy versions).
This means that this version will only work on versions 1.13 and higher.
Only critical fixes will be backported to 2.6.X.
⚠ Compatibility Warning
Due to the major internal changes within this update, some addons may no longer work properly.
Please be patient as addon developers work to update their addons.
We have published a new release of our AddonPatcher, but be aware that it cannot fix all issues.
⚠ Breaking Changes
⭐️ 2.7.0 Changelog
Click here to view the full list of commits made since 2.6.4
Click below to view the entire changelog for this release (all changes since 2.6.4).
Full changelog
Notable Additions
📃 All new syntax can be viewed on docs.skriptlang.org.
Language support for French, Polish, Simplified Chinese, and Japanese has been added.
We have significantly overhauled the default examples. The goal of these new examples is to display most of Skript's feature set with a better range of difficulties.
Multiline conditionals has been added. These work on an if-then based structure.
Multiline Conditional Example
Local Function Example
Nested Options Example
Additions
the last struck lightning(this only applies to lighting strikes created by Skript) (closes #3872)the last launched firework(this only applies to fireworks launched by Skript) (closes #4942)type ofexpressiona/anin inventory typesname ofsyntax (thanks @DelayedGaming)value withinsyntax for modifying the values of a variable rather than the variable itselfTweaks and Removals
/skriptcommand (specifically for enabling/reloading/disabling scripts) (closes #4666)subtextexpression tosubstring(thanks @Kanvi1) (closes #5196)Bug Fixes
on skript start(closes #5882)on stop) (closes #4916)target falling blockdid not work (closes #5223)all blockssyntax (closes #5565)target ofexpression throwing an exception in some cases when deleting an entity (closes #5761)all blocksexpression throwing an exception when used with directions only (closes #5787)stop all soundseffect (closes #5756)API Changes
:[abc|def]is now equivalent to[:abc|:def](this was already the case for:(abc|def)and(:abc|:def))finalmodifier on PropertyExpression has been removed, allowing them to return multiple items per element if overriden (see #5455) (closes #5521)Credit to the team on this release: @APickledWalrus @TheLimeGlass @TPGamesNL @AyhamAl-Ali @sovdeeth @Pikachu920 @UnderscoreTud @Moderocky
📝 Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
⭐️ Thank You
We saw a large increase in new contributors recently, and we just wanted to thank all who have contributed to this version of Skript. Lots of issues and suggestions arise and we could not have made it here without the help of the community.
As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
v2.6.4: Bug fixes for legacy versionsCompare Source
Hello Skripters 👋
Today we're releasing version 2.6.4 which brings out a couple fixes towards Minecraft versions below 1.14
📢 End of 1.12.2 Support
As mentioned in the previous releases, we have decided to drop support for 1.12 and lower (legacy versions) in Skript 2.7.
This means that Skript 2.6.X is the last version that will work with the legacy versions.
Only critical fixes will be backported to 2.6.X.
⭐️ 2.6.4 Changelog
Click below to view the entire changelog for this release.
Full changelog
Bug Fixes
potioneffectsandpotioneffecttypes(#5117) (thanks @Fusezion)[on] silverfish enterand[on] silverfish exitevents not actually working.of %itemtype%syntax in preparing craft event (https://github.com/SkriptLang/Skript/issues/4959)Click here to view the full list of commits made since 2.6.3
Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
⭐️ Thank you
We saw a large increase in new contributors recently, and we just wanted to thank all those who have contributed to this version of Skript, lots of issues and suggestions arise and we couldn't have done it all without the help of the community.
As always, if you encounter any issues or suggestions please report them at https://github.com/SkriptLang/Skript/issues
If you have any ideas or input for the future development of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions
v2.6.3: 🚀 The 1.19 UpdateCompare Source
Hello Skripters 👋
Today we're releasing version 2.6.3 which brings out Minecraft 1.19 Support and some critical fixes towards UnparsedLiterals aka your itemtype being parsed as something totally different!
📢 End of 1.12.2 Support
As mentioned in the previous releases, we have decided to drop support for 1.12 and lower (legacy versions) in Skript 2.7.
This means that Skript 2.6.X is the last version that will work with the legacy versions.
Only critical fixes will be backported to 2.6.X.
⭐️ 2.6.3 Changelog
Click below to view the entire changelog for this release.
Full changelog
Additions / Improvements
event-inventory&event-itemtype(#4409)/sk info(they are soon to come) (#4838)Fixes
on preparing craft:event not firing at the right time (#4409)/sk info(#4838)hanging entityexpression in non-hanging-events (e.g. breaking a stone) (#4874)Click here to view the full list of commits made since 2.6.2
⭐️ Thank you
We saw a large increase in new contributors recently, and we just wanted to thank all those who have contributed to this version of Skript, lots of issues and suggestions arise and we couldn't have done it all without the help of the community.
As always, if you encounter any issues or suggestions please report them at https://github.com/SkriptLang/Skript/issues
If you have any ideas or input for the future development of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions
v2.6.2: Cleaning Up 2.6Compare Source
It's been some time since our last release, but we're finally ready and able to release Skript 2.6.2 today. This version mainly contains bug fixes and improvements, but there are also a few minor additions. For full details, you can check out the update's full changelog below.
I'd also like to welcome our newest team member, @AyhamAl-Ali! They have become a crucial part of this project with their awesome feature and bug patches, but more importantly, their terrific web experience and contributions. The docs have never looked better! I'm truly looking forward to everything they'll continue to offer this project. Thank you again for your contributions!
End of 1.12.2 Support
As mentioned in the previous releases, we have decided to drop support for 1.12 and lower (legacy versions).
This is likely to be the last 2.6.x release, making this the last version to support 1.12 and lower. If necessary, we will backport critical fixes.
⭐️ Changes
Click here to view the full list of commits made since 2.6.1
Click here to view the full list of fixes, improvements, and additions
Fixes
orin lists (https://github.com/SkriptLang/Skript/pull/4545, closes https://github.com/SkriptLang/Skript/issues/4543)clicked enchantment buttonexpression and improved its documentation (https://github.com/SkriptLang/Skript/pull/4688, closes https://github.com/SkriptLang/Skript/issues/4686)Additions / Improvements
allto the indices expression (https://github.com/SkriptLang/Skript/pull/4551, closes https://github.com/SkriptLang/Skript/issues/4547)[the]prefixes (https://github.com/SkriptLang/Skript/pull/4604)othersidemusic disc introduced in 1.18 (https://github.com/SkriptLang/Skript/pull/4742) (click here to see the full changes)⭐️ Thanks for Reading
As always, if you encounter any issues please report them at https://github.com/SkriptLang/Skript/issues.
If you have any ideas or input for the future development of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.
Update dependency com.github.SkriptLang:Skript to v2.13.1to Update dependency com.github.SkriptLang:Skript to v2.13.2ea67e49032e28d8eb5e3e28d8eb5e324d6cf39ceUpdate dependency com.github.SkriptLang:Skript to v2.13.2to Update dependency com.github.SkriptLang:Skript to v2.14.0-pre124d6cf39ce787e46006a787e46006a65c4b53aa3Update dependency com.github.SkriptLang:Skript to v2.14.0-pre1to Update dependency com.github.SkriptLang:Skript to v2.14.0-pre265c4b53aa3to57a4df1d0dUpdate dependency com.github.SkriptLang:Skript to v2.14.0-pre2to Update dependency com.github.SkriptLang:Skript to v2.14.057a4df1d0dto2138ac68b1Update dependency com.github.SkriptLang:Skript to v2.14.0to Update dependency com.github.SkriptLang:Skript to v2.14.12138ac68b1to83373b3d09Update dependency com.github.SkriptLang:Skript to v2.14.1to Update dependency com.github.SkriptLang:Skript to v2.14.2Update dependency com.github.SkriptLang:Skript to v2.14.2to Update dependency com.github.SkriptLang:Skript to v2.14.383373b3d09to860c880888Update dependency com.github.SkriptLang:Skript to v2.14.3to Update dependency com.github.SkriptLang:Skript to v2.15.0-pre1860c880888to0eecc0ae6bUpdate dependency com.github.SkriptLang:Skript to v2.15.0-pre1to Update dependency com.github.SkriptLang:Skript to v2.15.0-pre20eecc0ae6btob5359ba621b5359ba621to221133c3cfUpdate dependency com.github.SkriptLang:Skript to v2.15.0-pre2to Update dependency com.github.SkriptLang:Skript to v2.15.0Update dependency com.github.SkriptLang:Skript to v2.15.0to Update dependency com.github.SkriptLang:Skript to v2.15.2221133c3cfto4f43cd250aUpdate dependency com.github.SkriptLang:Skript to v2.15.2to Update dependency com.github.SkriptLang:Skript to v2.16.0-feature-docs-overhaul4f43cd250ato82a770289682a7702896tob0d11d914bUpdate dependency com.github.SkriptLang:Skript to v2.16.0-feature-docs-overhaulto Update dependency com.github.SkriptLang:Skript to v2.15.3b0d11d914bto5e3c6fe41eUpdate dependency com.github.SkriptLang:Skript to v2.15.3to Update dependency com.github.SkriptLang:Skript to v2.16.0-feature-docs-overhaul5e3c6fe41eto89908a7a40Update dependency com.github.SkriptLang:Skript to v2.16.0-feature-docs-overhaulto Update dependency com.github.SkriptLang:Skript to v2.15.4Update dependency com.github.SkriptLang:Skript to v2.15.4to Update dependency com.github.SkriptLang:Skript to v2.16.0-pre189908a7a40toad0c96221cad0c96221cto1c1895c950Update dependency com.github.SkriptLang:Skript to v2.16.0-pre1to Update dependency com.github.SkriptLang:Skript to v2.17.0-feature-docs-overhaulView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.