Releases: SkriptLang/Skript
Feature Release 2.11.0
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!
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
- Adds the ability to clarify the type of a literal, allowing e.g.
black (wolf color)
orblack (color)
. - A large number of additional syntaxes for various entities, like wardens, allays, and endermen.
- Allows the use of minecraft ids to refer to items: minecraft:oak_log.
- Adds a spanish language option.
- Fixes bug where stored items in variables could change types between Minecraft versions.
Caution
Updating your Minecraft version before switching to 2.11 can cause some item variables to change materials!
To avoid issues, please ensure you start your server normally with 2.11 active, shut it down normally, and only then proceed to updating your Minecraft version.
If you are still on 2.10, have updated your Minecraft version, and are experiencing item variable issues, you may find success by downgrading Minecraft to before the issues began and updating to 2.11 on that version (Or by copying your variables.csv file to a server running on an older version). Be warned that downgrading generally is not supported by Paper or Spigot, and you may encounter other unrelated issues attempting this.
Be warned that downgrading from 2.11 may cause Skript to be unable to load some item variables. Keep this in mind when testing 2.11.
⚠ Breaking Changes
- The
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%
. - The
potion type
type has been renamed topotion effect type
. Usages of the previous name will need to be updated in scripts. - The
chiseled bookshelf
anddecorated pot
inventory types have been renamed to[chiseled] bookshelf inventory
anddecorated pot inventory
respectively. Usages of the previous names will need to be updated in scripts. event-item
in the 'armor change event' has been removed in favor of 'old armor item' and 'new armor item'- UUIDs are no longer represented by strings in Skript and are instead proper UUID objects. This should cause no changes for normal Skript users, but may cause issues if you are relying on them being strings in contexts like using Skript-Reflect methods.
Changelog
Additions
- #7006 Adds full support for modifying players' world borders.
- #7270 Adds additional syntax for interacting with dropped items.
- #7314 Adds Warden related syntaxes:
- Make a Warden investigate an area.
- Get the entity a Warden is most angry at.
- Get the anger level of a Warden.
- #7316 Adds support for dealing with the entities in 'entity storage' blocks like beehives, as well as other beehive related syntax.
- #7332 Adds an event that is triggered at certain real-life times of day.
- #7351 Adds an effect to zombify/dezombify villagers.
- #7358 Adds Allay related syntaxes:
- Get or change whether allays can duplicate and their duplication cooldown.
- Get the target jukebox of an Allay.
- Force an Allay to duplicate or dance.
- #7361 Adds an effect and condition for whether axolotls are playing dead.
- #7362 Updates sleeping related syntaxes to support bats, foxes and villagers.
- #7365 Adds effect to make a player sprint, adds a condition to check if a camel is using its dash ability.
- #7386 Adds ability to check if an entity is riding a specific other entity. Prevents error when trying to make an entity ride itself.
- #7415 Adds ability to get and change the simulation and view distances on Paper servers.
- #7453 Adds support for specifying slots in the armor change event like
on helmet change
. - #7479 Adds syntax related to goats.
- #7480 Adds Enderman related syntaxes:
- Check or change the block an Enderman is carrying.
- Make Enderman randomly teleport or towards an entity.
- Check if an Enderman is being stared at.
- #7532 Adds a config option for the number of variable changes required to trigger a save.
- #7550 Adds various math functions:
- mean(numbers)
- median(numbers)
- factorial(number)
- root(number, number)
- permutation(number, number)
- combination(number, number)
- #7554 Moves the "invulnerability time" expression to support timespans and deprecates the tick-based version.
- #7564 Allows modifying the persistence of entities and blocks, and allows modifying whether entities should despawn when the player is far away.
- #7586 Adds spanish language option.
- #7597 Adds checking for whether a ghast is charging its fireball and adds getting and changing the explosive power of a ghast's fireball.
- #7683 Added support for fishing states and generic fishing state change event.
- #7701 Adds an expression to treat a list as if it is of the form
a, b, or c
rather thana, b, and c
:if {_X} is any of {_possibilities::*}
. - #7702 Adds an expression to change phantom and slime entity sizes.
- #7709 Adds
past event-item
,future event-item
, andevent-slot
to the armor change event. - #7714 Adds the entity shoot bow event, as well as some expressions for it.
- #7722 Adds the ability to clarify the type of a literal, allowing e.g.
black (wolf color)
orblack (color)
. - #7747 Adds support for interacting with pandas.
- #7750 Adds support for obtaining items with/without their tooltip.
Changes
- #7276 Changes the pattern of
last colour of %string%
, adds support for returning colour objects, the first colour, and all colours. - #7287 Improves the check for what types Skript attempts to compare by comparing super classinfos.
- #7317 Adds examples to the location type.
- #7440 Enforces the use of
effect
when using the typepotion effect type
. - #7442 Merges ExprWeather and ExprPlayerWeather to resolve syntax conflicts.
- #7492 Allows the use of minecraft ids to refer to items:
minecraft:oak_log
. - #7547 Allows checking whether something is within multiple objects, e.g.
if player is in world "world" or world "world_nether"
. - #7549 Allows using
skript tag
as an alternative forcustom tag
. - #7552 Allows using multiple numbers in the rounding expression.
- #7602 Adds support for using experience as a regular number, allowing for arithmetic like
5 xp + 10
. - #7622 Adds syntax that allows the user to improve the clarity of
using experiment
. - #7694 Allows
itemstack
as another way to reference theitem
type. - #7704 Adds support for
with all item flags
. - #7708 Adds support for using
armour
instead ofarmor
. - #7716 Improves the errors for when a single value is passed, where multiple are expected.
- #7762 Improves the registration and internal organization of the 'bell events'.
Bug Fixes
- [aliases#126](https://github.co...
Pre-Release 2.11.0-pre2
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
- Adds the ability to clarify the type of a literal, allowing e.g.
black (wolf color)
orblack (color)
. - A large number of additional syntaxes for various entities, like wardens, allays, and endermen.
- Allows the use of minecraft ids to refer to items: minecraft:oak_log.
- Adds a spanish language option.
- Fixes bug where stored items in variables could change types between Minecraft versions.
Caution
Updating your Minecraft version before switching to 2.11 can cause some item variables to change materials!
To avoid issues, please ensure you start your server normally with 2.11 active, shut it down normally, and only then proceed to updating your Minecraft version.
If you are still on 2.10, have updated your Minecraft version, and are experiencing item variable issues, you may find success by downgrading Minecraft to before the issues began and updating to 2.11 on that version (Or by copying your variables.csv file to a server running on an older version). Be warned that downgrading generally is not supported by Paper or Spigot, and you may encounter other unrelated issues attempting this.
Be warned that downgrading from 2.11 may cause Skript to be unable to load some item variables. Keep this in mind when testing 2.11.
⚠ Breaking Changes
- The
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%
. - The
potion type
type has been renamed topotion effect type
. Usages of the previous name will need to be updated in scripts. - The
chiseled bookshelf
anddecorated pot
inventory types have been renamed to[chiseled] bookshelf inventory
anddecorated pot inventory
respectively. Usages of the previous names will need to be updated in scripts. event-item
in the 'armor change event' has been removed in favor of 'old armor item' and 'new armor item'- UUIDs are no longer represented by strings in Skript and are instead proper UUID objects. This should cause no changes for normal Skript users, but may cause issues if you are relying on them being strings in contexts like using Skript-Reflect methods.
Changelog
Pre-Release 2 Changes
- aliases#126 Fixes confusion between
resin brick
andresin bricks
. - #7483 Fix conflicts with
any
in the player input event. - #7656 Fix event values not being null in docs created by the JSON generator.
- #7697 Improve error messages for event restricted syntaxes.
- #7736 Maintains the inventory of items when setting blocks.
- #7754 Fix name and example of ExprDisplayTeleportDuration on the docs.
- #7769 Fix issues with looping blocks in a straight line when starting near the edge of a block.
- #7773 Fixes unintended claiming errors when using section expressions without sections.
- #7774 Fixes crashes on Spigot due to the armor change event attempting to load a Paper class.
- #7776 Adds lang entries for bundle inventory actions and for the bucket spawn reason.
- #7790 Fixes bug where stored items in variables could change types between Minecraft versions.
Additions
- #7006 Adds full support for modifying players' world borders.
- #7270 Adds additional syntax for interacting with dropped items.
- #7314 Adds Warden related syntaxes:
- Make a Warden investigate an area.
- Get the entity a Warden is most angry at.
- Get the anger level of a Warden.
- #7316 Adds support for dealing with the entities in 'entity storage' blocks like beehives, as well as other beehive related syntax.
- #7332 Adds an event that is triggered at certain real-life times of day.
- #7351 Adds an effect to zombify/dezombify villagers.
- #7358 Adds Allay related syntaxes:
- Get or change whether allays can duplicate and their duplication cooldown.
- Get the target jukebox of an Allay.
- Force an Allay to duplicate or dance.
- #7361 Adds an effect and condition for whether axolotls are playing dead.
- #7362 Updates sleeping related syntaxes to support bats, foxes and villagers.
- #7365 Adds effect to make a player sprint, adds a condition to check if a camel is using its dash ability.
- #7386 Adds ability to check if an entity is riding a specific other entity. Prevents error when trying to make an entity ride itself.
- #7415 Adds ability to get and change the simulation and view distances on Paper servers.
- #7453 Adds support for specifying slots in the armor change event like
on helmet change
. - #7479 Adds syntax related to goats.
- #7480 Adds Enderman related syntaxes:
- Check or change the block an Enderman is carrying.
- Make Enderman randomly teleport or towards an entity.
- Check if an Enderman is being stared at.
- #7532 Adds a config option for the number of variable changes required to trigger a save.
- #7550 Adds various math functions:
- mean(numbers)
- median(numbers)
- factorial(number)
- root(number, number)
- permutation(number, number)
- combination(number, number)
- #7554 Moves the "invulnerability time" expression to support timespans and deprecates the tick-based version.
- #7564 Allows modifying the persistence of entities and blocks, and allows modifying whether entities should despawn when the player is far away.
- #7586 Adds spanish language option.
- #7597 Adds checking for whether a ghast is charging its fireball and adds getting and changing the explosive power of a ghast's fireball.
- #7683 Added support for fishing states and generic fishing state change event.
- #7701 Adds an expression to treat a list as if it is of the form
a, b, or c
rather thana, b, and c
:if {_X} is any of {_possibilities::*}
. - #7702 Adds an expression to change phantom and slime entity sizes.
- #7709 Adds
past event-item
,future event-item
, andevent-slot
to the armor change event. - #7714 Adds the entity shoot bow event, as well as some expressions for it.
- #7722 Adds the ability to clarify the type of a literal, allowing e.g.
black (wolf color)
orblack (color)
. - #7747 Adds support for interacting with pandas.
- #7750 Adds support for obtaining items with/without their tooltip.
Changes
- #7276 Changes the pattern of
last colour of %string%
, adds support for returning colour objects, the first colour, and all colours. - #7287 Improves the check for what types Skript attempts to compare by comparing super classinfos.
- #7317 Adds examples to the location type.
- #7440 Enforces the use of
effect
when using the typepotion effect type
. - #7442 Merges ExprWeather and ExprPlayerWeather to resolve syntax conflicts.
- #7492 Allows the use of minecraft ids to refer to items:
minecraft:oak_log
. - #7547 Al...
Pre-Release 2.11.0-pre1
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
- The
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%
. - The
potion type
type has been renamed topotion effect type
. Usages of the previous name will need to be updated in scripts. - The
chiseled bookshelf
anddecorated pot
inventory types have been renamed to[chiseled] bookshelf inventory
anddecorated pot inventory
respectively. Usages of the previous names will need to be updated in scripts. event-item
in the 'armor change event' has been removed in favor of 'old armor item' and 'new armor item'
Changelog
Additions
- #7006 Adds full support for modifying players' world borders.
- #7270 Adds additional syntax for interacting with dropped items.
- #7314 Adds Warden related syntaxes:
- Make a Warden investigate an area.
- Get the entity a Warden is most angry at.
- Get the anger level of a Warden.
- #7316 Adds support for dealing with the entities in 'entity storage' blocks like beehives, as well as other beehive related syntax.
- #7332 Adds an event that is triggered at certain real-life times of day.
- #7351 Adds an effect to zombify/dezombify villagers.
- #7358 Adds Allay related syntaxes:
- Get or change whether allays can duplicate and their duplication cooldown.
- Get the target jukebox of an Allay.
- Force an Allay to duplicate or dance.
- #7361 Adds an effect and condition for whether axolotls are playing dead.
- #7362 Updates sleeping related syntaxes to support bats, foxes and villagers.
- #7365 Adds effect to make a player sprint, adds a condition to check if a camel is using its dash ability.
- #7386 Adds ability to check if an entity is riding a specific other entity. Prevents error when trying to make an entity ride itself.
- #7415 Adds ability to get and change the simulation and view distances on Paper servers.
- #7453 Adds support for specifying slots in the armor change event like
on helmet change
. - #7479 Adds syntax related to goats.
- #7480 Adds Enderman related syntaxes:
- Check or change the block an Enderman is carrying.
- Make Enderman randomly teleport or towards an entity.
- Check if an Enderman is being stared at.
- #7532 Adds a config option for the number of variable changes required to trigger a save.
- #7550 Adds various math functions:
- mean(numbers)
- median(numbers)
- factorial(number)
- root(number, number)
- permutation(number, number)
- combination(number, number)
- #7554 Moves the "invulnerability time" expression to support timespans and deprecates the tick-based version.
- #7564 Allows modifying the persistence of entities and blocks, and allows modifying whether entities should despawn when the player is far away.
- #7586 Adds spanish language option.
- #7597 Adds checking for whether a ghast is charging its fireball and adds getting and changing the explosive power of a ghast's fireball.
- #7683 Added support for fishing states and generic fishing state change event.
- #7701 Adds an expression to treat a list as if it is of the form
a, b, or c
rather thana, b, and c
:if {_X} is any of {_possibilities::*}
. - #7702 Adds an expression to change phantom and slime entity sizes.
- #7709 Adds
past event-item
,future event-item
, andevent-slot
to the armor change event. - #7714 Adds the entity shoot bow event, as well as some expressions for it.
- #7722 Adds the ability to clarify the type of a literal, allowing e.g.
black (wolf color)
orblack (color)
. - #7747 Adds support for interacting with pandas.
- #7750 Adds support for obtaining items with/without their tooltip.
Changes
- #7276 Changes the pattern of
last colour of %string%
, adds support for returning colour objects, the first colour, and all colours. - #7287 Improves the check for what types Skript attempts to compare by comparing super classinfos.
- #7317 Adds examples to the location type.
- #7440 Enforces the use of
effect
when using the typepotion effect type
. - #7442 Merges ExprWeather and ExprPlayerWeather to resolve syntax conflicts.
- #7492 Allows the use of minecraft ids to refer to items:
minecraft:oak_log
. - #7547 Allows checking whether something is within multiple objects, e.g.
if player is in world "world" or world "world_nether"
. - #7549 Allows using
skript tag
as an alternative forcustom tag
. - #7552 Allows using multiple numbers in the rounding expression.
- #7602 Adds support for using experience as a regular number, allowing for arithmetic like
5 xp + 10
. - #7622 Adds syntax that allows the user to improve the clarity of
using experiment
. - #7694 Allows
itemstack
as another way to reference theitem
type. - #7704 Adds support for
with all item flags
. - #7708 Adds support for using
armour
instead ofarmor
. - #7716 Improves the errors for when a single value is passed, where multiple are expected.
- #7762 Improves the registration and internal organization of the 'bell events'.
Bug Fixes
- #7431 Fixes the order of in which sections are printed in debug mode.
- #7566 Improved condition classes and added missing method overrides.
- #7599 Changes how event-values are determined to avoid possible conflicts when 2 or more values could apply.
- #7665 Ensures EffSort's input expression always returns a single value.
- #7669 Fixes issue when using player in entity move event.
- #7679 Fixes some incorrectly configured documentation annotations for events.
- #7696 Fixes decorated pot and bookshelf item comparisons.
- #7688 Fixes an issue where damage component were added to undamaged items.
- #7713 Fixes an issue with comparing inventory slots.
- #7717 Fixes an issue when using integers in the radians expression.
- #7744 Fixes an issue where spawning a tropical fish of a specific type would spawn the incorrect type.
Removals
- #7638 Removes undocumented expression
[is] event cancelled
as it has been superseded by CondCancelled for years.
API Changes
- #7478 Deprecates Skript's EquipSlot in favour of Bukkit's EquipmentSlot.
- [#7512](https://github.com/SkriptLang/S...
Patch Release 2.10.2
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
- #7499 Fixes empty event requirement sections in the docs.
- #7513 Fixes issue with getting blocks between two locations.
- #7584 Updates the compass target expression's description to include 1.21.4 behavior changes.
- #7591 Adds a vehicle class-info to allow
event-vehicle
to work properly. - #7603 Fixes a bad example in the text display alignment examples.
- #7632 Fixes an internal test for dates that was intermittently failing.
- #7641 Fixes issues with using various projectile entity datas, like fireballs and wind charges
- #7646 Fixes decimal multiplication/division with timespans resulting in truncated values.
- aliases#123 Fixes brick/bricks confusion with item names.
- aliases#125 Fixes issue when checking whether an entity is a wind charge.
API Changes
- #7470 Adds an Example annotation that can be applied multiple times, intended to eventually replace Examples. See PR for details.
- #7558 Allows the test platform to run on a Spigot server. This is not supported and may cause test failures among the existing tests if used.
- #7633 Improves the consistency and information provided by Skript's generated JSON documentation.
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.
Patch Release 2.10.1
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:
- When using "send" in the 'connect' effect, "server" is now a required keyword.
- Removed the pattern "[a] %*color% %bannerpatterntype%"
Changelog
Bug Fixes
- #7450 Fixes an issue where tag lookups for the 'tag' expression would not check all possible tag sources.
- #7455 Fixes an issue with the experimental queue serialization.
- #7474 Fixes an issue where using 'or' in the 'is tagged' condition would not check against all tags.
- #7503 Fixes an issue where getting or changing the name of a block did not work.
- #7519 Fixes a syntax conflict between the 'send' effect and the 'connect' effect.
- #7521 Fixes multiple issues with 'fishing' documentation.
- #7525 Fixes an issue where the 'wearing' condition could check invalid slots, resulting in an exception.
- #7527 Fixes an issue where checking whether something is tagged as a different type (e.g. check if an entity is tagged as a type of item) would result in an exception.
- #7528 Fixes an issue where loot tables could not be serialized.
- #7537 Fixes an issue where the 'for each' loop did not fully iterate over the elements.
- #7540 Fixes an issue where some language entries could mistakenly be associated with non-Minecraft additions (e.g. custom biomes).
- #7546 Removes the pattern "[a] %*color% %bannerpatterntype%" which caused significant parsing slowdowns in some Skript environments.
- #7557 Fixes an issue where the tests could fail if a locale other than English was used.
- #7559 Fixes an issue where some syntaxes contained "the" multiple times at the beginning.
- #7570 Fixes an issue where date variables from older versions would fail to load on 2.10.0.
API Changes
- #7526 Added support for regex-based highlighting for runtime errors.
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:
- @APickledWalrus
- @Burbulinis
- @erenkarakal
- @Fusezion
- @Moderocky
- @Phill310
- @ShaneBeee
- @sovdeeth
- @TheAbsolutionism
- @UnderscoreTud
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.
Feature Release 2.10.0
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
Important
Support for Minecraft versions below 1.19.4 has been dropped.
This means that 1.19.4, 1.20.6, and 1.21.3/1.21.4 are the only supported versions. Going forward, Skript will only support the three latest major Minecraft versions.
In addition, Skript now requires Java 17 to run. While most users are running Java 17 or newer, some may be required to update for this version.
Warning
Some addons may fail to load with 2.10.
Due to the removal of long-deprecated API, outdated addons may fail to load while others will print a warning on start up. In some cases, an addon may only need to be recompiled to work with 2.10.
Caution
Aliases are going away! Your scripts may break if you do not take action.
This means a lot of item names will be changing to match their in-game ids. In addition, categories and blockdata aliases will also be going away, replaced by tags and blockdata respectively.
rabbit's foot -> rabbit foot
gold helmet -> golden helmet
any sword -> tag "swords"
waterlogged oak stairs -> oak_stairs[waterlogged=true]
If you do not want to make changes to your scripts, the old aliases will be provided with each Skript release, so you can continue to use them if you prefer.
See this discussion for more details.
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!
set {_tag} to tag "swords"
give the player a random item out of {_tag}'s tag values
if the player's tool is tagged as item tag "minecraft:piglin_food":
send "Yum!"
register an item tag named "my_favorite_blocks" using oak log, stone, and podzol
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.
spawn an oak log block display at player:
set the display scale of the display to vector(1, 10, 1)
set the display translation of the display to vector(0.5, 0.5, 0.5)
rotate display around its local y axis by 45 degrees
set the view range of display to 2
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)
Caution
This is a preview feature, meaning it is subject to breaking changes without a deprecation period.
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 new SyntaxRegistry
, 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.
for {_index}, {_value} in {my list::*}:
broadcast "%{_index}%: %{_value}%"
for each {_player} in all players:
send "Hello %{_player}%!" to {_player}
All existing loop features are also available in this section.
Enabling Flag
using for loops
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.
set {queue} to a new queue of "hello" and "world"
broadcast the first element of {queue}
# "hello" is now removed
broadcast the first element of {queue}
# "world" is now removed
# queue is empty
set {queue} to a new queue of all players
set {player 1} to a random element out of {queue}
set {player 2} to a random element out of {queue}
# players 1 and 2 are guaranteed to be distinct
Queues can be looped over like a regular list.
Enabling Flag
using queues
Script Reflection
This feature includes:
- The ability to reference a script in code.
- Finding and running functions by name.
- Reading configuration files and values.
Enabling Flag
using script reflection
⚠ Breaking Changes
- Out-of-range dates will now return '0 seconds' instead of 'none' in the 'time since' expression:
if time since {_date} is less than 3 seconds:
# Previously, if {_date} was in the future, this would be false.
# Now, this is true, since `time since {_date}` evaluates to 0 seconds.
# These situations will not change:
# {_date} more than 3 seconds ago -> false
# {_date} between 0 and 3 seconds ago -> true
- The existing 'fish' event has been replaced by more specific and useful events.
- The 'kill' effect now bypasses totems of undying.
- For the 'script' effect, support for using 'skript %string%' was removed. Simply use 'script %string%' or 'skript file %string%'.
- The 'future event-block' in the 'block break' event was removed. It did not work in many cases due to API limitations.
- In the VariablesStorage class, the field 'databaseName' is no longer 'protected', and the constructor parameter now represents the database type rather than name. See #7074 for full details.
- In the Skript class, the syntax element info getters (e.g. 'getStatements') now return unmodifiable collections.
- Numerous API classes were deprecated, and many long deprecated API classes were removed. As a result, addons will need to be recompiled against 2.10 to work. See the pull request for full details.
Changelog
Changes Since 2.10.0-pre1
- #7333 Fixed multiple issues with and expanded the experimental Registration API.
- #7340 Added support for using enchantment types with the 'type of' expression.
- #7356 Improved compatibility with legacy/abandoned addons.
- #7357 Fixed an issue where the documentation for the 'fishing' events was missing.
- #7359 Expanded the 'value' expression to be used by addons.
- #7363 Improved the safety of internal changing methods.
- #7364 Improved the internal handling of potion effect types.
- #7368 Fixed an issue where documentation collision checking always reported at least one collision.
- #7370 Improved the documentation for the 'name' ex...
Pre-Release 2.10.0-pre1
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
Important
Skript has dropped support for Minecraft versions below 1.19.4. This means 1.19.4, 1.20.6, and 1.21.3/1.21.4 are the supported versions. Going forward, Skript will only support the latest 3 major Minecraft versions.
In addition, Skript now requires Java 17 to run. While most users are running Java 17 or newer, some may be required to update for this version.
Warning
Addons will likely not initially work with 2.10!
Due to the removal of the deprecated Converter class, many addons will need to be recompiled (no code changes) to work with 2.10.
Addon developers should only need to re-build against 2.10 to fix this issue.
Caution
Aliases are going away! Your scripts may break if you do not take action.
This means a lot of item names will be changing to match their in-game ids. In addition, categories and blockdata aliases will also be going away, replaced by tags and blockdata respectively.
rabbit's foot -> rabbit foot
gold helmet -> golden helmet
any sword -> tag "swords"
waterlogged oak stairs -> oak_stairs[waterlogged=true]
If you do not want to make changes to your scripts, the old aliases will be provided along with each Skript release, so you can continue to use them if you'd like.
See here for more details.
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!
set {_tag} to tag "swords"
give the player a random item out of {_tag}'s tag values
if the player's tool is tagged as item tag "minecraft:piglin_food":
send "Yum!"
register an item tag named "my_favorite_blocks" using oak log, stone, and podzol
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.
spawn an oak log block display at player:
set the display scale of the display to vector(1, 10, 1)
set the display translation of the display to vector(0.5, 0.5, 0.5)
rotate display around its local y axis by 45 degrees
set the view range of display to 2
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)
Caution
This is a preview feature, meaning it is subject to breaking changes without a deprecation period.
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 new SyntaxRegistry
, 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.
for {_index}, {_value} in {my list::*}:
broadcast "%{_index}%: %{_value}%"
for each {_player} in all players:
send "Hello %{_player}%!" to {_player}
All existing loop features are also available in this section.
Enabling Flag
using for loops
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.
set {queue} to a new queue of "hello" and "world"
broadcast the first element of {queue}
# "hello" is now removed
broadcast the first element of {queue}
# "world" is now removed
# queue is empty
set {queue} to a new queue of all players
set {player 1} to a random element out of {queue}
set {player 2} to a random element out of {queue}
# players 1 and 2 are guaranteed to be distinct
Queues can be looped over like a regular list.
Enabling Flag
using queues
Script Reflection
This feature includes:
- The ability to reference a script in code.
- Finding and running functions by name.
- Reading configuration files and values.
Enabling Flag
using script reflection
⚠ Breaking Changes
- Out-of-range dates will now return '0 seconds' instead of 'none' in the 'time since' expression:
if time since {_date} is less than 3 seconds:
# Previously, if {_date} was in the future, this would be false.
# Now, this is true, since `time since {_date}` evaluates to 0 seconds.
# These situations will not change:
# {_date} more than 3 seconds ago -> false
# {_date} between 0 and 3 seconds ago -> true
- The existing 'fish' event has been replaced by more specific and useful events.
- The 'kill' effect now bypasses totems of undying.
- For the 'script' effect, support for using 'skript %string%' was removed. Simply use 'script %string%' or 'skript file %string%'.
- The 'future event-block' in the 'block break' event was removed. It did not work in many cases due to API limitations.
- In the VariablesStorage class, the field 'databaseName' is no longer 'protected', and the constructor parameter now represents the database type rather than name. See #7074 for full details.
- In the Skript class, the syntax element info getters (e.g. 'getStatements') now return unmodifiable collections.
- Numerous API classes were deprecated, and many long deprecated API classes were removed. As a result, addons will need to be recompiled against 2.10 to work. See the pull request for full details.
Changelog
Additions
- #5518 Adds support for obtaining multiple random numbers at once with the 'random numbers' expression.
- #5601 Adds syntax for working with display entities. Involves spawning, translating, scaling, rotating, and many other interations with displays.
- #6203 Adds a 'time until' expression along with a condition for whether a date is in the past or future.
- #6419 Adds an expression for changing the custom chat completions of players.
- #6427 Adds support for entity leashing events.
- #6439 Adds a '/skript list' command which displays the current enabled and disabled scripts.
- #6498 Adds support for teleport flags to the 'teleport' effect. Teleport flags allow retaining entity properties such as position and direction during a teleport.
- #6532 Adds the entity potion effect event, which occurs when an entity gains or lose...
Patch Release 2.9.5
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
- #7232 Improved the documentation of the 'projectile hit' event to be up to date with the 'victim' syntax.
Bug Fixes
- #7062 Fixed an error that would occur when attempting to place blocks between two points above the world limit.
- #7120 Fixed an issue where various expressions (enchant effect, replace effect, vector expressions, etc.) would overwrite the indices of list variables used.
- #7152 Fixed an issue where player skull textures would not immediately load on Paper (loading is now forced).
- #7188 Fixed an issue where plural event values did not work with 'past' and 'future' time states.
- #7195 Fixed a few Turkish language mistakes.
- #7199 Fixed multiple issues with playing sounds on 1.21.3+.
- #7202 Fixed an error that could occur when using invalid regular expression patterns in the split expression.
- #7210 Fixed long overflow when performing arithmetic.
- #7230 Fixed an issue that could occur when trying to grow new tree types (e.g. pale oak).
API Additions
- #7120 Added a new 'Expression#changeInPlace()' method for changing the elements of an expression without changing the entire object. For example, this allows the values of a list variable to be updated while preserving the indices.
- #7207 Updated the 'Arithmetics#exactOperationExists' and 'Arithmetics#exactDifferenceExists' methods to be public. They act as a safe way to check arithmetic operation existence during the registration period.
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.
Beta Release 2.10.0-beta1
Skript 2.10.0 Beta 1
Skript 2.10.0 Beta 1 is here, ready for testing! This beta contains many new features, major changes, and bug fixes to improve the Skript experience, but we need to be sure they all work properly!
Below, you can familiarize yourself with the changes. As always, report any issues to our issues page! You can also use the #2-10-0-beta1 channel in the SkriptLang Testing Guild to talk about this beta.
Docs can be found here: https://docs.skriptlang.org/nightly/feature/2.10.0-beta/docs.html
Happy Skripting!
Major Changes
Important
Skript has dropped support for Minecraft versions below 1.19.4. This means 1.19.4, 1.20.6, and 1.21.X are the supported versions. Going forward, Skript will only support the latest 3 major Minecraft versions.
In addition, Skript now requires Java 17 to run. While most users are running Java 17 or newer, some may be required to update for this version.
- Display entities! Try spawning them, rotating them, translating them, and everything else!
- Animal husbandry syntaxes!
- Get various sounds of blocks, entities, and items, like the footsteps sound of a given item!
- Limit the number of variable backups created so you don't flood your hard drive!
- And much more!
⚠ Breaking Changes
- Out-of-range dates will now return
0 seconds
instead ofnone
in thetime since
expression:
if time since {_date} is less than 3 seconds:
# Previously, if {_date} was in the future, this would be false.
# Now, this is true, since `time since {_date}` evaluates to 0 seconds.
# These situations will not change:
# {_date} more than 3 seconds ago -> false
# {_date} between 0 and 3 seconds ago -> true
Changelog
Additions
- #5601 Adds syntax regarding display entities. Involves spawning, translating, scaling, rotating, and many other interations with displays.
- #6419 Adds the ability to set, add, or remove custom chat completions for players.
- #6532 Adds the entity potion effect event, triggered when an entity gains/loses an effect.
- #6768 Adds the piglin barter event (with barter input & output expressions).
- #6780 Adds a config option for all operators to see information when a script is reloaded.
- #6849 Adds a condition to check if an entity is saddled.
- #6850 Adds an effect to tame an entity and a condition to test if an entity is tamed.
- #6851 Adds a config option to limit the amount of variable backup files stored.
- #6859 Adds expression to get the command of a command block, as well as a condition and effect to check and set the conditionality of a command block.
- #6861 Adds an expression to get or modify the taming level of horses.
- #6898 Adds an effect to immediately detonate a creeper, tnt minecart, primed tnt, firework, or windcharge.
- #6912 Adds a section to filter lists, like the filter expression but with the ability to retain indices.
- #6960 Adds a warning for unreachable code (for example, code following a return effect in a function).
- #6970 Allows deleting/resetting the prefix/suffix of players.
- #6997 Add an explicit sort order to the sort effect.
- #7019 Adds an expression to get various sounds of entities, like their death sound, fall damage sound, or sound for eating a certain item.
- #7040 Adds an expression to get various sound of blocks, like their break sound, footstep sound, or place sound.
- #7045 Adds a last death location expression for players.
- #7075 Adds an event for when blocks drop items when broken.
- #7076 Adds an expression for the experience pickup cooldown of players, as well as an event for when it changes.
- #7094 Adds an effect to open/close the lids of certain blocks, as well as a condition to check if a lid is open or not.
- #7104 Adds a condition to check if a number in evenly divisible by another.
- #7015 Adds syntax to get some client chat options on Paper servers, like if a player has chat colouring disabled.
- #7110 Adds syntax related to animal breeding and age.
- #7142 Adds test world, block, and location expressions for use in tests.
- #7166 Adds a function to format a number based on Java's DecimalFormat system.
Bug Fixes
- #6970 Improves the prefix/suffix expression to avoid LuckPerms errors.
- #7023 Improve performance of book authors expression.
- #7046 Fixes the piglin barter effect tests failing on Windows machines.
- #7055 Fixes the inability to spawn chest boats.
Changes
- #5518 Adds support for getting multiple random numbers at once.
- #6203 Adds
time until
to the time since expression. Changes out-of-range dates to return 0 seconds instead of none. - #6741 Adds gamemodes to the invulnerable condition.
- #6849 Adds support for wolf armor in the
is wearing
condition and theequip
effect. - #6860 Supports wither projectiles in the 'charged' syntax.
- #6867 Supports hiding/revealing all entities instead of just players.
- #6900 Adds the ability to get all entities within a cuboid region (within two locations).
- #6930 Adds the option to ignore trailing empty strings when splitting text.
- #6958 Adds a warning when Skript is reloaded via /reload or similar means.
- #6989 Adds a new option to the connect effect for transfering players between any two servers.
- #7001 Allows the use of shortened timespan units in commands:
/my_ban_command sovde 1y 2d 3s
. - #7013 Adds more support for withers and wither skulls in the charge effect and condition.
- #7030 Allows underscores in numbers for readability:
100_000_000
. - #7041 Adds support for wolf variants.
- #7073 Default names are now generated for enum values that are missing lang entries:
Missing lang enum constant for 'teleport causes.END_GATEWAY'. Using end gateway teleport cause for now
. This allows users to use some new Minecraft content without waiting for a Skript update. - #7126 Added special generated aliases for modded items.
mod:item
is accessible asmod's item
oritem from mod
. This feature is not officially supported, as Skript does not officially support any modded platforms. Any reported issues with this feature are not guaranteed to be addressed. - #7130 Allows blockdata to be used as the filter for
on click
events. - #7113 Supports adding to and removing from metadata tag values.
- #7115 Reduces delay before starting tests to 5 ticks instead of 5 seconds.
API Changes
- #5552 Adds internal Skript API events, like script initialization and script load events.
- #6873 Allows multiple return types in an ExpressionEntryData.
- #6993 Skript Timespans now implement the full Java time API, making them compatible with external resources.
- #7043 Exposes method to get the pattern strings of a property expression.
- #7053 Adds support for asynchronous JUnit tests.
- #7094 Explicitly add suppliers for EnumClassInfos.
- #7016 Avoids sending join messages when testing to avoid complexities with mocking players.
[Click here to view the full list of commits made since 2.9.4](<https://github.com/SkriptLang/Skript/compare/...
Patch 2.9.4
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
- #7141 Fixes leather horse armor being unequipable.
- #7143 Fixed entries being case-sensitive, preventing using capital letters in entries like 'Usage: ' for commands.
Additions
This includes: Pale Garden biome, creaking entity, baby squid entity, baby glow squid entity, baby dolphin entity
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.