Skip to content

Releases: SkriptLang/Skript

0a18a02
Compare
Choose a tag to compare

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

2c0b88b
Compare
Choose a tag to compare

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 to 10 before)

  • Fixed issues with the saturation expression (#4554, closes #4552)

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, closes #4610) (Thanks @sovdeeth)
  • Improved the validation checks for hex codes (#4628)
  • Added an error for when hooks are disabled after Skript has loaded (#4702)
  • Added a player event value to the item drop event (#4615)
  • Updated skript-aliases. This mainly just adds the otherside music disc introduced in 1.18 (#4742) (click here to see the full changes)

⭐️ Thanks for Reading

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.

e43c37e
Compare
Choose a tag to compare

⭐️ 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 method Parser#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.

683e530
Compare
Choose a tag to compare

⭐️ 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 for smaller 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 effect note [(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, add with priority <event priority> to the end of the event, before :.

  • The log player commands value in the config is now marked as false 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 alias basalt (plural form just has s 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 and vibration 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 word parse. If the condition does not pass in a parse 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 use if 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 'vector' was removed from the syntax, so if you use this syntax, you may have to change your scripts to adjust for this.

  • Fix issues with teleporting asynchronously

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 variable parsing in variables/effects
  • Fix issues with the damage effect

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.

  • Fix an issue with setting the yaw or pitch of a location stored in a variable
  • Fix an issue with errors on server stop by disabling scripts before addons are disabled
  • Removed some older code that caused more issues than it solved
  • Added config options to disable the registration of hooks

Addons may also choose to disable hooks in JavaPlugin#onLoad by calling Skript#disableHookRegistration. They may also check whether a hook is enabled through Skript#isHookEnabled.

  • Fix replace effect escaping characters when not needed
  • Fix an issue where EffContinue would cause a stack overflow
  • Fix an issue where the slime chunk condition was not always correct
  • Fixed a bug where the magma damage cause didn't work
  • Fixed a bug where the raw name expression could include extraneous dashes
  • Fixed false positive 32-bit warnings that could occur
  • Improved handling of numbers internally
  • Fixed an issue with rabbit entity comparisons
  • Skript will now ignore hidden files and folders in more cases
  • Fixed an issue with getting blocks using directions
  • Fixed an error that could occur when using players and the console together (for example, sending messages to both)
  • Skript will now handle and log errors relating to illegal color changes of blocks
  • Fixed an issue where offline players that haven't joined the server would print as null in string form
  • Fixed an issue with quote parsing in command entries
  • Fixed an issue where the me expression would not properly work for players

With this change, the me expression will no longer work in console. To refer to the console using effect commands, simply use console.

  • Fixed several issues with lenient link parsing
  • Fixed chat color stripping issues when used with expressions/variables
  • Fixed an error that could occur in the 'x of' expression
  • Fixed several issues with the aliases
  • Fixed dropping in a cancelled death event
  • Fixed an issue where the experience event would incorrectly fire or return an incorrect amount of experience
  • Fixed an issue with getting blocks with directions
  • Fixed ambiguity between stepping events and possible accidental triggers for the move on event
  • Fixed using math with the element expression

⭐️ Organisation 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.

Breaking addons

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.

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!

Documentation

We have restyled our documentation site! A big thanks to @AyhamAl-Ali for this awesome redesign. You can look at the new documentation site here.

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.

13dd0f1
Compare
Choose a tag to compare
Pre-release

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 use console.

  • 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.

6b5ad08
Compare
Choose a tag to compare
Pre-release

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)
7a130c6
Compare
Choose a tag to compare

The 1.17 Update

Pre-release
Pre-release

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 alias basalt (plural form just has s 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)

  • Removed JUnit tests as we have a better testing system now (#4091)
  • Add 1.17 features (#4070)

Please note that the dust_color_transition and vibration 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 word parse. If the condition does not pass in a parse 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 calling Skript#disableHookRegistration. They may also check whether a hook is enabled through Skript#isHookEnabled.

  • Fix replace effect escaping characters when not needed (#4110, closes #1226)
  • Fix an issue where EffContinue would cause a stack overflow (#4111, closes #4096)
  • Fix an issue where the slime chunk condition was not always correct (#4115, closes #4106)
c3583ca
Compare
Choose a tag to compare
Pre-release

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 for smaller 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.

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 effect note [(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 as false 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 use if 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%
  • Fixed a memory leak with loops (#3865, closes #2337)
Compare
Choose a tag to compare

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!

7f1d0d2
Compare
Choose a tag to compare

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)