Releases: SkriptLang/Skript
The 1.18 update
⭐️ Changes
As with the previous release, the full changelog can be found below this summary.
Minecraft 1.18 support
Skript now officially supports Minecraft 1.18. There was a temporary unofficial release from @ShaneBeee on the skUnity Discord, but we recommend switching to this official release now.
Parsing output reformatted
Skript's parsing output (the errors and warnings) are now easier to read and more stylish, thanks to a PR from @AyhamAl-Ali.
Full changelog
Fixes
- Fixed an exception when dropping 0 of an item (closes #4315, thanks @AyhamAl-Ali)
- Fixed number literal parsing slowing down parsing considerably
- Fixed parsing issue (closes #2382)
- Removed variable conflict warnings (closes #3932)
For addon developers:
This change could cause your addon to not compile anymore due to your code overriding the methodParser#getVariableNamePattern
, that has now been removed.
To fix this, remove the@Override
annotation if you want to preserve backwards compatibility with older Skript versions, otherwise remove the method entirely.
- Fixed multiple issues with the parse expression (closes #3013)
- Fixed and improved event value parsing (closes #3499)
- Fixed many item comparison issues (closes #999, #3669, #4053, #4054, #4163, #4278, #4292)
- Fix Skript not properly interacting with blocks below Y=0 (closes #4324)
- Fixes CSV storage not writing to the right temporary file (closes #4398)
- Fixed command cooldown cancelling not working after a delay (closes #4311)
- Removed target block cache to fix a bug of it (closes #4341)
- Fix NPE from connect effect execution with no online players (closes #4349)
- Fix looping a single value (thanks @Mr-Darth)
- Fix Skript's tests not working (closes #4439, thanks @AyhamAl-Ali)
- Fix timespan from date expression changing its argument (closes #4431, thanks @AyhamAl-Ali)
- Fix Skript attempting to parse a hex chat code when not supported (closes #3906, thanks @AyhamAl-Ali)
- Fix an error specific to 1.18 (closes #4466)
- Fix some missing event values for pickup events
- Fixed an NPE with parsing sections (closes #4473)
- Fixed an error with strings containing a closing bracket in function calls (closes #4487)
- Fix an item duplication issue with the tool expression and bucket filling (closes #4415, thanks @AyhamAl-Ali)
- Fix uncoloured string expression removing the wrong things (closes #3787, thanks @AyhamAl-Ali)
- Fix script is loaded condition throwing exception in effect commands (closes #4467, thanks @AyhamAl-Ali)
Additions / improvements
- Updated list of authors in the plugin file
- Added the spawn effectsection (closes #2403)
- Added world support to the chunk of expression (closes #4215, thanks @TUCAOEVER)
- Switched to pattern compiling instead of pattern interpreting
- Added modified attribute value expression (closes #4171, thanks @AyhamAl-Ali)
- Add victim support to the projectile hit event (closes #3746, thanks @Mr-Darth)
- Improved the localization system (closes #136, #1359, #2585, #2890, #3859, #4155, #4233)
- Added a converter from inventory to inventory type
- Updated Korean translations (thanks @AlphaKR93)
- Allow past form of the damage cause expression (closes #4347)
- Remove 'Numeric ids are not supported anymore' error (closes #4371)
- Added expression to get indices sorted by their corresponding values (closes #3446, thanks @bluelhf)
- Add middle of location expression (thanks @AyhamAl-Ali)
- Improve formatting of
/skript info
command (thanks @AyhamAl-Ali) - Add entity has potion condition (thanks @AyhamAl-Ali)
- Add a tab completer to the skript command (closes #3531, thanks @AyhamAl-Ali)
- Expand timespans to support weeks, months and years (closes #2220, thanks @AyhamAl-Ali)
- Add entity in liquid condition (closes #4180, thanks @AyhamAl-Ali)
- Add hostname expression for connect event (closes #3854, thanks @AyhamAl-Ali)
- Add world with name expression (closes #3971, thanks @AyhamAl-Ali)
- Add the name to a variable's debug string (closes #4294)
- Add more info to the string form of a location (thanks @AyhamAl-Ali)
- Add advanced formatting support to broadcast effect (closes #4156)
- Add an error when a region can't be found (thanks @AyhamAl-Ali)
- Adds support for 3D biomes
- Improve world height support
- Add 1.18 biomes (thanks @AlphaKR93)
- Reverse the checking order of
ParserInstance#getCurrentSection
(closes #4446, thanks @Olyno) - Add attack cooldown expression (closes #4105, thanks @AyhamAl-Ali)
- Reformatted parsing output (closes #3505, thanks @AyhamAl-Ali)
The docs will be updated with the new changes soon.
⭐️ Organization Stuff
End of 1.12 support
After a lot of discussion, we have decided to drop support for 1.12 and lower, as it stops us from adding a lot of features and focusing on other parts of Skript. 2.6.x
will be the last version working with 1.12 and lower. Security patches and other kind of fixes might be ported to this version, but keep in mind that features won't be added.
For addon developers
- We've switched to a new maven repository for Skript:
https://repo.skriptlang.org/releases
! Read more about it in #4506. - We've removed the method
Parser#getVariableNamePattern
, see the full changelog above for more info. - Introducing parse tags, like parse marks but better! Read more about them here.
- Added
SkriptEvent#getEventClasses
so a SkriptEvent has control over which event class the code is parsed with, see #4195). - (same as in 2.6) Due to the merge of #3924, many addons might be broken by this release. If you want to make them compatible, you may use SkriptAddonPatcher or its plugin version.
We're moving!
Another thing to note for addon developers and people who wish to contribute to the project, we have moved the main discussion area to the skUnity discord. While Skript-chat was good enough we need to reflect our rapidly growing community's needs and we will achieve this by taking it to the largest Skript community in place.
This doesn't mean skUnity documentation/forums are handled by the SkriptLang organization as they take part of their own service. We'll still maintain our own documentation at https://skriptlang.github.io/Skript and support any other services such as SkriptHub/Skript-MC to continue taking part of this community!
As always, if you encounter any issues please report them at https://github.com/SkriptLang/Skript/issues.
If you have any ideas or input for the future development of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
2.6 is finally here
⭐️ Changes
Because the full changelog is quite long, we've put it at the bottom of this release. Here are the most important changes of this release:
Minecraft 1.17 support
Skript now supports 1.17, including item and block aliases, entities, most particles and biomes.
Dynamic enum support for aliases.
This will improve the compatibility with platforms such as Magma or Mohist, although they remain unsupported.
For addon developers: the Section API
This API allows addon developers to create their own sections, like the loop or conditional sections in Skript.
Fixed various parsing issues
This includes Skript's math order, issues with string expressions, issues using variables within variables and issues with quotes within expressions in strings or variables.
Full changelog
Additions
- New event value to the server load/stop and script load/unload events
- Event value to get the recipe key in craft events
- Past world and location event values in teleportation events
- New getter for the current SkriptEvent in ScriptLoader
- Bring back the correct usage message
- Inventory type support to the open inventory effect
- Add missing documentation to the launch firework effect
- Add
lower than
as an option forsmaller than
in the comparison condition - Add
on leave
as an option for the quit event - Automatic module name for modules in Java 9+
- Dynamic enum support for aliases
This makes platforms such as Magma or Mohist more compatible but they're not yet supported by our project.
- Command info and all commands expressions
- Add condition to check if a command is a script command
- Rework of visual effects
The RGB literal has been changed from
RED: %integer%, GREEN: %integer%, BLUE: %integer%
to(rgb|RGB) %integer%, %integer%, %integer%
Color support has been added to the note particle effectnote [(of|with) [colo[u]r] %number%]
- Improve the string output of a block to include more helpful information
- Add support for any object, not just strings, to be sent in the message and broadcast effects
- Add a chat code for font support (
font, f
, example:<font:uniform>uniform text
) - Add per-event priority
Event priorities can be read about here: EventPriority
For most users, you will not need to worry about this. However, it is useful in cases where you want to be sure that
Skript is determining the outcome of the event. Keep in mind that LOWEST priority events are called first and MONITOR priority events called last.
To change the event priority of a listener, addwith priority <event priority>
to the end of the event, before:
.
- The
log player commands
value in the config is now marked asfalse
by default, as servers already default to logging command usage - Add an entity move event. Please note that this event may cause performance impacts. Be sure to read the event's documentation before usage
- Add a condition to check whether a plugin is enabled or disabled
- Add creation of temporary aliases when aliases for materials are missing
If you were missing an alias for
minecraft:basalt
, the aliasbasalt
(plural form just hass
on the end) would be created.
- Display the name of the function involved in a nonexistent function warning
- Updated the aliases for 1.17
- Add support for using BlockData in the block events
- Add an expression to determine the hardness of a block
- Merge ExprTool with ExprOffTool
Section API
- This release adds a long-awaited Section API. Many addon developers are familiar with the somewhat hacky sections provided by Tuke_Nuke (we are of course still grateful to have had this!) Addon developers are welcome to upgrade their addons to use this new system, along with providing feedback, suggestions, and reporting any issues you may find. There is no official tutorial for this API yet, but you can look at the Javadocs for Section and EffectSection, and you may find it useful to reference the existing sections in the sections package, or PRs #4020 and #4147.
- Removed JUnit tests as we have a better testing system now
- Add 1.17 features
Please note that the
dust_color_transition
andvibration
particles are currently missing and will be added in a future update.
- Only print stacktrace in debug mode for missing blockstates
- Added a new type of conditional:
parse if conditional
This condition is just like the
if statement
, but it is prefixed with the wordparse
. If the condition does not pass in aparse if statement
, the code in its section will not be loaded. Example:on load: parse if plugin "SkBee" is enabled: # SkBee addon stuff here
- Added a new type of while loop:
do while loop
This is just like the while loop, but it will always run at least one time. Example:
on load: set {_x} to 0 while {_x} > 5: add 1 to {_x} # {_x} = 0 set {_x} to 0 do while {_x} > 5: add 1 to {_x} # {_x} = 1
- Added an expression to get the last color of a string
- Added support to get and set the name of blocks (chests, hoppers, etc.)
- Documentation site improvements
- Added missing aliases and improved upon current groupings
Fixes
- Added spawn reasons to german locale
- Apply new line literal correctly in lore
- Remove dependency warning from Bukkit due to GriefPrevention
- Correct encoding of the config.sk file
- Overall cleanup urls in documentation and build scripts
- Cleanup and update of gradle to 6.8
- Made PreScriptLoadEvent asynchronous when necessary
- Call getter of world of location only once
- Update ceil function description in documentation
- Change pattern for offline player parsing
- Fix link to contribution.md in README
- Correct typo in the
applied enchantments
effect documentation - Switch order of parameters in Noun's toString method
- Fix parsing of strings at the start and end of an expression
- Remove UnresolvedOfflinePlayer class
- Adapt example scripts to new versions
- Catch SOE in more places
- Handle cancellation of server command event properly
- Removed legacy projectile code
- Fix javadoc of SkriptColor
- Show right amount of loaded commands
- Correct error for raw name expression
- Handle null properly in last attacker expression
- Call damage event only once
- Handle teleportation properly in move event
- Update PatcherTool for Java 11+
- Blocks of region expression now properly returns the blocks inside the region
- Place bisected blocks properly
- Remove "advanced syntax" feature
- Expressions not always being converted when parsing
- Support for Java 12+
- Fix various issues with the difference expression
- Handle setting of world difficulty properly
- Properly handle expression conversion in expressions with dynamic return type
- Fix math order. Skript is now a better mathematician!
- Fix blocks in chunk expression returning a larger cuboid than expected
- Fix issues with expression parsing order
- Fix an issue where changing something to
<none>
was not functional - Fix variable names with numbers containing leading zeros
- Fix an issue where lore was incorrectly being changed on items
- Add missing entries/parts in lang files
- Fix quote parsing. This change allows singular double quotes to be used in variables and (expressions within strings), instead of doubled double quotes
- Fix expression parsing not checking plurality in some cases
- Fix issues with functions not being called in some cases
- Fix an issue where list variables returned nothing/the incorrect size
- Fix an issue where dyeing potions and map did not work
- Fix more issues with item comparisons
This fix also adds a new expression, ExprPlain. A plain item is an item with no modifications. It can be used to convert items to their default state or to match with other default items. This is to provide a replacement for using
if player's tool is a diamond named ""
(you would instead useif the player's tool is a plain diamond
)
- Fix gliding not working on livingentities
- Fix issues with the return types of some list related expressions
- Fix function parsing when multiple functions are used together/compared (e.g.
myFunction() + otherFunction()
) - Fix an issue where converting a double chest to a string caused an error
- Fix an issue where the named item expression caused an error
- Fix setting multiple lists in one effect. Setting multiple lists in one effect will now set each of the lists to the given values
- Fix an issue with parsing aliases with custom JSON
- Fix any issues where Skript may have attempted to register a task while already disabled
- Fix an issue where enchantment checks were not sensitive to the enchantment's level
- Add a missing entry for the piglin zombification spawn reason (it is `piglin zombification)
- Concurrency updates to improve the AsyncEffect
- Fix an issue where EffDoIf would incorrectly stop the whole trigger
- Rework of the contains condition
NOTICE: This rework removes the following syntaxes:
[the] list [of] %objects% (doesn't|does not|do not|don't) contain %objects%
[the] list [of] %objects% contain[s] %objects%
(all|any|none) of %strings% contain[s] %strings%
- Fixed a memory leak with loops
- Fix not being able to set the world of a location
This change removes the vector yaw/pitch expression, it is now replaced by the normal yaw/pitch expression. This does mean that the word '...
The "Bugs Begone" Update
WARNING: This is the third beta release of Skript 2.6. It will likely contain some bugs, and it is not recommended to run these releases on a live/production server. If you choose to, please ensure you backup any important data beforehand.
NOTICE: After a lot of discussion, we have decided to drop support for 1.12 and lower, as it stops us from adding a lot of features and focusing on other parts of Skript. 2.6.x
will be the last version working with 1.12 and lower. Security patches and other kind of fixes might be ported to this version, but keep in mind that features won't be added.
NOTICE (as per Skript 2.6-alpha1): due to the merge of #3924, many addons might be broken by this release. If you want to make them compatible, you may use SkriptAddonPatcher or its plugin version
It's been a bit since our last release, but the wait has (hopefully) been worth it. This release includes many bug fixes, with even more coming in the near future.
You may have noticed some changes around here too. Recently, we updated our issue templates. Our goal is to provide a better user experience through detailed forms and make triage easier for our team by making sure necessary details are included in user reports.
We have also restyled our documentation site! A big thanks to @AyhamAl-Ali for this awesome redesign.
As always, if you encounter any issues please report them at https://github.com/SkriptLang/Skript/issues.
If you have any ideas or input for the future development of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
Time for the change log!
Additions
- Added an expression to get the last color of a string (#4136, closes #4077)
- Added support to get and set the name of blocks (chests, hoppers, etc.) (#4182)
- This release includes some major improvements to the Section API introduced in the previous beta. Notably, this includes the introduction of EffectSections. Full details can be found at #4147.
- Documentation site improvements (#3935, closes #1598, #4072, #4011, #2705, #1338, #2425) (thanks @AyhamAl-Ali)
- Added missing aliases and improved upon current groupings (#4283, closes #3688, #3671)
Fixes
- Fixed a bug where conditional sections could incorrectly run (#4175)
- Fixed a bug where the magma damage cause didn't work (#4204, closes #4203)
- Fixed a bug where the WorldGuard 6 module only worked when running Java 16 (#4214, closes #4211)
- Fixed a bug where the raw name expression could include extraneous dashes (#4193, closes #4160)
- Fixed false positive 32-bit warnings that could occur (#3813. closes #3805) (thanks @TheDGOfficial)
- Improved handling of numbers internally (#4095, closes #1602, #2326)
- Fixed an issue with rabbit entity comparisons (#4256, closes #4040)
- Skript will now ignore hidden files and folders in more cases (#4135, closes #3910)
- Fixed an issue with getting blocks using directions (#4258, closes #3876)
- Fixed an error that could occur when using players and the console together (for example, sending messages to both) (#4259, closes #3863)
- Skript will now handle and log errors relating to illegal color changes of blocks (#4262, closes #2931)
- Fixed an issue where offline players that haven't joined the server would print as
null
in string form (#4264, closes #2458) - Fixed an issue with quote parsing in command entries (#4267, closes #1679)
- Fixed an issue where the me expression would not properly work for players (#4265, closes #2710)
With this change, the
me
expression will no longer work in console. To refer to the console using effect commands, simply useconsole
.
- Fixed several issues with lenient link parsing (#4271, closes #2283)
- Further improvements to the contains condition (#4273)
- Fixed chat color stripping issues when used with expressions/variables (#4277, closes #2319, #4276)
- Fixed an error that could occur in the 'x of' expression (#4261, #4298, closes #3814, #4296)
- Fixed several issues with the aliases (#4283, closes #4055, #3869, #3773, #4206)
- Fixed dropping in a cancelled death event (#4290, closes #4288)
- Fixed an issue where the experience event would incorrectly fire or return an incorrect amount of experience (#4291, closes #3661, #2915)
- Fixed an issue with getting blocks with directions (#4280, closes #1544)
- Fixed ambiguity between stepping events and possible accidental triggers for the move on event (#4270, closes #2555)
- Fixed using math with the element expression (#4268, closes #1464)
- Fixed an issue where the location function would return
<none>
when a world wasn't provided, even though a world is not required (#4238, closes #4216)
Please note that if a world is not provided to the location function, the default world will be used.
The Smallest Update Ever
WARNING: This is the second beta release of Skript 2.6. It will likely contain some bugs, and it is not recommended to run these releases on a live/production server. If you choose to, please ensure you backup any important data beforehand.
NOTICE: After a lot of discussion, we have decided to drop support for 1.12 and lower, as it stops us from adding a lot of features and focusing on other parts of Skript. 2.6.x
will be the last version working with 1.12 and lower. Security patches and other kind of fixes might be ported to this version, but keep in mind that features won't be added.
NOTICE (as per Skript 2.6-alpha1): due to the merge of #3924, many addons might be broken by this release. If you want to make them compatible, you may use SkriptAddonPatcher or its plugin version
Welcome back to yet another release! This update may be super small but if fixes a pretty major bug with variables.
FIXED:
- Fixed a critical bug with nested variables not working (closes #4143)
The 1.17 Update
WARNING: This is the first beta release of Skript 2.6. It will likely contain some bugs, and it is not recommended to run these releases on a live/production server. If you choose to, please ensure you backup any important data beforehand.
NOTICE: After a lot of discussion, we have decided to drop support for 1.12 and lower, as it stops us from adding a lot of features and focusing on other parts of Skript. 2.6.x
will be the last version working with 1.12 and lower. Security patches and other kind of fixes might be ported to this version, but keep in mind that features won't be added.
NOTICE (as per Skript 2.6-alpha1): due to the merge of #3924, many addons might be broken by this release. If you want to make them compatible, you may use SkriptAddonPatcher or its plugin version
Welcome back to yet another release!
We know it's been a while, but we are still working hard to bring brand new features and fixes to Skript. This update brings support for Minecraft 1.17 and all of its new features. As such, the aliases have been updated to include the new 1.17 blocks and items. You can see the full list of changes below.
As always, if you encounter any issues please report them at https://github.com/SkriptLang/Skript/issues.
If you have any ideas or input for the future development of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.
Anyways, with that out of the way, off to the change log!
Additions
- Add creation of temporary aliases when aliases for materials are missing (#4034)
If you were missing an alias for
minecraft:basalt
, the aliasbasalt
(plural form just hass
on the end) would be created.
- Display the name of the function involved in a nonexistent function warning (#3978)
- Updated the aliases for 1.17 (SkriptLang/skript-aliases#69)
- Add support for using BlockData in the block events (#4033)
- Add an expression to determine the hardness of a block (#4058)
- Merge ExprTool with ExprOffTool (#4002) (should fix documentation issues too)
Section API (Experimental)
- This release adds a long-awaited Section API. Many addon developers are familiar with the somewhat hacky sections provided by Tuke_Nuke (we are of course still grateful to have had this!) Addon developers are welcome to upgrade their addons to use this new system, along with providing feedback, suggestions, and reporting any issues you may find. There is no official wiki/tutorial for this API yet, but you may find it useful to reference the existing sections at https://github.com/SkriptLang/Skript/tree/master/src/main/java/ch/njol/skript/sections (#4020)
Please note that the
dust_color_transition
andvibration
particles are currently missing and will be added in a future update.
- Only print stacktrace in debug mode for missing blockstates (#4124)
- Added a new type of conditional:
parse if conditional
(#4121, closes #2037, #1449)
This condition is just like the
if statement
, but it is prefixed with the wordparse
. If the condition does not pass in aparse if statement
, the code in its section will not be loaded. Example:on load: parse if plugin "SkBee" is enabled: # SkBee addon stuff here
- Added a new type of while loop:
do while loop
(#4122)
This is just like the while loop, but it will always run at least one time. Example:
on load: set {_x} to 0 while {_x} > 5: add 1 to {_x} # {_x} = 0 set {_x} to 0 do while {_x} > 5: add 1 to {_x} # {_x} = 1
Fixes
- Fix not being able to set the world of a location (#4043, closes #2709)
- Fix issues with teleporting asynchronously (#4026, closes #3816)
This also [re]adds the ability to teleport synchronously by prefacing the effect with
force
(e.g.force teleport the attacker to the victim
)
Please note that the keyword 'force' indicates that the effect will not be delayed. This may cause lag spikes or server crashes when teleporting entities to unloaded chunks.
- Fix an issue with using 'or' in CondContains (#4048, closes #4046)
- Fix an issue with variable parsing in variables/effects (#3966, closes #837) (hooray for this fix!)
- Fix issues with the damage effect (#4003, closes #3997)
Please note that this fix removes the ability to damage an entity with a custom damage cause. This only worked because of a bug that has been fixed for a long time. If you still wish to use a custom damage cause (retain this functionality) you can use the last damage cause expression (https://github.com/SkriptLang/Skript/blob/master/src/main/java/ch/njol/skript/expressions/ExprLastDamageCause.java - https://skriptlang.github.io/Skript/expressions.html#ExprLastDamageCause)
- Fix an issue with setting the yaw or pitch of a location stored in a variable (#4064)
- Fix an issue with errors on server stop by disabling scripts before addons are disabled (#4092)
- Removed some older code that caused more issues than it solved (#4101)
- Removed some older commented out code and fixed potential logging issues (#4104)
- Added config options to disable the registration of hooks (#4093)
Addons may also choose to disable hooks in
JavaPlugin#onLoad
by callingSkript#disableHookRegistration
. They may also check whether a hook is enabled throughSkript#isHookEnabled
.
The "Uh, That's Hot" Update
WARNING: This is the first public alpha release of Skript 2.6. It will likely contain some bugs, and it is not recommended to run these releases on a live/production server. If you choose to, please ensure you backup any important data beforehand.
NOTICE: After a lot of discussion, we have decided to drop support for 1.12 and lower, as it stops us from adding a lot of features and focusing on other parts of Skript. 2.6.x
will be the last version working with 1.12 and lower. Security patches and other kind of fixes might be ported to this version, but keep in mind that features won't be added.
NOTICE due to the merge of #3924, many addons might be broken by this release. If you want to make them compatible, you may use SkriptAddonPatcher or its plugin version
It's been 5 months since the last release, however this doesn't mean we haven't progressed at all during this time. There were some issues on the administrative aspect of the project which have just been recently resolved, hence why there's a lack of updates recently and we sincerely apologize for that. That being said, I'll start with the changes in the organization to begin with this release and then introduce the changelog for the first alpha of 2.6! Stay tuned.
The family is growing
I am glad to announce two new team members to the organization, @TPGamesNL who has been greatly contributing to the project with amazing patches and @TheLimeGlass who has always been a mindful part of the overall community and has also made great contributions in the past.
We're moving!
Another thing to note for addon developers and people who wish to contribute to the project, we have moved the main discussion area to the skUnity discord. While Skript-chat was good enough we need to reflect our rapidly growing community's needs and we will achieve this by taking it to the largest Skript community in place.
This doesn't mean skUnity documentation/forums are handled by the SkriptLang organization as they take part of their own service. We'll still maintain our own documentation at https://skriptlang.github.io/Skript and support any other services such as SkriptHub/Skript-MC to continue taking part of this community!
All of that done, now let's go through the changelog.
Additions
- New event value to the server load/stop and script load/unload events (#3634)
- Event value to get the recipe key in craft events (#3632)
- Past world and location event values in teleportation events (#3679, closes #3641, thanks to @Romitou)
- New getter for the current SkriptEvent in ScriptLoader (#3766)
- Bring back the correct usage message (#3777)
- Inventory type support to the open inventory effect (#3765, closes #3677)
- Add missing documentation to the launch firework effect (#3704)
- Add
lower than
as an option forsmaller than
in the comparison condition (#3712, thanks to @TheDGOfficial) - Add
on leave
as an option for the quit event (#3799, closes #3789, thanks to @TheDGOfficial) - Automatic module name for modules in Java 9+ (#3897, thanks to @TheDGOfficial)
- Dynamic enum support for aliases (closes #2020, thanks to @InkerBot)
This makes platforms such as Magma or Mohist more compatible but they're not yet supported by our project.
- Command info and all commands expressions (#3234, closes #3553, thanks to @deltarays)
- Add condition to check if a command is a script command (#3925, thanks @AyhamAl-Ali )
- Rework of visual effects (#3939, closes #3859, #571, #1901)
The RGB literal has been changed from
RED: %integer%, GREEN: %integer%, BLUE: %integer%
to(rgb|RGB) %integer%, %integer%, %integer%
Color support has been added to the note particle effectnote [(of|with) [colo[u]r] %number%]
- Improve the string output of a block to include more helpful information (#3946, closes #3315)
- Add support for any object, not just strings, to be sent in the message and broadcast effects (#3951, closes #3164)
- Add a chat code for font support (
font, f
, example:<font:uniform>uniform text
) (#3877, closes #3745) - Add per-event priority (#3852, closes #197)
Event priorities can be read about here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/EventPriority.html
For most users, you will not need to worry about this. However, it is useful in cases where you want to be sure that
Skript is determining the outcome of the event. Keep in mind that LOWEST priority events are called first and MONITOR priority events called last.
- The
log player commands
value in the config is now marked asfalse
by default, as servers already default to logging command usage (#3972, closes #3855) - Add an entity move event. Please note that this event may cause performance impacts. Be sure to read the event's documentation before usage (#3969, closes #716)
- Add a condition to check whether a plugin is enabled or disabled (#3973)
Fixes
- Added spawn reasons to german locale (#3982, closes #3857, thanks to @bilektugrul)
- Apply new line literal correctly in lore (#3636, closes #3544, thanks to @mochi)
- Remove dependency warning from Bukkit due to GriefPrevention (#3716, thanks to @TheDGOfficial)
- Correct encoding of the config.sk file (#3720, thanks to @TheDGOfficial)
- Overall cleanup urls in documentation and build scripts (#3714, thanks to @TheDGOfficial)
- Cleanup and update of gradle to 6.8 (#3768, thanks to @Romitou)
- Made PreScriptLoadEvent asynchronous when necessary (#3324, thanks to @OIyno)
- Call getter of world of location only once (#3783)
- Update ceil function description in documentation (#3811, closes #3806)
- Change pattern for offline player parsing (#3764, closes #3742)
- Fix link to contribution.md in README (#3637, thanks to @mochi)
- Correct typo in the
applied enchantments
effect documentation (#3591, thanks to @MrScopes) - Switch order of parameters in Noun's toString method (#3740, thanks to @TheDGOfficial)
- Fix parsing of strings at the start and end of an expression (#3749, closes #719, #3490)
- Remove UnresolvedOfflinePlayer class (#3827, closes #3036, #3672)
- Adapt example scripts to new versions (#3725, thanks to @TheDGOfficial)
- Catch SOE in more places (#3798, closes #3797, thanks to @TheDGOfficial)
- Handle cancellation of server command event properly (#3724, thanks to @TheDGOfficial)
- Removed legacy projectile code (#3713, thanks to @TheDGOfficial)
- Fix javadoc of SkriptColor (#3700)
- Show right amount of loaded commands (#3711)
- Correct error for raw name expression (#3693)
- Handle null properly in last attacker expression (#3690, closes #3663)
- Call damage event only once (#3719, closes #3715)
- Handle teleportation properly in move event (#3710, thanks to @TheDGOfficial)
- Update PatcherTool for Java 11+ (#3705)
- Blocks of region expression now properly returns the blocks inside the region (https://github.com/SkriptLa...
The “We’ll Do Better This Time” Update
While Skript 2.5.2 brought some lovely new features, it also brought a couple big bugs along for the ride. Our goal with this update was to squash those pesky bugs and provide a more stable release.
This may be a small update, but it’s going to take care of some things that needed some attention.
FIXED:
- Fixed an issue with substring expression throwing errors (closes #3585)
- Fixed an issue with the offhand tool in the bucket event returning the main hand (closes #3584)
- Fixed an issue with getting the event-location in some events (closes #3622)
- Fixed an issue with local variables being reset after using the teleport effect (closes #3605)
- Fixed an issue with debug mode not being disabled after changing and reloading config (thanks @TPGamesNL)
- Fixed an issue with a change in an internal class which caused an addon or two to not load (closes #3624)
- Fixed an issue with the
blocks within
expression returning a smaller cuboid than expected (closes #3615) - Fixed an issue with the location function throwing an error when the world is missing, it'll now fall back to default main world of the server (closes #3597, #3455, #1465)
Don’t worry, its not all serious, we did add a bunch of new stuff too
ADDED:
- Added support for XP drops in the block break event
- Added
entity portal
event which is called when an entity uses a portal
Oh, never mind, it was just the two.
Enjoy!
Another Bug Fix Update
This update brings some much needed bug fixes as well as some new features. As always it is recommended to backup any important data before update. Also it is advised to do some testing on your server before going live with an update.
FIXED:
- Fixed an issue with the decimals between expression returning incorrect values (thanks @bluelhf, closes #3494)
- Fixed an issue with item types always returning the last known alias (closes #3511)
- Fixed an issue with changers in enchantment level expression (thanks @Mr-Darth)
- Fixed an issue with slow variable saving of offline players (thanks @TheDGOfficial)
- Fixed issues with book author/title expressions
- Fixed an issue with past gamemode not working in gamemode change event
- Fixed an issue with async effect not being triggered when last in trigger (thanks @JRoy)
ADDED:
- Added a future event-entity to the item merge event (this represents the entity the item is merging into)
- Added support for steerable entities in equip effect
- Added some missing visual effects
- Added regex support to the split expression (thanks @deltarays)
- Added whitelist expression and condition (thanks @deltarays)
- Added is interactable condition (thanks @ankoki-dev)
- Added a matches condition with regex support (thanks @deltarays)
- Added character at to substring expression (thanks @Mr-Darth)
- Added falling block landing event
- Added support for event-direction in projectile hit event (thanks @Name531)
- Added support for potion effects, including a new type, expression, and updates to current potion effect and expression
- Added support for throwable projectile items in item of expression (thanks @Mr-Darth)
- Added support for setting block data in the block data expression
- Added support for Paper’s async teleport in the teleport effect (thanks @JRoy)
- Added optional sender to message effect
API:
- Improved public syntax information API (thanks @NickAcPT)
The "We Need More Stuff" Update
Skript 2.5.1 is a much larger update than we anticipated. Not only does it fix a lot of bugs, it also brings a few handfuls of new features. With that said, new features, and sometimes bug fixes, may also create new bugs. Please be sure to backup any important data before updating to this version. And as usual please report any bugs on our Issue Tracker
ADDED:
- Added a condition for isOccluding (thanks @Mr-Darth)
- Added support for block data in the send block change effect
- Added expressions for arrow pierce and critical state (thanks @Mr-Darth)
- Added an expression for projectile bounce state (thanks @deltarays)
- Added support for locations, chunks and “within” (blocks cuboid) in blocks expression
- Added support for “:” in play sound effect to allow for using minecraft namespace (closes #3404)
- Added item mending event
- Added heal amount expression (thanks @Romitou, closes #3337)
- Added expressions for last attacker and last damage (thanks @deltarays)
- Added support for decimals between in ExprNumbers (thanks @bluelhf, closes #2601)
- Added an expression for generating a random UUID (thanks @Mr-Darth)
- Added support for non living entities in spawn event (closes #3120)
- Added support for multiple strings in CondStartsEndsWith (thanks @deltarays, closes #3312)
- Added an effect to force attack (thanks @OfficialDonut)
- Added an effect to make an entity swing their hand (thanks @OfficialDonut)
- Added expressions for minecart’s derailed velocity and speed (thanks @deltarays)
- Added an expression for sea level (thanks @Mr-Darth)
- Added an effect to open a book to a player (thanks @OfficialDonut)
- Added an arm swing event (thanks @Romitou, closes #3114)
- Added a condition to check if a block is passable (thanks @Mr-Darth)
- Added a condition to check if an item is a fuel (thanks @Mr-Darth)
- Added a condition to check for a normalized vector (thanks @BluBoy3ch0)
- Added an inventory pickup event (thanks @deltarays)
- Added an expression to get the drops of a block (thanks @deltarays)
FIXED:
- Fixed an issue with zombie pigmen/zombified piglin’s name returning with parenthesis (closes #3400)
- Fixed an issue with block variations in the send block change effect
- Fixed more issues with Visual Effects (closes #3379)
- Fixed a parsing issue with ExprAmount (closes #3333)
- Fixed an issue with cmd: with $ symbol not working (closes #2706)
- Fixed an issue with Json messages using <> not working (closes #3328)
- Fixed an issue with all items in inventory expression not returning the correct value in loops (closes #2340)
- Fixed an issue with adding multiple numbers to a single variable (closes #3198)
- Fixed some issues with damage cause comparisons (closes #3022)
- Fixed delay issues in force respawn player effect
- Fixed some issues with aliases deleting themselves internally (closes #2672)
- Fixed an issue with adding/setting/reparing multiple items in an inventory (thanks @OfficialDonut, closes #2989)
- Fixed an issue with comparing inventory slots and equipment slots matching when they shouldn’t (closes #3430)
- Fixed some issues with item comparisons (closes #3405)
- Fixed an issue with missing end rod visual effect and some typos in the lang file for visual effects
- Fixed an issue with light grey color not working properly on 1.9-1.11.2
- Fixed some issues with entity datas not sending their correct and/or full name when in a string
2.5 has finally arrived
I want to start off by extending a big thank you to everyone who helped with this update. Not only did our team do a lot of work, we had PLENTY of help from contributors. So thank you to everyone who helped make this update possible.
Below is a list of almost everything that was added/fixed/changed since 2.4.1. I left out issues which pertain to things that were broken along the way during the development of 2.5.
⭐️ Notable Additions
This update had a lot of new things added, but here are a few notable additions we thought you'd love to hear about.
BlockData
We added a blockdata type, as well as expression for getting block data. BlockData is very similar to how you would set a block with the vanilla Minecraft /setblock
command. This allows users to better customize blocks in the world, without having to struggle figuring out the aliases they need. For more info see the BlockData Type and BlockData Expression in the docs.
Skript Info Command
We added an info sub-command to the /skript
command which will provide links to docs and aliases, and also includes Skript version, server version as well as installed addons (including their versions and websites). This will be super helpful in the future, when a user is asking for help, rather than having to ask them a bunch of questions about versions, you can simply say "hey, could you please send me the output of /sk info
"
Minecraft 1.16
We added all of the Minecraft 1.16 related stuff, including item/block aliases, entities, enchantment (just one), particles and biomes. We also added support for 1.16's HEX text colors.
⭐️ Everything Else
- Added an effect and a condition for silencing entity sounds
- Added support for non-player entities to item pickup event
- Added location for block command senders
- Added recursive list size as an option to 'amount' expression
- Added an expression for toggling entity AI on and off
- Added an event for players propelling through air due to riptide enchantment
- Added a condition to check if entities are leashed
- Added more descriptive alternative syntax for 'blocking' condition
- Added an expression to get how long players have been online
- Added support for mooshroom variations
- Added an expression to get max durability of items
- Added different capitalization styles to 'case text'
- Added an effect and a condition for entity invulnerability
- Added syntaxes for Minecraft 1.14+ CustomModelData
- Added support for Paper's per-client view distance (not supported on all Paper versions)
- Added an expression to get all blocks destroyed by explosions
- Added a way to replace only first occurrance with replace effect
- Added an event value for selected hotbar button in inventory click events
- Added an event for armor changes
- Added support for taming entities
- Added an expression for counting characters in a string
- Added a way to convert unix timestamps to dates
- Added an event for sponge absorbing blocks
- Added support for item (tool or armor) damage
- Added an option to temp-ban players
- Added support for llamas in entity equip effect
- Added an expression to get/set number of arrows stuck in an entity
- Added an expression to get/set no damage ticks of entities
- Added support for creating fiery explosions within the explode effect
- Added syntax to replace existing potion effects
- Added syntax to get the entities in a chunk
- Added new line expression
- Added an effect and condition to change/check charged creepers
- Added some spawn reasons which were recently added to the Bukkit API
- Added explode creeper effect and ignition condition
- Added an expression to get all scripts, or just the enabled or disabled ones.
- Added a condition and expression for checking Redstone block power
- Added several syntaxes for enchanting events and their values
- Added Korean language support
- Added more preload functionality to the API for internal use and addon developers
- Added a ‘time since’ expression
- Added an expression for entity attributes
- Added an expression for entity fall distance
- Added several syntaxes relating to explosions
- Added syntaxes for world game rules
- Added the hit block event value to the on projectile hit event
- Added a heal reason type and expression to be used in the heal event
- Added a projectile collide event
- Added better handling of a stack overflow error
- Added an expression for first/last login of player
- Added a block fertilize event
- Added an effect to stop/restart the server
- Updated money expression to support offline player balances
⭐️ A few handfuls of bug fixes
- Fixed asterisks not being allowed in expressions in variable names
- Fixed flickering fireworks not working
- Fixed 'all foxes' not actually referring to all foxes
- Fixed exceptions caused by passing invalid arguments to functions
- Fixed player-specific weather not being always set correctly
- Fixed random fish spawning not working
- Fixed some types not being parseable
- Fixed comparisons between entities and entity types with similarly named aliases
- Fixed parsing of overlapping syntaxes in comparisons
- Fixed numerous conditions, expressions, and events using ItemStack instead of ItemType
- Fixed exception error in replace effect
- Fixed damage effect not showing damage
- Fixed some tree types not working in grow tree effect
- Fixed experience spawn event firing more than once after script reloads
- Fixed an issue with damaging items throwing console errors
- Fixed an issue with reloading functions throwing errors
- Fixed an issue with the item damage event missing an event-item value
- Fixed an issue with
final damage
returning the same value asdamage
- Fixed an issue where setting a block would always set it to the default block state
- Fixed an issue with retrieving inventory names
- Fixed an issue with setting the player's tab list name
- Fixed an issue with spawning thrown potions
- Fixed an issue with spawning a dropped item of a specific item type
- Fixed an issue with level progress expression throwing errors
- Fixed an issue with teleporting ignoring yaw and pitch
- Fixed an issue with event-items
- Fixed an issue with default values in damage events
- Fixed an issue with event-value time states
- Fixed an issue with villager data in legacy versions causing issue to last spawned entity syntax
- Fixed an issue with ‘show inventory’ expression showing the wrong inventory
- Fixed a bug with
%number% of %itemtype%
expression - Fixed an issue with the
is between
condition not comparing when the first number is larger than the latter - Fixed an issue with not being able to parse experience
- Fixed an issue with filters throwing console errors
- Fixed an issue with some block datas not setting (ie: snow layers)
- Fixed an issue with setting item amount of inventory slots
- Fixed an issue with furnace slot expression not accounting for smoker and blast furnace
- Fixed an issue with not being able to compare some entities with a baby entity
- Fixed an issue with “item crack” particle not working
- Fixed an issue with custom inventories not actually returning an inventory
- Fixed an issue with data value expression not working on 1.12.2 and below
- Fixed an issue with
chunk is loaded
condition forcing chunks to load therefor always returning true - Fixed an issue with some entities returning their super type
- Fixed an issue with viewers of inventory expression only returning a single value
- Fixed some issues with visual effects, namely offset issues and coloured dust particle issues
- Fixed an issue with the soft depends in the plugin.yml
- Fixed an issue with FAWE’s WorldGuard not working
- Fixed an issue with event-slot throwing errors when clicking outside of an inventory
- Fixed an issue with spawn egg aliases not working in 1.12.2