Skip to content

Releases: SkriptLang/Skript

Patch 2.7.1

01 Oct 19:36
8c7fec0
Compare
Choose a tag to compare

Skript 2.7.1

In this release, we have patched many of the current known issues of Skript 2.7.0. We have also added support for Minecraft 1.20.2 and most its aliases.

Thank you all again for your continued support.

Happy Skripting!

Changelog

Bug Fixes

  • #5658 Fixed keep inventory in a death event and related issues
  • #5952 Fixed bugs with removing from vector length, setting components of multiple vectors, and issues when running with debug verbosity.
  • #5965 Fixed event values in chunk enter event
  • #5966 Fixed the registration (and logging) of Skript commands
  • #5997 Fixed potion durations being locked to 15 seconds
  • #6004 Added missing event-item for the book sign event
  • #6021 Fixed inability to change the remaining time of a command cooldown
  • #6022 Fixed an issue generating random numbers on older versions of Java
  • #6023 Fixed an exception when attempting to use an attribute that an entity does not support
  • #6026 Fixed a casting error when using a pre-set variable for command cooldown storage
  • #6027 Corrected some missing versions in the documentation
  • #6033 Fixed local variables in the spawn effect section
  • #6047 Fixed an issue when using two or more 'variables' sections
  • #6050 Fixed an issue when using two or more 'aliases' sections
  • #6067 Fixed an issue when using the 'stop all sounds' effect
  • #6072 Fixed the spawn section not working on Minecraft 1.20.2
  • #6081 Fixed duplicate logging issues that could occur due to recent API changes

Click here to view the full list of commits made since 2.7.0

Notices

New Release Model

We have switched to a new release model starting with this version.

New syntax, features, and quality-of-life changes will be saved for large 2.X versions, released twice per year.
Bug fixes will be released monthly in smaller 2.7.X versions.

The full details of this model are available here.

Help Us Test

We have an official Discord community for beta testing Skript's new features and releases.

Compatibility Warning

Due to the major internal changes within the 2.7 update, some addons may no longer work properly.
Please be patient as addon developers work to update their addons.
We have published a new release of our Addon Patcher, but be aware that it cannot fix all issues.

Thank You

We have continued to see an increase in new contributors recently, and we would like to thank all who have contributed to this version of Skript. ⭐ 🙂

Special thanks to the team members and contributors whose work was included in this version:

As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.

2.7.0

09 Sep 08:21
3f08853
Compare
Choose a tag to compare

🚀 Skript 2.7.0

📢 We are proud to finally say that 2.7.0 is here!

Our last stable release was 2.6.4 nearly a year ago, and a lot has happened since then. In this release, we have implemented over 80 new features along with nearly 70 bug fixes. Beyond that, a significant portion of this time has been spent on overhauling Skript's codebase. This update includes some of the biggest internal enhancements in years. Almost every part of Skript should run faster, and as we continue to build upon these improvements, the benefits will only grow.

We realize that this update has taken much longer than expected. Our development cycle has been rather flawed, and we are committed to making changes that will result in a clearer release schedule. We will have more to share about that soon when we finalize a new process.

🎉 We are also very excited to welcome a new member, @sovdeeth to our team.

Thank you all again for your continued support. Happy Skripting! ⚡

📢 End of 1.12.2 Support

As mentioned in the previous releases, we have decided to drop support for 1.12 and lower (legacy versions).
This means that this version will only work on versions 1.13 and higher.
Only critical fixes will be backported to 2.6.X.

⚠ Compatibility Warning

Due to the major internal changes within this update, some addons may no longer work properly.
Please be patient as addon developers work to update their addons.
We have published a new release of our AddonPatcher, but be aware that it cannot fix all issues.

⚠ Breaking Changes

  • Scripts in subdirectories will now load before those in the main directory.
  • List parsing order has changed to function in a clearer manner:
# Here is an example list declaration
set {_l::*} to "abc", length of "def", "ghi"

