The "Uh, That's Hot" Update
Pre-releaseWARNING: 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 (#3708, closes #3707)
- Place bisected blocks properly (#3703, closes #2473)
- Remove "advanced syntax" feature (#3709, closes #367)
- Expressions not always being converted when parsing (#3774, closes #3695, #3782)
- Support for Java 12+ (#3726, thanks to @TheDGOfficial)
- Fix various issues with the difference expression (#3628, closes #575, #661, #994, #1001, #2302)
- Handle setting of world difficulty properly (#3921, closes #3834, thanks to @AyhamAl-Ali)
- Properly handle expression conversion in expressions with dynamic return type (#3930, closes #3905)
- Fix math order. Skript is now a better mathematician! (#3736, closes #535)
- Fix blocks in chunk expression returning a larger cuboid than expected (#3941)
- Fix issues with expression parsing order (#3942)
- Fix an issue where changing something to was not functional (#3940)
- Fix variable names with numbers containing leading zeros (#3929, #3903)
- Fix an issue where lore was incorrectly being changed on items (#3928, closes #3901)
- Add missing entries/parts in lang files (#3927)
- Fix quote parsing. This change allows singular double quotes to be used in variables and (expressions within strings), instead of doubled double quotes (#3762, closes #590)
- Fix expression parsing not checking plurality in some cases (#3772, closes #946)
- Fix issues with functions not being called in some cases (#3841, closes #3687, #2384, #3660)
- Fix an issue where list variables returned nothing/the incorrect size (#3953, closes #2600)
- Fix an issue where dyeing potions and map did not work (#3962, closes #3947)
- Fix more issues with item comparisons (#3960. closes #3618)
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 (#3893, closes #3891, thanks @AyhamAl-Ali)
- Fix issues with the return types of some list related expressions (#3952, closes #3492)
- Fix function parsing when multiple functions are used together/compared (e.g.
myFunction() + otherFunction()
) (#3862, closes #1532, #2261, #2416, #3046) - Fix an issue where converting a double chest to a string caused an error (#3822, closes #3733)
- Fix an issue where the named item expression caused an error (#3815, closes #2347)
- Fix setting multiple lists in one effect. Setting multiple lists in one effect will now set each of the lists to the given values (#3823, closes #1649)
- Fix an issue with parsing aliases with custom JSON (#3839, closes #3776)
- Fix any issues where Skript may have attempted to register a task while already disabled (#3861, closes #993)
- Fix an issue where enchantment checks were not sensitive to the enchantment's level (#3810, closes #3664)
- Add a missing entry for the piglin zombification spawn reason (it is `piglin zombification) (#3858, closes #3857, thanks @TheDGOfficial)
- Concurrency updates to improve the AsyncEffect (#3817, closes #1817)
- Fix an issue where EffDoIf would incorrectly stop the whole trigger (#3989, closes #3983)
- Rework of the contains condition (#3934, closes #3014, #3874)
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%