Releases: SkriptLang/Skript
Pre-Release 2.8.0-pre2
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
- #6286 Fixed command parsing errors that could occur for valid commands.
- #6287 Fixed warnings about the upcoming player UUID variable changes being printed for incorrect lines.
- #6292 Fixed an issue that caused custom event priorities to pollute the parsing of event declarations that did not specify a priority.
- #6294 Fixed an error that would occur when trying to obtain the "shoes" of an entity.
- #6298 Fixed the outdated website link in Skript's plugin description.
- #6312 Fixed a few issues with the updater system that caused pre-releases to be shown to users in the stable release channel. This will only apply to future releases, and users running a 2.7.x version will continue to see prompts to update to a potentially unstable build.
- #6317 Fixed "parsed as a player" not working for valid inputs.
Click here to view the full list of commits made since 2.8.0-pre1
Changes
⚠️ #6310 The newly re-added location from vector expression now requires "to location" in the syntax.
The syntax is now
%vector% to location in %world%
.
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.
Pre-Release 2.8.0-pre1
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
- Using players in variable names will soon change from defaulting to names to defaulting to UUIDs. Warnings have been added to help smooth out this transition. See #6270 for more information.
- Removed Projectile Bounce State condition and expression. These haven't done anything for years.
- The
target entity of player
expression has been improved and now uses raytracing to find the player's target. This should cut down on false positives significantly, but the change in behavior may cause issues for some users who relied on its quirks. - Parsing players from player names is now a bit more intuitive. Previously, parsing
"xyz"
as a player would return the first online player to contain"xyz"
somewhere in their name. Now, it only returns players that start with"xyz"
. See #5875 for more. - Major changes have been made to the
on grow
event. The grow event now has many more options to specify how you want it to listen. These changes mean that code that useson grow of x
may fire twice as often as expected.
# x -> something
on grow[th] from X
# something -> x
on grow[th] into X
# X -> Y
on grow[th] from X [in]to Y
# x is involved in some way
on grow[th] of X
- The expression
durability of %item%
now actually returns the durability (a pick with durability 103/160, for example, returns 103) instead of the prior behavior, where it would act likedamage 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, 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
- #4198 Added syntax for interacting with item cooldowns:
- a condition that checks whether a player has a cooldown for an item
- an expression to get and change the cooldown of an item for a player
- #4593 Added
raw index of slot
expression. - #4595 Added
loop-(counter|iteration)[-%number%]
for both normal and while loop and improved performance for loop-value. - #4614 Added the ability to only get certain item types when using the
items in inventory
expression. - #4617 Added anvil repair cost expression.
- #5098 Added an expression to repeat a given string multiple times.
- #5271 Added time states for the
tool change
event'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. - #5356 Added an expression for getting and changing the portal cooldown of an entity.
- #5357 Added toggle pickup for items on living entities.
- #5359 Added
is jumping
for living entities condition. (Paper 1.15+) - #5365 Added syntax for interacting with an entity's active item:
- a condition that checks whether an entity's hand(s) is raised
- an expression to get an entity's active item (e.g. a bow)
- an expression to get the time they've spent using it or how long they need to keep using it to complete the action (e.g. eating)
- an expression to get the maximum time an item can be used for
- an expression to get the arrow selected in the
ready arrow
event - an effect to cancel the usage of an item
- events for when a player readies an arrow and when a player stops using an item.
- #5366 Added support for getting and modifying the inventories of items, like shulker boxes.
- #5367 Added syntax to check and set whether a sign has glowing text.
- #5456 Added the ability to get all armor pieces of an entity.
- #5460 Added an event for when a player selects a stonecutting recipe.
- #5462 Added InventoryMoveItemEvent.
- #5482 Added an expression to get the vector projection of two vectors.
- #5494 Added a condition to check if an entity is left or right handed, and adds an effect to change their handedness.
- #5502 Added syntax to create vectors from directions.
- #5562 Added a condition to check if an entity has unbstructed line of sight to another entity or location.
- #5571 Added a condition to check if an entity is shorn or not. Also expands the entities that can be shorn with the
shear
effect. - #5573 Added a function to clamp a value between two others.
- #5588 Added player arrow pickup event.
- #5589 Added hit block of projectile.
- #5618 Added
is climbing
for living entities condition. - #5633 Added an event for when endermen attempt to escape, along with their reason for doing so.
- #5636 Added
Free/Max/Total Server Memory
expression. - #5662 Added expression to return the loaded chunks of worlds.
- #5678 Added item damage to the
damage
expression. - #5680 Added inventory close reason in inventory close event.
- #5683 Added
event-item
andevent-slot
to the resurrect event. If no totem is present, these values arenone
. - #5763 Added Paper 1.16.5+ quit reason for finding out why a player disconnected.
- #5800 Added an event for when an entity transforms into another entity, like a zombie villager being cured or a slime splitting into smaller slimes.
- #5811 Added the ability to execute a command as a bungeecord command like /alert.
- #5814 Added
returns
aliases forfunction
definition. - #5845 Added
player
andofflineplayer
functions. - #5867 Added expressions to get all characters between two characters, or an amount of random characters within a range.
- #5894 Added support for keybind components in formatted messages (
<keybind:value>
). - #5898 Added
apply bone meal
effect. - #5948 Added an event for when players are sent the server's list of commands, as well as an expression to modify them.
- #5949 Added an expression to get a percentage of one or more numbers.
- #5961 Added the ability to listen for entities rotating, or rotating and moving, in the
on move
event. - #6101 Adds an effect to copy the contents and indices of one variable into others.
- #6146 Multiple # signs at the beginning of a line now start a comment.
- #6162 Added a function
isNaN(number)
to check if a number is NaN. - #6180 The syntax to get a location from a vector and a world has been re-added.
- #6198 Added Turkish translation.
Bug Fixes
Patch 2.7.3
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
- #6123 Fixed a priority issue that could cause the "sets" expression to match over other, better-fitting possibilities.
- #6171 Fixed an issue that caused accessing inventories in death events as well as checking the type of a spawner to be impossible.
- #6205 Location comparisons have been improved to significantly reduce the possibility of false negative results.
API Changes
- #6201 This is a behavioral change for the asynchronous execution API that was added to SkriptEvent (
SkriptEvent#canExecuteAsynchronously
). TheSkriptEvent#check
method may now be called asynchronously if the SkriptEvent can execute asynchronously. While we will not typically include behavioral changes like this in patch releases, this change was to address major performance issues that could occur from locking threads.
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.
Patch 2.7.2
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
- #5765 Fixed an error with non-finite vectors
- #6038 Fixed the JavaDocs name and title elements
- #6078 Updated documentation links to the new Minecraft wiki
- #6080 Fixed issues with language nodes in command help
- #6090 Fixed the fake player count syntax for Paper
- #6102 Fixed an error when sorting lists
- #6103 Fixed UTF-8 encoding when building Skript
- #6106 Fixed reloading a directory with the script file effect
- #6117 Fixed an error when printing block inventories
- #6121 Fixed an issue where Skript options would not work in functions in some cases
- #6126 Fixed permission messages not showing for Skript commands
- #6128 Fixed issue when checking if Minecraft time is between two values that span across midnight
- #6130 Fixed issues with changing in the drops expression not setting all items and possibly causing an error
- #6132 Fixed floating point error that could occur when trying to loop with "x times"
- #6150 Fixed the message when reloading multiple scripts in a directory
- #6154 Fixed an issue with changing the durability of an item
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:
- @3meraldK
- @TheLimeGlass
- @MihirKohli
- @Spongecade
- @UnderscoreTud
- @AyhamAl-Ali
- @Moderocky
- @APickledWalrus
- @sovdeeth
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 2.7.1
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
- #5658 Fixed
keep inventory
in a death event and related issues - #5952 Fixed bugs with removing from vector length, setting components of multiple vectors, and issues when running with debug verbosity.
- #5965 Fixed event values in chunk enter event
- #5966 Fixed the registration (and logging) of Skript commands
- #5997 Fixed potion durations being locked to 15 seconds
- #6004 Added missing event-item for the book sign event
- #6021 Fixed inability to change the remaining time of a command cooldown
- #6022 Fixed an issue generating random numbers on older versions of Java
- #6023 Fixed an exception when attempting to use an attribute that an entity does not support
- #6026 Fixed a casting error when using a pre-set variable for command cooldown storage
- #6027 Corrected some missing versions in the documentation
- #6033 Fixed local variables in the spawn effect section
- #6047 Fixed an issue when using two or more 'variables' sections
- #6050 Fixed an issue when using two or more 'aliases' sections
- #6067 Fixed an issue when using the 'stop all sounds' effect
- #6072 Fixed the spawn section not working on Minecraft 1.20.2
- #6081 Fixed duplicate logging issues that could occur due to recent API changes
Click 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.X
versions, released twice per year.
Bug fixes will be released monthly in smaller 2.7.X
versions.
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:
- @AyhamAl-Ali
- @TheLimeGlass
- @UnderscoreTud
- @Pikachu920
- @DelayedGaming
- @sovdeeth
- @APickledWalrus
- @Moderocky
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.
2.7.0
🚀 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
- Scripts in subdirectories will now load before those in the main directory.
- List parsing order has changed to function in a clearer manner:
# Here is an example list declaration
set {_l::*} to "abc", length of "def", "ghi"
# Previous Behavior
Interpretation: "abc", length of ("def", "ghi")
Result: "abc", 3, 3
# New Behavior
Interpretation: "abc", length of ("def"), "ghi"
Result: "abc", 3, "ghi"
- Removed the expression for obtaining the numerical ID of an item
- The durability expression has changed. Durability now works counter to damage. That is, as the damage of an item increases, its durability decreases. Here is an example:
set {_item} to <some item with 1000 durability>
add 5 to the damage of {_item} # durability is now 995/1000
add 5 to the durability of {_item} # durability is now 1000/1000 again
⭐️ 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
# all conditions must pass
if:
condition 1
condition 2
then:
do stuff
# at least one condition must pass
if any:
condition 1
condition 2
then:
do stuff
# it can also be used in else-if statements
if 1 + 1 = 3:
do stuff that will never actually be done
else if:
condition 1
condition 2
then:
do stuff
else:
do stuff
- Local Functions that can only be used in the script that they are declared have been added.
Local Function Example
# in script1.sk
local function welcome():
broadcast "Welcome!"
# in script2.sk
on script load:
welcome() # this will error as `welcome()` is only available in script1.sk
- The Options section has been expanded to support nesting.
Nested Options Example
options:
price:
apple: 1000
orange: 100
# {@price.apple} and {@price.orange} are now valid options
Additions
- Added syntax support for obtaining and modifying the age of blocks (e.g. crops) and entities (closes #3068, #4534)
- Added support for providing multiple players in the played before condition
- Added syntax support for the freezing mechanics introduced in 1.18
- Added support for
the last struck lightning
(this only applies to lighting strikes created by Skript) (closes #3872) - Added syntax for forcing entities to pathfind to a location (closes #2334)
- Added syntax for obtaining a list of the names of all loaded plugins (closes #4189)
- Added syntax for obtaining the bed location of offline players (closes #4659)
- Added syntax for modifying the unsafe bed location of players, meaning they will respawn there even if the location is obstructed
- Added events and event values for when an anvil is damaged (requires Paper) and when an item is placed in an anvil (e.g. preparing for a repair) (closes #4456)
- Added additional event values for the player and entity move events (closes #4890)
- Added a new configuration option for printing warnings for script lines that take too long to parse (closes #4759)
Look for
long parse time warning threshold
in yourconfig.sk
!
- Added an expression for obtaining the raw content of a string (no parsing or stripping of formatting) (closes #4102)
- Added support for spawning a wolf with a specific collar color (closes #1760)
- Added support for obtaining the amplifier of an entity's potion effect (thanks @Ankoki)
- Added complete support for the "player egg throw event"
- Added French language support (thanks @Romitou)
- Added support for multiple entities in the equip syntax (closes #5083)
- Added the player trade event with support for obtaining the involved entity (thanks @AbeTGT)
- Added case sensitivty support for the join and split syntax
Note that these expressions will now take into account the case sensitivity config option (closes #4886)
- Added support for lang files to automatically update when changes are detected
Note that when a change is detected, existing lang files will be moved into a backups folder
- Added the ability for creating sectioned options (closes #4032)
- Added support for obtaining and modifying the pickup delay of a dropped item
- Added Polish language support
- Added support for
the last launched firework
(this only applies to fireworks launched by Skript) (closes #4942) - Added syntax for obtaining the environment (overworld, nether, end) of a world (closes #3673)
- Added a condition for checking whether an entity is gliding (thanks @Ankoki) (closes #5145)
- Added syntax for modifying and checking whether an entity is invisible (thanks @D4isDAVID)
- Added an event for when an entity jumps (thanks @AbeTGT)
- Added syntax for obtaining and modifying the duration of an entity burning (closes #923)
- Added support for creating local functions (closes #2188, #5167)
- Added syntax for obtaining the nearest entity relative to another entity or location (closes #4674)
- Added syntax for checking whether a location is within a certain radius of another location (closes #5201)
- Added syntax for obtaining the list of all banned players or IP addresses
- Added syntax for checking if a location is within two other locations
- Added syntax for obtaining the current moon phase of a world (closes #746)
- Added past, present, and future event values for the block place event
- Added block data support to the
type of
expression - Added syntax for obtaining the text input of an anvil
- Added the ability to set a block to a specific skull (e.g. the player's skull) (closes #1789)
- Added syntax for obtaining, modifying, and checking for server operators (closes #4910)
- Added support for multiline conditions (closes #5152)
- Added syntax for forcing an entity to look at another entity
- Added syntax for allowing modification of the actual maximum player count (thanks @kiip1)
- Added events for when a player starts/stops/swaps spectating another entity
- Added modification support to the book pages expression
- Added support for using
a
/an
in inventory types
That is, you can now write
set {_var} to a shulker box inventory
.
- Added syntax for respawn anchors (thanks @hotpocket184) (closes #4726)
- Added a literal representing pi (thanks @kiip1) (closes #5288)
- Added a new command entry for changing the command prefix
The command prefix is used when there may be command name conflicts with another plugin (this is the
skript:
part ofskript:mycustomcommand
).
- Added support for worlds in the
name of
syntax (thanks @DelayedGaming) - Added support for determining whether an entity is valid
An entity will be considered invalid if it has died or despawned.
- Added an event for when an entity drops an item (thanks @ShaneBeee)
- Added support for determining whether an entity is an enemy (thanks @ShaneBeee)
Note that this is only available on Minecraft 1.19.3 and newer.
- Added support for obtaining the source block in a block spread event (thanks @GodModed) (closes #5346)
- Added the loot generate event and support for modifying the loot
- Added syntax for obtaining and modifying the number of sea pickles at a block
- Added support for unequipping items from an entity (thanks @colton-boi) (closes #5360)
- Added Simplified Chinese language support (thanks @CJYKK)
- Added Japanese language support (thanks @faketuna and @rilyhugu)
- Added a chat component tag for copying to the clipboard (closes #5351)
Example: `send "<copy:text to copy>text to display"
- Added sy...
2.7.0-beta3
Skript 2.7.0-beta3
⚠ BETA Release Warning
This is a BETA release, which means it is not yet meant for production servers. It may contain bugs or unexpected behaviors in its current state.
We recommend you extensively test this release on a local server before taking the risk of using it on a production server (if you truly wish to).
We do have many tests in place to ensure the integrity of Skript remains stable to some degree.
⚠ Compatibility Warning
Due to the major API changes within the 2.7.X updates, some addons may no longer work properly. Please be patient as addon developers work to update their addons. We expect to publish a new release of our AddonPatcher in the near future, but be aware that it cannot fix all issues.
📢 End of 1.12.2 Support
Yet again we mention that we have dropped support for 1.12 and lower (legacy versions) since Skript 2.7.
This means that this (and any 2.7.X) version will only work on Minecraft versions 1.13 and higher.
Only critical fixes will be backported to 2.6.X -- Report any if found.
⭐️ 2.7.0-beta3 Changelog
Click here to view the full list of commits made since 2.7.0-beta2
Click below to view the entire changelog for this release.
Full changelog
Additions
- Implements proper support for serial (Oxford) comma in lists. (Thanks @Mr-Darth)
Bug Fixes
- Fixed an issue with the random number expression throwing an ArithmeticException when trying to get a random integer between two numbers with the same whole number but a different decimal.
- Fixed a bug where Spigot would throw an exception in 1.16+ when a vector of zero attempts to grab blocks with the BlockIterator.
- Fixed a bug when using a direction with a number, the ExprBlocks expression would not respect the value. So for example loop blocks 5 above the player would loop blocks between the player and 100 blocks above because that was the max target block distance. It now properly loops 5 blocks. (Details at #5566)
- Fixed ExprVectorRandom to be strictly returning vectors with magnitude of 1 (Thanks @DelayedGaming)
- Fixed the delete changer on target entity and added a reset changer. (Closes #2695)
- Fixed an issue where condition CondIsPreferredTool would return true when provided with null values like an unset variable. (Thanks @Fusezion)
- Fixed a bug where variables that weren't involved with default variables of a script would error while having default variables for that script. (Closes #5647)
- Fixed the
on falling block land:
event being called whenever a block turns into a falling block, when it shouldn't. Only when it lands.
On top of this;on falling block falling
has been added, so you can now properly get both falling block state events. (Thanks @DelayedGaming) - Fixed logger level color for messages that don't have a node.
- Fixed an IllegalArgumentException from being thrown when attempting to serialize a location with a world that is unloaded.
- Fixed an issue where the ExprVersionString expression couldn't be used in the 'server list ping' event. (Closes #5597) (Thanks @DelayedGaming)
- Fixed an issue where EventValueExpression classes were checking for super classes of the provided type. They now are minimum class level supertype to the type registered. Example being Egg.class was looking for Entity.class when it should have been just Egg or anything that extends Egg. (Closes #5539)
- Fixed a bug where an EntityData's details would not be applied before calling the consumer of a section in EffSecSpawn. (Closes #5711)
- Fixed some item comparisons for ItemTypes created through
type of <itemtype>
(Closes #5693) - Fixed a big issue where Skript would not select the correct type enum. For example Skript would parse
fire
as a visual effect and due to this, it would not be allowed to be used as an entity or a block. (Closes #2711, #4773, #5497, #5557 and #5675)
Removals
- Removed
id of %itemtypes%
Skript has since supported 1.13+ and we don't use ID values anymore. - Remove hidden files from tab complete. Example being .git/ folder displaying in the tab complete when using git for scripts source control. This was extremely annoying for those that have hidden files but don't want them to display in the tab complete.
Changes
- In versions previous to this 2.7.0-beta3 version, the syntax
(damage[s] [value[s]]|durabilit(y|ies)) of %itemtypes/slots%
would treat damage and durability the same. Now durability is how much durability is left on the tool, and damage is how damaged the tool is, so you can get both sides of the slider now rather than them being the same. (Closes #4692). - Deprecated and marked Math2 class as internal, addons should not be using this class. Math2 is an old class that used to be provided to improve some mathematical calculations, but Java's Math class has since gotten better. (Thanks @kiip1)
- Clarified the error about left clicking on an entity which should be a damage event. (Thanks @oskarkk)
- Improved performance by switching event triggers to be using Multimap instead of Skript's Pair. (Thanks @sovdeeth)
- Switched
AliasesProvider.materials
set implementation from Java SE HashSet to FastUtil ObjectOpenHashSet, which improved Aliases loading time by ~40%. (Thanks @bluelhf)
Skript API (Addon Developers)
- Removed the final modifier on PropertyExpressions. This means you can now properly return multiples when isSingle is to return false. (Closes #5521)
- Added the ability to register custom VariableStorage classes. API changes coming in the future with #5646 so the API currently is subject to change. API documentation will be written when that pull request is merged.
Credit to the team on this release: @AyhamAl-Ali @UnderscoreTud @TheLimeGlass @APickledWalrus
📝 Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
⚒ The Fixes Release
Skript 2.7.0-beta2
Second beta for Skript 2.7 addressing a handful of bugs.
⚠ BETA Release Warning
This is a BETA release, which means it is not yet meant for production servers. It may contain bugs or unexpected behaviors in its current state.
We recommend you extensively test this release on a local server before taking the risk of using it on a production server (if you truly wish to).
We do have many tests in place to ensure the integrity of Skript remains stable to some degree.
⚠ Compatibility Warning
Due to the major API changes within the 2.7.X updates, some addons may no longer work properly. Please be patient as addon developers work to update their addons. We expect to publish a new release of our AddonPatcher in the near future, but be aware that it cannot fix all issues.
📢 End of 1.12.2 Support
Yet again we mention that we have dropped support for 1.12 and lower (legacy versions) since Skript 2.7.
This means that this (and any 2.7.X) version will only work on Minecraft versions 1.13 and higher.
Only critical fixes will be backported to 2.6.X -- Report any if found.
⭐️ 2.7.0-beta2 Changelog
Click here to view the full list of commits made since 2.7.0-beta1
Click below to view the entire changelog for this release.
Full changelog
New Features
- Updated to 1.19.4. New entities are added. Aliases automatically generate for the exact name. Human made aliases not ready yet.
Bug Fixes
- Fixed a bug where attacker could not be used in some damage events.
- Fixed some comparisons that could fail because of the changes in 2.7 to ItemMeta comparison.
- Fixed a bug where the item amount changer wouldn't apply when the type was an itemstack. (Thanks @sovdeeth)
- Fixed a bug that prevented usage of variables that were not a default variable when using the default variables structure (Closes #5510)
- Fixed a bug where the 'raw string' expression would return the formatted string of a non-literal. (Closes #5515)
- Gradle will now apply Java 17 to your build when compiling. This means it won't matter what version of Java your machine has, Skript will always be set to Java 17. Ensure you run
gradlew clean build
when building for the first time. This is due to Paper 1.17+ requiring Java 17. Skript still targets Java 8 (MC versions under 1.17 can still run Java 8), so your contributions should build target Java 8. - Fixed an issue where the existing experience orb experience was not respected when setting the exp value in EffDrop. (Closes #5490) (Thanks @sovdeeth)
- Fixed a bug that happens when the entity changer would update the inventory of players even if there were no items involved with the change, causing unexpected behaviors. (Closes #5270)
- The second bug happens when trying to remove an inventory with air items from an entity. (Closes #5237 and #5396)
Skript API (Addon developers)
- Added debugging and JProfiler to the gradle tasks. Read more at #5299 (Thanks @kiip1)
- Fixed an issue where add-ons would have to update to the newly changed converter package move. Added deprecated methods to support add-ons for the meantime.
- Fixed an issue where Skript couldn't be built using
gradlew build
📝 Help Us Test
We have an official Discord community for beta testing Skript's new features and releases.
🚀 The Features Release
Skript 2.7.0-beta1
After many delays, we are excited to finally publish the first beta for Skript 2.7. With numerous new features, countless bug fixes, and amazing API overhauls, 2.7 has shaped up to be one of our biggest releases ever. We are seeing incredible growth in new contributors, and we want to thank all of you for your continued support. The future of the project has never looked brighter. So, without further ado, we present our first beta for 2.7!
- SkriptLang Team
⚠ BETA Release Warning
This is a BETA release, which means it is not yet meant for production servers. It may contain bugs or unexpected behaviors in its current state.
We recommend you extensively test this release on a local server before taking the risk of using it on a production server (if you truly wish to).
We do have many tests in place to ensure the integrity of Skript remains stable to some degree.
⚠ Compatibility Warning
Due to the major API changes within this update, some addons may no longer work properly. Please be patient as addon developers work to update their addons. We expect to publish a new release of our AddonPatcher in the near future, but be aware that it cannot fix all issues.
📢 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.
🚀 Documentation Website Rework
Documentation website has been reworked and redesigned with countless additions and fixes (#4319).
In addition to that, Skript documentation files has been moved to a new repository skript-docs where it will be maintained there separately.
Make sure to check the docs site out and report issues on the new issue tracker.
⭐️ 2.7.0-beta1 Changelog
Click here to view the full list of commits made since 2.6.4
There are so many contributions in this release, the changelog needs its own link!
Click here to view the entire changelog for this release.
Thanks @Romitou, @3meraldK, @Nicofisi, @Zabujca997, @CJYKK, @faketuna, @rilyhugu, @kiip1, @sovdeeth, @Ankoki, @UnderscoreTud, @AbeTGT, @D4isDAVID, @hotpocket184, @DelayedGaming, @GodModed, @colton-boi, @cooffeeRequired, @ShaneBeee and @Fusezion for contributing!
Aliases
- Changed how shulker boxes are handled to now properly point to all boxes.
normal shulker box = that purple undyed box
down facing shulker box = same as above just in a direction
any shulker box = any coloured shulker box including the uncoloured one
all shulker boxes = all shulker boxes and the uncoloured one, no duplicates
- Added beetroot
- Fixed ores not working
- Changed lapis having two
s
= lapiss to not.
Skript API (Addon developers)
- Added a utility class called EnumClassInfo which is targeted at enums, it automatically creates a language node for the enum, a parser, serializer, default expression and usage for the type, which should make it less tedious to make enum classinfos. (thanks @UnderscoreTud)
You can look at BukkitClasses.class for examples, enum classinfos got converted. - Added support for arrays in event values.
- Added a new method for registering a property expression where the type is optional to allow for default expression property
+ PropertyExpression#registerDefault(Class<? extends Expression<T>>, Class<T>, String, String);
property [of %types%]
and
%types%'[s] property
- The Converters and Comparators systems have been completely rewritten and relocated. The old classes will continue to function but have been deprecated. Please see their javadoc for details on replacement methods.
- ScriptLoader has seen major overhauls, along with ParserInstance. Some methods may no longer be available, but most have replacements that can be determined from deprecation javadocs. Please see #4108 for more details. Also feel free to ask questions in any of the Discord guilds linked in our README.
- This update adds the Structure API, a way for addon developers to finally create top-level elements (like commands, functions, and more). We are working hard to bring some tutorials to our website, but please feel free to ask any questions in the Discord guilds linked in our README.
- SelfRegisteringSkriptEvent has been deprecated now that the Structure API exists (it is essentially a replacement).
📝 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.
🎉 Team Changes
@ShaneBeee has decided to leave the SkriptLang team. We are sad to see him go, but we also want to appreciate all of his contributions over the years. This project would not be where it is today without his dedication, and we are forever thankful.
Please welcome @UnderscoreTud to the SkriptLang team! Their recent contributions have helped us deliver this massive update and we look forward to working with them at a closer level.
Bug fixes for legacy versions
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
- Fixed a bug where if the lifetime value of a firework launch was greater than 127 or less than 0, it would throw an error. (thanks @DelayedGaming)
- Fixed a bug where the offhand tool of player was incorrect in the PlayerHeldItem event. (#5094 thanks @TUCAOEVER)
- Fixed variable names with long numbers either taking long parsing time, or not being able to compare with another similar number. (#4729, #3929)
- Fixed ExprTimePlayed not working on versions 1.13-1.14 (#4929)
- Fixed VariableString#isQuoted to work correctly, should be returning false for the input string " (with withQuotes=true). (#5149)
- Fixed a bug where the component type of the returned array from ExprEntities not being the return type (e.g. Player), but a generic Entity instead, in the case that the syntax was used with radius, and no entities matched the query. (#5124)
- Fixed a bunch of issues relating to conversion for list-modifying expressions.
- Fixed an issue with how EffPotion interacted with patterns for
potioneffects
andpotioneffecttypes
(#5117) (thanks @Fusezion) - Fixed EffBroadcast not working on 1.9.4 (#5019)
- Fixed a bug where you couldn't use colons in the ExprParse syntax (thanks @Mr-Darth)
- Fixed a NPE from happening when spawning a falling block without specifying the block type and will default to Stone (#5042) (thanks @UnderscoreTud)
- Fixed
[on] silverfish enter
and[on] silverfish exit
events not actually working. - Changed item serialization with blocks to properly serialize. This means you cannot downgrade your Skript version after this version without losing those variables storing block value data!
- Changed some event-values to return as an ItemStack rather than Skript's own ItemType to avoid some issues. (#4109)
- Fixed a bug where Skript couldn't spawn lingering potions in 1.9-1.13 (#4933)
- Fixed a bug where Skript might not start on 1.11.2 due to enchantment sweeping edge not being registered (#4933)
- Fixed a bug where Skript wouldn't register sound syntaxes on 1.10.2 due to sound category not existing (#4933)
- Fixed a NPE when using
of %itemtype%
syntax in preparing craft event (#4959) - Fixed an issue where EffConnect would error due to Bukkit#getOnlinePlayers not returning anything, yet a player instance was provided. (#5189)
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