Releases: SkriptLang/Skript
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
🚀 The 1.19 Update
Hello Skripters 👋
Today we're releasing version 2.6.3 which brings out Minecraft 1.19 Support and some critical fixes towards UnparsedLiterals aka your itemtype being parsed as something totally different!
📢 End of 1.12.2 Support
As mentioned in the previous releases, we have decided to drop support for 1.12 and lower (legacy versions) in Skript 2.7.
This means that Skript 2.6.X is the last version that will work with the legacy versions.
Only critical fixes will be backported to 2.6.X.
⭐️ 2.6.3 Changelog
Click below to view the entire changelog for this release.
Full changelog
Additions / Improvements
- Updated to Minecraft 1.19 (closes #4850)
- Added support for all new chested boats aside from mangrove. Spigot forgot to include mangrove boats for now, they're currently working on it. (#4834)
- Added support for the new frogs (#4834)
- Added support for the new particles (#4834)
- Note: Goat Horn variations will not work as expected due to a kind-of bug in Bukkit, they will always return Ponder Goat Horn, see #4882
- Cleaned up the visual effect area pattern for area particles (#4851)
- Added missing event values for crafting events
event-inventory
&event-itemtype
(#4409) - Added tutorials link in
/sk info
(they are soon to come) (#4838)
Fixes
- Fixed Skript crashing on startup for Spigot only in 1.19 (#4849)
- Fixed a major issue with UnparsedLiterals, where sometimes things like items would be incorrectly interpreted as something else, causing parsing errors. (#4776 closes #3465, #4769, #4774 and #4841)
- Fixed dropping of air causing an error (#4795 closes #4757) (Thanks @TFSMads)
- Fixed a locale issue when converting from lower/upper case (#4822 closes #4712 and #4821)
- Fixed an issue where if the visual display range was not defined on a visual effect, the range would default to 1 block radius and not 32 (#4843 closes #4806) (Thanks @kiip1)
- Fixed an issue where the event-slot of the prepare crafting event would return the incorrect slot. The initial plan was for event-slot to return the result slot when the user has already placed the ingredients in the grid and the result item is being displayed. Use inventory click event for checking the slots the user used in the recipe (#4852 closes #4747) (Thanks @hotpocket184)
- Fixes an IllegalArgumentException from happening when attempting to set the player's experience level to a negative number. (#4805 closes #4804)
- Fixes a few issues with the title effect (#4362) (Thanks @oskarkk)
- Fixed
on preparing craft:
event not firing at the right time (#4409) - Fixed some Skript command arguments were case sensitive (#4838)
- Updated documentation link in
/sk info
(#4838) - Fixed looping entities in chunks returning wrong amount of actual entities amount (#4608)
- Fixed script command named arguments not working as expected (#4796) (Thanks @TFSMads)
- Fixed a CCE when using
hanging entity
expression in non-hanging-events (e.g. breaking a stone) (#4874)
Click here to view the full list of commits made since 2.6.2
⭐️ Thank you
We saw a large increase in new contributors recently, and we just wanted to thank all those who have contributed to this version of Skript, lots of issues and suggestions arise and we couldn't have done it all without the help of the community.
As always, if you encounter any issues or suggestions please report them at https://github.com/SkriptLang/Skript/issues
If you have any ideas or input for the future development of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions
Cleaning Up 2.6
It's been some time since our last release, but we're finally ready and able to release Skript 2.6.2 today. This version mainly contains bug fixes and improvements, but there are also a few minor additions. For full details, you can check out the update's full changelog below.
I'd also like to welcome our newest team member, @AyhamAl-Ali! They have become a crucial part of this project with their awesome feature and bug patches, but more importantly, their terrific web experience and contributions. The docs have never looked better! I'm truly looking forward to everything they'll continue to offer this project. Thank you again for your contributions!
End of 1.12.2 Support
As mentioned in the previous releases, we have decided to drop support for 1.12 and lower (legacy versions).
This is likely to be the last 2.6.x release, making this the last version to support 1.12 and lower. If necessary, we will backport critical fixes.
⭐️ Changes
Click here to view the full list of commits made since 2.6.1
Click here to view the full list of fixes, improvements, and additions
Fixes
- Fixed an error with the language expression that could occur on legacy versions (#4616) (Thanks @Matocolotoe)
- Improved error messages from the new Pattern Compiler (#4546, closes #4541)
- Fixed an issue where hex colors didn't parse where they should (#4529, closes #4527) (Thanks @Sorbon-CH)
- Fixed a parsing issue where unrelated errors would be mistakenly printed (#4530)
- Fixed an issue where the "no scripts found" error mistakenly displayed with a config file line (#4549)
- Fixed an issue where parsing could mistakenly fail with literals (#4242, closes #3465)
- Fixed a few issues with function parsing, notably issues with default values (#4244, closes #4049)
- Fixes to parsing, also fixing the "all armor stands" expression (#4260, closes #2370, #2723, #4239)
- Fixed an issue where the enchantment level expression could incorrectly remove enchantments (#4393, closes #4391)
- Fixed an issue with block comparisons (#4390, closes #4340)
- Fixed an issue with "type of" expression being used with items/blocks (#4405)
- Fixed an issue with looping blocks below y=0 (#4647, closes #4645)
- Improved the behavior of
or
in lists (#4545, closes #4543)
Please note that with this change,
or
lists will no longer always pick a set value, meaning in something like:set {_x} to 10 set {_y} to {_x} or {_not-set-variable}
{_y} will be set to
10
or set to nothing (whereas it would always be set to10
before)
Please note that this change removes the ability to use
saturation
as a default expression. This breaks scripts that do something like:on hunger bar change: broadcast "%saturation%"
- Re-added error messages that were mistakenly removed from the change effects (#4555)
- Fixed a severe error caused by event value selection (#4570, closes #4565)
- Added a converter from strings to regions to combat region parsing issues (#4699, closes #4684)
- Fixed calculation issues for the pitch of locations of blocks (#4710, closes #4708)
- Fixed an issue with spawning falling blocks (#4717, closes #4716)
- Fixed some broken item comparisons on legacy versions (#4646, closes #4643)
- Fixed an issue with looping with single variables (#4627, closes #4672)
- Fixed an issue where the using the replace expression to replace items used incorrect comparison methods (#4627)
- Fixed errors that could occur when changing yaw and pitch of vectors (#4701)
- Fixed incorrect coloring of error messages by user input (#4630)
- Fixed a typo in the empty folder warning (#4711)
- Fixed an issue with damage cause comparisons (#4735, closes #4709)
- Fixed an issue with colors displaying in console (#4728, closes #4723)
- Fixed an error that could occur when reloading a script during event execution (#4138, closes #3685)
- Fixed the player event value in item pickup events (#4615, closes #1322)
- Fixed an error that could occur when creating chest inventories (with ExprChestInventory) above the size limit (#4739, closes #4736)
- Fixed an error where aliases data was exponentially duplicated during startup (#4649, fixes #4514)
- Fixed the
clicked enchantment button
expression and improved its documentation (#4688, closes #4686) - Fixed an issue with getting the location of a double chest (#4683, closes #4681)
- Added an error when using the spawn effect section on 1.9.4 as it is not supported (fixes an exception) (#4753)
Additions / Improvements
- Made improvements to the issue templates (#4511)
- The filter expression no longer accepts single values/expressions (#4395, fixes #4306)
- Added a config file option for player name regex (#4396, closes #4374)
This is useful for plugins like Geyser where some usernames are prefixed by a specific character.
- Allow variable strings to be converted (#4408, closes #1144, #1940, #4272)
- Added a converter for strings to worlds (#4408)
- Added default expression and time state support to the biome expression (#4539)
- Entity event values are now excluded from death events (#4540)
This change forces users to use
attacker/victim
to avoid confusion as to why they're not getting a message or why their code isn't erroring.
- Improved comparisons between slots and numbers (#4550, closes #4548)
- Re-added
all
to the indices expression (#4551, closes #4547) - Added an expression to get the protocol version of a player (#4569) (Thanks @bilektugrul)
- Addon Developers: Skript will now only accept registrations if enabled. This will make it easier for addon developers to tell if they've accidentally included Skript in their plugin jar (#4575)
- Added an expression to get the hanging entity and remover in hanging break and place events (#4592, closes #4359, #892)
- EffectCommandEvent is now a Bukkit event, meaning plugins and addons can listen for it (#4532, closes #4360)
- Fixed an issue where some syntax elements were missing
[the]
prefixes (#4604) - Fixed vector length reset when adding or setting pitch and yaw (#4626, close...