# Previous Behavior
Interpretation: "abc", length of ("def", "ghi")
Result: "abc", 3, 3
# New Behavior
Interpretation: "abc", length of ("def"), "ghi"
Result: "abc", 3, "ghi"
  • Removed the expression for obtaining the numerical ID of an item
  • The durability expression has changed. Durability now works counter to damage. That is, as the damage of an item increases, its durability decreases. Here is an example:
set {_item} to <some item with 1000 durability>
add 5 to the damage of {_item} # durability is now 995/1000
add 5 to the durability of {_item} # durability is now 1000/1000 again

⭐️ 2.7.0 Changelog

Click here to view the full list of commits made since 2.6.4

Click below to view the entire changelog for this release (all changes since 2.6.4).

Full changelog

Notable Additions

📃 All new syntax can be viewed on docs.skriptlang.org.

  • Language support for French, Polish, Simplified Chinese, and Japanese has been added.

  • We have significantly overhauled the default examples. The goal of these new examples is to display most of Skript's feature set with a better range of difficulties.

  • Multiline conditionals has been added. These work on an if-then based structure.

Multiline Conditional Example
# all conditions must pass
if:
  condition 1
  condition 2
then:
  do stuff

# at least one condition must pass
if any:
  condition 1
  condition 2
then:
  do stuff

# it can also be used in else-if statements
if 1 + 1 = 3:
  do stuff that will never actually be done
else if:
  condition 1
  condition 2
then:
  do stuff
else:
  do stuff
  • Local Functions that can only be used in the script that they are declared have been added.
Local Function Example
# in script1.sk
local function welcome():
  broadcast "Welcome!"
  
# in script2.sk
on script load:
  welcome() # this will error as `welcome()` is only available in script1.sk
  • The Options section has been expanded to support nesting.
Nested Options Example
options:
  price:
    apple: 1000
	orange: 100
# {@price.apple} and {@price.orange} are now valid options

