You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Skript 2.8.0 is here for everyone to enjoy! This release contains many new features and bug fixes to improve the Skript experience.
Below, you can familiarize yourself with the changes. As always, report any issues to our issues page! Per our new release model, we plan to release 2.8.1 on February 1st to continue addressing bugs. In the event of any critical issues, an emergency patch release may come sooner.
Happy Skripting!
⚠ Breaking Changes
Using players in variable names will soon change from defaulting to names to defaulting to UUIDs. Warnings have been added to help smooth out this transition. See Replacing player names in variables with player UUIDs. #6270 for more information.
Removed Projectile Bounce State condition and expression. These haven't done anything for years.
The target entity of player expression has been improved and now uses raytracing to find the player's target. This should cut down on false positives significantly, but the change in behavior may cause issues for some users who relied on its quirks.
Parsing players from player names is now a bit more intuitive. Previously, parsing "xyz" as a player would return the first online player to contain "xyz" somewhere in their name. Now, it only returns players that start with "xyz". See 🛠 Change player parsing to use name starting with #5875 for more.
Major changes have been made to the on grow event. The grow event now has many more options to specify how you want it to listen. These changes mean that code that uses on grow of x may fire twice as often as expected.
# x -> somethingon grow[th] from X
# something -> xon grow[th] into X
# X -> Yon grow[th] from X [in]to Y
# x is involved in some wayon grow[th] of X
The expression durability of %item% now actually returns the durability (a pick with durability 103/160, for example, returns 103) instead of the prior behavior, where it would act like damage of %item% (returning 57 for 103/160).
When there are multiple valid event-values for a default expression, Skript will now error and ask you to state which one you want instead of silently picking one. See the following example:
on right click on entity:
send "test"# This will now error, because Skript doesn't know whether to # send it to the clicked entity or the player doing the clicking.
Arithmetic evaluation will now return <none> for a whole chain if one of the operations is illegal. Previously, adding 1 + "hello" would treat "hello" as 0 and just return 1. This now returns <none>. However, the behavior of adding things to unset values hasn't changed. 1 + {_none} still returns 1.
Changelog
Additions
#4198 Added syntax for interacting with item cooldowns:
a condition that checks whether a player has a cooldown for an item
an expression to get and change the cooldown of an item for a player
#5098 Added an expression to repeat a given string multiple times.
#5271 Added time states for the tool change event's event-slot and for the hotbar slot expression. Also allows the ommission of the player in hotbar slot when using it in events that have an event-player.
#5356 Added an expression for getting and changing the portal cooldown of an entity.
#5357 Added toggle pickup for items on living entities.
#5359 Added is jumping for living entities condition. (Paper 1.15+)
#5365 Added syntax for interacting with an entity's active item:
a condition that checks whether an entity's hand(s) is raised
an expression to get an entity's active item (e.g. a bow)
an expression to get the time they've spent using it or how long they need to keep using it to complete the action (e.g. eating)
an expression to get the maximum time an item can be used for
an expression to get the arrow selected in the ready arrow event
an effect to cancel the usage of an item
events for when a player readies an arrow and when a player stops using an item.
#5366 Added support for getting and modifying the inventories of items, like shulker boxes.
#5367 Added syntax to check and set whether a sign has glowing text.
#5456 Added the ability to get all armor pieces of an entity.
#5460 Added an event for when a player selects a stonecutting recipe.
#5878 Fixed some issues with the parsed as expression returning arrays or throwing exceptions.
#6224 Fixed the examples for applying potion effects.
#6229 Fixed an exception when trying to get the text input of an anvil.
#6231 Fixed an exception when trying to print a block state.
#6239 Fixed an exception when removing items from drops in 1.20.2+.
#6266 Fixed a bug that caused incorrect errors to be printed when comparing things.
Removals
#5958 Removed the projectile bounce state condition and expression. These had no function.
Changes
#4281 Rewrote the furnace slot expressions and fixes numerous issues with them.
#5114 Added the ability to save, load, and unload specific worlds, or listen for those event for specific worlds.
#5279 Changed how Skript does arithmetic to support many more combinations, like multiplying vectors by scalars, adding timespans, and more.
#5478 Improved the element expression 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.
#5639 Major changes to the on grow event. Fixes an issue where listening to on grow of sugarcane or any other full-block plant, like cacti or pumpkins, would never fire. Adds more functionality to specify what exactly to listen for.
# x -> somethingon grow[th] from X
# something -> xon grow[th] into X
# X -> Yon grow[th] from X [in]to Y
# x is involved in some wayon grow[th] of X
#5674 Made the case-insensitive variables config option visible by default in the config file.
#5769 Skript now errors when an ambiguous event value is found for a default expression:
# This will now error, as it's unclear who to send "test" to!
on right click on entity:
send "test"
#5796 Expanded the block change event and adds block and blockdata event values.
#5841 Inventory titles now support hex colours and more.
#5875 Changed the parsing of players to only match players that start with that name, rather than simply containing the name.
#5889 Allows the omission of the command name when using the command info expressions within a command's trigger section or command event.
#5900 Improved how event parsing is handled internally.
#5976 Added decrease as an alias for reduce, e.g. decrease {_var} by 2.
#6010 Allows the use of and with before fade out in the title effect.
#6139 Allows setting the current hotbar slot of a player to a number as well as a slot.
#6157 Changes the target entity expression 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.
#6172 Allows the plural "commands" in the execute command effect.
#6271 Added warnings for using players in variable names, without the use player uuids in variable names config option enabled.
#6298 Fixed the outdated website link in Skript's plugin description.
API Changes
#5307 Switched Timespan#getTicks and Timespan#fromTicks from returning ints to returning longs. Deprecated Timespan#getTicks_i and Timespan#fromTicks_i due to API name change.
#5408 Cleaned up the Yggsdrasil serialization code.
#5440 Added a "parse section", which can be used to test if code properly parses or not. This is for the testing suite.
#5502 Added method Direction#getDirection which returns a vector.
#5550 The Skript profiler can now run for as long as the user wants.
#5874 SimplePropertyExpression now automatically defends %objects% to avoid UnparsedLiterals.
#5941ExpressionType#NORMAL was removed. ExpressionType#EVENT was added for EventValueExpressions. A new default register method was added to EventValueExpression.
#5955 Added WILL to PropertyCondition to allow for easy registration for conditions like player will consume the firework charge.
#6000 Renames the field SyntaxElementInfo#c to SyntaxElementInfo#elementClass. This field will be made private in 2.9. Please use the SyntaxElementInfo#getElementClass() getter instead.
#6001 Renamed the Slot classinfo from Inventory Slot to Slot.
#6054 Replaced MarkedForRemoval annotations with ApiStatus.ScheduledForRemoval.
#6261 Allows overrides of the cleanup() method in JUnit tests.
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:
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
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 player
expression has been improved and now uses raytracing to find the player's target. This should cut down on false positives significantly, but the change in behavior may cause issues for some users who relied on its quirks."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 🛠 Change player parsing to usename starting with
#5875 for more.on grow
event. The grow event now has many more options to specify how you want it to listen. These changes mean that code that useson grow of x
may 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"
as0
and 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 slot
expression.loop-(counter|iteration)[-%number%]
for both normal and while loop and improved performance for loop-value.items in inventory
expression.tool change
event'sevent-slot
and for thehotbar slot
expression. Also allows the ommission of the player inhotbar slot
when using it in events that have an event-player.is jumping
for living entities condition. (Paper 1.15+)ready arrow
eventshear
effect.is climbing
for living entities condition.Free/Max/Total Server Memory
expression.damage
expression.event-item
andevent-slot
to the resurrect event. If no totem is present, these values arenone
.returns
aliases forfunction
definition.player
andofflineplayer
functions.<keybind:value>
).apply bone meal
effect.on move
event.isNaN(number)
to check if a number is NaN.Bug Fixes
cursor slot
not always returning the correct item ininventory click
events.difference
expression.parsed as
expression returning arrays or throwing exceptions.drops
in 1.20.2+.Removals
Changes
furnace slot
expressions and fixes numerous issues with them.element
expression 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 grow
event. Fixes an issue where listening toon grow of sugarcane
or any other full-block plant, like cacti or pumpkins, would never fire. Adds more functionality to specify what exactly to listen for.case-insensitive variables
config option visible by default in the config file.block change
event and adds block and blockdata event values.decrease
as an alias forreduce
, e.g.decrease {_var} by 2
.and with
beforefade out
in thetitle
effect.continue
to continue outer loops.target entity
expression 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 names
config option enabled.API Changes
Timespan#getTicks
andTimespan#fromTicks
from returning ints to returning longs. DeprecatedTimespan#getTicks_i
andTimespan#fromTicks_i
due to API name change.Direction#getDirection
which returns a vector.%objects%
to avoid UnparsedLiterals.ExpressionType#NORMAL
was removed.ExpressionType#EVENT
was added for EventValueExpressions. A new default register method was added to EventValueExpression.WILL
to PropertyCondition to allow for easy registration for conditions likeplayer will consume the firework charge
.SyntaxElementInfo#c
toSyntaxElementInfo#elementClass
. This field will be made private in 2.9. Please use theSyntaxElementInfo#getElementClass()
getter instead.Inventory Slot
toSlot
.MarkedForRemoval
annotations 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.
This discussion was created from the release Feature Release 2.8.0.
Beta Was this translation helpful? Give feedback.
All reactions