Additions

  • Added syntax support for obtaining and modifying the age of blocks (e.g. crops) and entities (closes #3068, #4534)
  • Added support for providing multiple players in the played before condition
  • Added syntax support for the freezing mechanics introduced in 1.18
  • Added support for the last struck lightning (this only applies to lighting strikes created by Skript) (closes #3872)
  • Added syntax for forcing entities to pathfind to a location (closes #2334)
  • Added syntax for obtaining a list of the names of all loaded plugins (closes #4189)
  • Added syntax for obtaining the bed location of offline players (closes #4659)
  • Added syntax for modifying the unsafe bed location of players, meaning they will respawn there even if the location is obstructed
  • Added events and event values for when an anvil is damaged (requires Paper) and when an item is placed in an anvil (e.g. preparing for a repair) (closes #4456)
  • Added additional event values for the player and entity move events (closes #4890)
  • Added a new configuration option for printing warnings for script lines that take too long to parse (closes #4759)

Look for long parse time warning threshold in your config.sk!

  • Added an expression for obtaining the raw content of a string (no parsing or stripping of formatting) (closes #4102)
  • Added support for spawning a wolf with a specific collar color (closes #1760)
  • Added support for obtaining the amplifier of an entity's potion effect (thanks @Ankoki)
  • Added complete support for the "player egg throw event"
  • Added French language support (thanks @Romitou)
  • Added support for multiple entities in the equip syntax (closes #5083)
  • Added the player trade event with support for obtaining the involved entity (thanks @AbeTGT)
  • Added case sensitivty support for the join and split syntax

Note that these expressions will now take into account the case sensitivity config option (closes #4886)

  • Added support for lang files to automatically update when changes are detected

Note that when a change is detected, existing lang files will be moved into a backups folder

  • Added the ability for creating sectioned options (closes #4032)
  • Added support for obtaining and modifying the pickup delay of a dropped item
  • Added Polish language support
  • Added support for the last launched firework (this only applies to fireworks launched by Skript) (closes #4942)
  • Added syntax for obtaining the environment (overworld, nether, end) of a world (closes #3673)
  • Added a condition for checking whether an entity is gliding (thanks @Ankoki) (closes #5145)
  • Added syntax for modifying and checking whether an entity is invisible (thanks @D4isDAVID)
  • Added an event for when an entity jumps (thanks @AbeTGT)
  • Added syntax for obtaining and modifying the duration of an entity burning (closes #923)
  • Added support for creating local functions (closes #2188, #5167)
  • Added syntax for obtaining the nearest entity relative to another entity or location (closes #4674)
  • Added syntax for checking whether a location is within a certain radius of another location (closes #5201)
  • Added syntax for obtaining the list of all banned players or IP addresses
  • Added syntax for checking if a location is within two other locations
  • Added syntax for obtaining the current moon phase of a world (closes #746)
  • Added past, present, and future event values for the block place event
  • Added block data support to the type of expression
  • Added syntax for obtaining the text input of an anvil
  • Added the ability to set a block to a specific skull (e.g. the player's skull) (closes #1789)
  • Added syntax for obtaining, modifying, and checking for server operators (closes #4910)
  • Added support for multiline conditions (closes #5152)
  • Added syntax for forcing an entity to look at another entity
  • Added syntax for allowing modification of the actual maximum player count (thanks @kiip1)
  • Added events for when a player starts/stops/swaps spectating another entity
  • Added modification support to the book pages expression
  • Added support for using a/an in inventory types

That is, you can now write set {_var} to a shulker box inventory.

  • Added syntax for respawn anchors (thanks @hotpocket184) (closes #4726)
  • Added a literal representing pi (thanks @kiip1) (closes #5288)
  • Added a new command entry for changing the command prefix

The command prefix is used when there may be command name conflicts with another plugin (this is the skript: part of skript:mycustomcommand).

  • Added support for worlds in the name of syntax (thanks @DelayedGaming)
  • Added support for determining whether an entity is valid

An entity will be considered invalid if it has died or despawned.

  • Added an event for when an entity drops an item (thanks @ShaneBeee)
  • Added support for determining whether an entity is an enemy (thanks @ShaneBeee)

Note that this is only available on Minecraft 1.19.3 and newer.

  • Added support for obtaining the source block in a block spread event (thanks @GodModed) (closes #5346)
  • Added the loot generate event and support for modifying the loot
  • Added syntax for obtaining and modifying the number of sea pickles at a block
  • Added support for unequipping items from an entity (thanks @colton-boi) (closes #5360)
  • Added Simplified Chinese language support (thanks @CJYKK)
  • Added Japanese language support (thanks @faketuna and @rilyhugu)
  • Added a chat component tag for copying to the clipboard (closes #5351)

Example: `send "<copy:text to copy>text to display"

  • Added sy...
Read more

2.7.0-beta3

06 Jun 04:44
46770eb
Compare
Choose a tag to compare
2.7.0-beta3 Pre-release
Pre-release

Skript 2.7.0-beta3

⚠ BETA Release Warning

This is a BETA release, which means it is not yet meant for production servers. It may contain bugs or unexpected behaviors in its current state.
We recommend you extensively test this release on a local server before taking the risk of using it on a production server (if you truly wish to).
We do have many tests in place to ensure the integrity of Skript remains stable to some degree.

⚠ Compatibility Warning

Due to the major API changes within the 2.7.X updates, some addons may no longer work properly. Please be patient as addon developers work to update their addons. We expect to publish a new release of our AddonPatcher in the near future, but be aware that it cannot fix all issues.

📢 End of 1.12.2 Support

Yet again we mention that we have dropped support for 1.12 and lower (legacy versions) since Skript 2.7.
This means that this (and any 2.7.X) version will only work on Minecraft versions 1.13 and higher.
Only critical fixes will be backported to 2.6.X -- Report any if found.

⭐️ 2.7.0-beta3 Changelog

Click here to view the full list of commits made since 2.7.0-beta2

Click below to view the entire changelog for this release.

Full changelog

Additions

  • Implements proper support for serial (Oxford) comma in lists. (Thanks @Mr-Darth)

Bug Fixes

  • Fixed an issue with the random number expression throwing an ArithmeticException when trying to get a random integer between two numbers with the same whole number but a different decimal.
  • Fixed a bug where Spigot would throw an exception in 1.16+ when a vector of zero attempts to grab blocks with the BlockIterator.
  • Fixed a bug when using a direction with a number, the ExprBlocks expression would not respect the value. So for example loop blocks 5 above the player would loop blocks between the player and 100 blocks above because that was the max target block distance. It now properly loops 5 blocks. (Details at #5566)
  • Fixed ExprVectorRandom to be strictly returning vectors with magnitude of 1 (Thanks @DelayedGaming)
  • Fixed the delete changer on target entity and added a reset changer. (Closes #2695)
  • Fixed an issue where condition CondIsPreferredTool would return true when provided with null values like an unset variable. (Thanks @Fusezion)
  • Fixed a bug where variables that weren't involved with default variables of a script would error while having default variables for that script. (Closes #5647)
  • Fixed the on falling block land: event being called whenever a block turns into a falling block, when it shouldn't. Only when it lands.
    On top of this; on falling block falling has been added, so you can now properly get both falling block state events. (Thanks @DelayedGaming)
  • Fixed logger level color for messages that don't have a node.
  • Fixed an IllegalArgumentException from being thrown when attempting to serialize a location with a world that is unloaded.
  • Fixed an issue where the ExprVersionString expression couldn't be used in the 'server list ping' event. (Closes #5597) (Thanks @DelayedGaming)
  • Fixed an issue where EventValueExpression classes were checking for super classes of the provided type. They now are minimum class level supertype to the type registered. Example being Egg.class was looking for Entity.class when it should have been just Egg or anything that extends Egg. (Closes #5539)
  • Fixed a bug where an EntityData's details would not be applied before calling the consumer of a section in EffSecSpawn. (Closes #5711)
  • Fixed some item comparisons for ItemTypes created through type of <itemtype> (Closes #5693)
  • Fixed a big issue where Skript would not select the correct type enum. For example Skript would parse fire as a visual effect and due to this, it would not be allowed to be used as an entity or a block. (Closes #2711, #4773, #5497, #5557 and #5675)

Removals

  • Removed id of %itemtypes% Skript has since supported 1.13+ and we don't use ID values anymore.
  • Remove hidden files from tab complete. Example being .git/ folder displaying in the tab complete when using git for scripts source control. This was extremely annoying for those that have hidden files but don't want them to display in the tab complete.

Changes

  • In versions previous to this 2.7.0-beta3 version, the syntax (damage[s] [value[s]]|durabilit(y|ies)) of %itemtypes/slots% would treat damage and durability the same. Now durability is how much durability is left on the tool, and damage is how damaged the tool is, so you can get both sides of the slider now rather than them being the same. (Closes #4692).
  • Deprecated and marked Math2 class as internal, addons should not be using this class. Math2 is an old class that used to be provided to improve some mathematical calculations, but Java's Math class has since gotten better. (Thanks @kiip1)
  • Clarified the error about left clicking on an entity which should be a damage event. (Thanks @oskarkk)
  • Improved performance by switching event triggers to be using Multimap instead of Skript's Pair. (Thanks @sovdeeth)
  • Switched AliasesProvider.materials set implementation from Java SE HashSet to FastUtil ObjectOpenHashSet, which improved Aliases loading time by ~40%. (Thanks @bluelhf)

Skript API (Addon Developers)

  • Removed the final modifier on PropertyExpressions. This means you can now properly return multiples when isSingle is to return false. (Closes #5521)
  • Added the ability to register custom VariableStorage classes. API changes coming in the future with #5646 so the API currently is subject to change. API documentation will be written when that pull request is merged.

Credit to the team on this release: @AyhamAl-Ali @UnderscoreTud @TheLimeGlass @APickledWalrus

📝 Help Us Test

We have an official Discord community for beta testing Skript's new features and releases.

⚒ The Fixes Release

25 Mar 05:38
1fd5265
Compare
Choose a tag to compare
⚒ The Fixes Release Pre-release
Pre-release

Skript 2.7.0-beta2

Second beta for Skript 2.7 addressing a handful of bugs.

⚠ BETA Release Warning

This is a BETA release, which means it is not yet meant for production servers. It may contain bugs or unexpected behaviors in its current state.
We recommend you extensively test this release on a local server before taking the risk of using it on a production server (if you truly wish to).
We do have many tests in place to ensure the integrity of Skript remains stable to some degree.

⚠ Compatibility Warning

Due to the major API changes within the 2.7.X updates, some addons may no longer work properly. Please be patient as addon developers work to update their addons. We expect to publish a new release of our AddonPatcher in the near future, but be aware that it cannot fix all issues.

📢 End of 1.12.2 Support

Yet again we mention that we have dropped support for 1.12 and lower (legacy versions) since Skript 2.7.
This means that this (and any 2.7.X) version will only work on Minecraft versions 1.13 and higher.
Only critical fixes will be backported to 2.6.X -- Report any if found.

⭐️ 2.7.0-beta2 Changelog

Click here to view the full list of commits made since 2.7.0-beta1

Click below to view the entire changelog for this release.

Full changelog

New Features

  • Updated to 1.19.4. New entities are added. Aliases automatically generate for the exact name. Human made aliases not ready yet.

Bug Fixes

  • Fixed a bug where attacker could not be used in some damage events.
  • Fixed some comparisons that could fail because of the changes in 2.7 to ItemMeta comparison.
  • Fixed a bug where the item amount changer wouldn't apply when the type was an itemstack. (Thanks @sovdeeth)
  • Fixed a bug that prevented usage of variables that were not a default variable when using the default variables structure (Closes #5510)
  • Fixed a bug where the 'raw string' expression would return the formatted string of a non-literal. (Closes #5515)
  • Gradle will now apply Java 17 to your build when compiling. This means it won't matter what version of Java your machine has, Skript will always be set to Java 17. Ensure you run gradlew clean build when building for the first time. This is due to Paper 1.17+ requiring Java 17. Skript still targets Java 8 (MC versions under 1.17 can still run Java 8), so your contributions should build target Java 8.
  • Fixed an issue where the existing experience orb experience was not respected when setting the exp value in EffDrop. (Closes #5490) (Thanks @sovdeeth)
  • Fixed a bug that happens when the entity changer would update the inventory of players even if there were no items involved with the change, causing unexpected behaviors. (Closes #5270)
  • The second bug happens when trying to remove an inventory with air items from an entity. (Closes #5237 and #5396)

Skript API (Addon developers)

  • Added debugging and JProfiler to the gradle tasks. Read more at #5299 (Thanks @kiip1)
  • Fixed an issue where add-ons would have to update to the newly changed converter package move. Added deprecated methods to support add-ons for the meantime.
  • Fixed an issue where Skript couldn't be built using gradlew build

📝 Help Us Test

We have an official Discord community for beta testing Skript's new features and releases.

🚀 The Features Release

11 Mar 04:00
cc8197c
Compare
Choose a tag to compare
Pre-release

Skript 2.7.0-beta1

After many delays, we are excited to finally publish the first beta for Skript 2.7. With numerous new features, countless bug fixes, and amazing API overhauls, 2.7 has shaped up to be one of our biggest releases ever. We are seeing incredible growth in new contributors, and we want to thank all of you for your continued support. The future of the project has never looked brighter. So, without further ado, we present our first beta for 2.7!
- SkriptLang Team

⚠ BETA Release Warning

This is a BETA release, which means it is not yet meant for production servers. It may contain bugs or unexpected behaviors in its current state.
We recommend you extensively test this release on a local server before taking the risk of using it on a production server (if you truly wish to).
We do have many tests in place to ensure the integrity of Skript remains stable to some degree.

⚠ Compatibility Warning

Due to the major API changes within this update, some addons may no longer work properly. Please be patient as addon developers work to update their addons. We expect to publish a new release of our AddonPatcher in the near future, but be aware that it cannot fix all issues.

📢 End of 1.12.2 Support

As mentioned in the previous releases, we have decided to drop support for 1.12 and lower (legacy versions).
This means that this version will only work on versions 1.13 and higher.
Only critical fixes will be backported to 2.6.X.

🚀 Documentation Website Rework

Documentation website has been reworked and redesigned with countless additions and fixes (#4319).
In addition to that, Skript documentation files has been moved to a new repository skript-docs where it will be maintained there separately.
Make sure to check the docs site out and report issues on the new issue tracker.

⭐️ 2.7.0-beta1 Changelog

Click here to view the full list of commits made since 2.6.4

There are so many contributions in this release, the changelog needs its own link!
Click here to view the entire changelog for this release.

Thanks @Romitou, @3meraldK, @Nicofisi, @Zabujca997, @CJYKK, @faketuna, @rilyhugu, @kiip1, @sovdeeth, @Ankoki, @UnderscoreTud, @AbeTGT, @D4isDAVID, @hotpocket184, @DelayedGaming, @GodModed, @colton-boi, @cooffeeRequired, @ShaneBeee and @Fusezion for contributing!

Aliases

  • Changed how shulker boxes are handled to now properly point to all boxes.
normal shulker box = that purple undyed box
down facing shulker box = same as above just in a direction
any shulker box = any coloured shulker box including the uncoloured one
all shulker boxes = all shulker boxes and the uncoloured one, no duplicates
  • Added beetroot
  • Fixed ores not working
  • Changed lapis having two s = lapiss to not.

Skript API (Addon developers)

  • Added a utility class called EnumClassInfo which is targeted at enums, it automatically creates a language node for the enum, a parser, serializer, default expression and usage for the type, which should make it less tedious to make enum classinfos. (thanks @UnderscoreTud)
    You can look at BukkitClasses.class for examples, enum classinfos got converted.
  • Added support for arrays in event values.
  • Added a new method for registering a property expression where the type is optional to allow for default expression property
+ PropertyExpression#registerDefault(Class<? extends Expression<T>>, Class<T>, String, String);
property [of %types%]
and
%types%'[s] property
  • The Converters and Comparators systems have been completely rewritten and relocated. The old classes will continue to function but have been deprecated. Please see their javadoc for details on replacement methods.
  • ScriptLoader has seen major overhauls, along with ParserInstance. Some methods may no longer be available, but most have replacements that can be determined from deprecation javadocs. Please see #4108 for more details. Also feel free to ask questions in any of the Discord guilds linked in our README.
  • This update adds the Structure API, a way for addon developers to finally create top-level elements (like commands, functions, and more). We are working hard to bring some tutorials to our website, but please feel free to ask any questions in the Discord guilds linked in our README.
  • SelfRegisteringSkriptEvent has been deprecated now that the Structure API exists (it is essentially a replacement).

📝 Help Us Test

We have an official Discord community for beta testing Skript's new features and releases.

⭐️ Thank You

We saw a large increase in new contributors recently, and we just wanted to thank all who have contributed to this version of Skript. Lots of issues and suggestions arise and we could not have made it here without the help of the community.

As always, if you encounter any issues or have some minor suggestions, please report them at https://github.com/SkriptLang/Skript/issues.
If you have any bigger ideas or input for the future of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions.

🎉 Team Changes

@ShaneBeee has decided to leave the SkriptLang team. We are sad to see him go, but we also want to appreciate all of his contributions over the years. This project would not be where it is today without his dedication, and we are forever thankful.

Please welcome @UnderscoreTud to the SkriptLang team! Their recent contributions have helped us deliver this massive update and we look forward to working with them at a closer level.

Bug fixes for legacy versions

22 Nov 00:18
df0dbcd
Compare
Choose a tag to compare

Hello Skripters 👋

Today we're releasing version 2.6.4 which brings out a couple fixes towards Minecraft versions below 1.14

📢 End of 1.12.2 Support

As mentioned in the previous releases, we have decided to drop support for 1.12 and lower (legacy versions) in Skript 2.7.
This means that Skript 2.6.X is the last version that will work with the legacy versions.
Only critical fixes will be backported to 2.6.X.

⭐️ 2.6.4 Changelog

Click below to view the entire changelog for this release.

Full changelog

Bug Fixes

  • Fixed a bug where if the lifetime value of a firework launch was greater than 127 or less than 0, it would throw an error. (thanks @DelayedGaming)
  • Fixed a bug where the offhand tool of player was incorrect in the PlayerHeldItem event. (#5094 thanks @TUCAOEVER)
  • Fixed variable names with long numbers either taking long parsing time, or not being able to compare with another similar number. (#4729, #3929)
  • Fixed ExprTimePlayed not working on versions 1.13-1.14 (#4929)
  • Fixed VariableString#isQuoted to work correctly, should be returning false for the input string " (with withQuotes=true). (#5149)
  • Fixed a bug where the component type of the returned array from ExprEntities not being the return type (e.g. Player), but a generic Entity instead, in the case that the syntax was used with radius, and no entities matched the query. (#5124)
  • Fixed a bunch of issues relating to conversion for list-modifying expressions.
  • Fixed an issue with how EffPotion interacted with patterns for potioneffects and potioneffecttypes (#5117) (thanks @Fusezion)
  • Fixed EffBroadcast not working on 1.9.4 (#5019)
  • Fixed a bug where you couldn't use colons in the ExprParse syntax (thanks @Mr-Darth)
  • Fixed a NPE from happening when spawning a falling block without specifying the block type and will default to Stone (#5042) (thanks @UnderscoreTud)
  • Fixed [on] silverfish enter and [on] silverfish exit events not actually working.
  • Changed item serialization with blocks to properly serialize. This means you cannot downgrade your Skript version after this version without losing those variables storing block value data!
  • Changed some event-values to return as an ItemStack rather than Skript's own ItemType to avoid some issues. (#4109)
  • Fixed a bug where Skript couldn't spawn lingering potions in 1.9-1.13 (#4933)
  • Fixed a bug where Skript might not start on 1.11.2 due to enchantment sweeping edge not being registered (#4933)
  • Fixed a bug where Skript wouldn't register sound syntaxes on 1.10.2 due to sound category not existing (#4933)
  • Fixed a NPE when using of %itemtype% syntax in preparing craft event (#4959)
  • Fixed an issue where EffConnect would error due to Bukkit#getOnlinePlayers not returning anything, yet a player instance was provided. (#5189)

Click here to view the full list of commits made since 2.6.3

Help Us Test

We have an official Discord community for beta testing Skript's new features and releases.

⭐️ Thank you

We saw a large increase in new contributors recently, and we just wanted to thank all those who have contributed to this version of Skript, lots of issues and suggestions arise and we couldn't have done it all without the help of the community.

As always, if you encounter any issues or suggestions please report them at https://github.com/SkriptLang/Skript/issues
If you have any ideas or input for the future development of Skript, you can share those too at https://github.com/SkriptLang/Skript/discussions

🚀 The 1.19 Update

11 Jul 09:10
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

Cleaning Up 2.6

21 May 21:35
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, close...
Read more

The 1.18 update

25 Jan 21:10
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.

2.6 is finally here

29 Oct 11:48
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 '...

Read more