Skript Versions Save

Skript is a Bukkit plugin which allows server admins to customize their server easily, but without the hassle of programming a plugin or asking/paying someone to program a plugin for them.

2.7.0

7 months ago

🚀 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 syntax for determining whether a tool is the preferred tool for harvesting a block
  • Added syntax for determining whether an item is stackable (max stack size > 1) (thanks @cooffeeRequired)
  • Re-enabled support for the the player view distance on newer versions where it functions (thanks @ShaneBeee)
  • Added syntax for obtaining all values of a specific type (closes #5065, #5082, #5235)

Examples include all colors, all potion effect types, etc.

  • Added syntax for obtaining how fast a player can break block at a given moment
  • Alias names can now be used for parsing block data (previously only Minecraft IDs were valid)
  • Added a value within syntax for modifying the values of a variable rather than the variable itself

Example: delete the entity within {_entity} # deletes the entity rather than the variable

  • Added syntax for applying knockback to an entity
  • Added support for rounding to a specific decimal point in the round function (closes #3579)
  • Added an event and event values for when a change occurs in a player's inventory slot
  • Added an event for when a player has slept long enough to count as passing the night/storm (thanks @DelayedGaming)
  • Added an event for when a player enters a chunk (thanks @DelayedGaming) (closes #5441)
  • Added an event for when a player's experience changes (closes #2858)
  • Added syntax for checking if a location is within an entity, chunk, world, or block
  • Added support for modifying the Skript prefix in the language files (thanks @Fusezion) (closes #5424)
  • Added a chat component tag for translating game strings based on the player's locale (closes #4875)

Example: send "<translate:block.minecraft.diamond_block>" prints Block of Diamond

  • Added support for reseting the target of an entity
  • Added an event for when a falling block starts falling (thanks @DelayedGaming)
  • Added support for serial (Oxford) commas in lists (thanks @Mr-Darth)
  • Added support for the inventory drag event (closes #3744)
  • Added support for using formatting in the book pages syntax
  • Added InventoryDragEvent (closes #3744)

Tweaks and Removals

  • Countless internal optimizations and improvements
  • Many minor syntax tweaks
  • Updated the random vector expression to return positive and negative components (closes #3135)
  • Removed support for WorldGuard 6
  • Fixed and improved some errors and exceptions (closes #4234)
  • Enhanced support for obtaining the target location of additional mobs
  • Scripts in subdirectories will now load before those in the main directory (closes #466)
  • The date formatting expression now supports the usage of variables in custom formats
  • Significantly improved asynchronous script loading
  • Significantly improved the tab completion of the /skript command (specifically for enabling/reloading/disabling scripts) (closes #4666)
  • Enhanced the "command already defined" error message to include the source of the error (closes #1329)
  • Improved modification of the spawn point (greater accuracy) (closes #4955)
  • Events listeners will now be unregistered when the last occurence of that event is removed from loaded scripts (closes #5141)
  • Renamed the subtext expression to substring (thanks @Kanvi1) (closes #5196)
  • Removed the operator entity data (syntax was added to replace this)
  • Completely rewrote the default example scripts to better represent best practices of Skript (closes #2252)
  • Reworked the event values for the edit book event (now includes a future event value)
  • Completely rewrote the Comparator system (closes #4928)
  • Completely rewrote the Converter system (closes #1747, #5045, #5302)
  • Improved parsing speeds, especially for larger scripts (closes #1117, #1783, #4905)
  • Optimized and reworked list parsing (closes #4025, #5122, #5243)
  • Overhauled the quality of code in the variables package (closes #5398)
  • Removed the expression for obtaining the numerical ID of an item
  • The durability expression no longer functions the same as damage (now, as damage increases, durability decreases) (closes #4692)
  • Rewrote internal math functions to improve their performance (thanks @kiip1)
  • Improved the error message for when a left click event on an entity is used (thanks @oskarkk)
  • Improved the performance of aliases (thanks @bluelhf)
  • Prevents Skript from enabling Timings support for Paper versions 1.19.4 or greater (closes #5726)

Bug Fixes

  • Fixed an issue where variables are loaded after Skript loads which breaks the usage of variables in on skript start (closes #5882)
  • Fixed an issue where some syntax could be used in unintended events causing an exception (closes #4872)
  • Fixed an issue where the same error may be printed multiple times for incorrect function definitions (closes #4771)
  • Fixed an issue with function return values failed to properly convert to the expected type (closes #4524)
  • Fixed an issue where plural arguments could be passed in singular function parameters (closes #4859)
  • Fixed an exception that could occur when formatting a date
  • Fixed an exception that could occur if a location did not contain a world for the teleport effect
  • Fixed an exception that could occur when spawning a falling block without specifying the type (closes #5042)
  • Fixed an issue that could occur where some events would not register if related events were already registered (thanks @TFSMads) (closes #4705)
  • Fixed an issue where options did not work in function declarations (closes #2492)
  • Addressed mutliple exceptions that could occur when using parallel (multithreaded) script loading (closes #4579)

Please understand that for the moment, parallel loading is not performed for most script loading, and therefore will have little effect. Significant improvements are expected for the future.

  • Fixed numerous issues that could occur when trying to reload script files using different cases on operating systems where file names are case insensitive (e.g. Windows) (closes #4459)
  • Fixed an issue where adding aliases to commands would not properly sync with clients (meaning it appeared as if the alias was not registered in game) (closes #4307)
  • Fixed an issue where function (re)loading would often incorrectly error if asynchrounous script reloading is enabled (closes #4246)
  • Fixed an issue where an exception could occur when disabling a script that disables another one (using on stop) (closes #4916)
  • Fixed an issue where the replace syntax would erroneously modify all used variables (closes #5232)
  • Fixed an issue where target falling block did not work (closes #5223)
  • Fixed an issue where block data could not be compared (closes #5251)
  • Fixed an issue where the parse expression would have the incorrect return type when used with a pattern (closes #5274)
  • Fixed an exception that could occur when setting the time of a SimpleExpression and providing a null default expression

Note that a SkriptAPIException will now occur instead as this in incorrect API usage.

  • Improved rounding accuracy (closes #4235)
  • Fixed an issue where the event values for the block spread event returned the same value (thanks @ShaneBeee)
  • Fixed a few cases where some syntax could be used in unintended events
  • Fixed an issue where obtaining a random element out of a list of literals would only randomize during parse time (rather than during runtime) (closes #5345)
  • Fixed an issue where ghost items may remain in the inventory after cancelling an inventory interaction event (closes #5342)
  • Fixed a few issues with integer division and multiplication (closes #4445)
  • Fixed an issue where some expressions could erroneously modify the values of another (closes #5322)
  • Fixed an issue where the uncolored expression failed to handle nested tags (closes #5224)
  • Fixed an issue where goat horn variants did not work (closes #4882)
  • Fixed an issue where negated conditions could erroneously fail on lists
  • Fixed several issues with default variables, including them not working for any expression type that wasn't an object (closes #2174, #4567)
  • Fixed an issue where the drop syntax would overwrite the experience amount for merged experience orbs (closes #5490)
  • Fixed an exception that occured when getting a random number between two numbers that only differ by decimal
  • Fixed several bugs that could occur when using the all blocks syntax (closes #5565)
  • Fixed an issue where random vectors were not unit and not true random generations (thanks @DelayedGaming)
  • Fixed an issue where deleting the target of a player would not function as expected (closes #4221)
  • Fixed an issue where the falling block land event was also called when a block started falling (thanks @DelayedGaming)
  • Fixed an issue where the color of some messages (e.g. warnings, errors) was missing
  • Fixed an exception that could occur when attempting to serialize a location with an unloaded world
  • Fixed an issue where entity data was not properly applied before running the spawn effect section (closes #5711)
  • Fixed many issues where comparisons could fail when using literals that match multiple types (closes #2711, #4773, #5497, #5556, #5675)
  • Fixed an exception that could occur when using an invalid message for the action bar syntax (closes #5776)
  • Fixed an exception that could occur when executing certain syntax in asynchronous events (closes #5689)
  • Fixed an issue where book pages can't be set (closes #5709)
  • Fixed target of expression throwing an exception in some cases when deleting an entity (closes #5761)
  • Fixed an issue with all blocks expression throwing an exception when used with directions only (closes #5787)
  • Fixed an issue with ExprRawString using a Java 9 feature instead of Java 8 (closes #5794)
  • Fixed an issue where an exception is thrown when using stop all sounds effect (closes #5756)
  • Fixed an issue where chained multiline else-ifs errors when first if is not multiline (closes #5866)
  • Fixed an issue where you can't enchant multiple players tools (closes #5530)

API Changes

  • We want to bring attention to the usage of ParserInstance#isCurrentEvent. When using this method to restrict your syntax to a specific event during init, you should also be performing a runtime instanceof check on the Event object. For further details, review PR #4884.
  • Parse tags can now also be expanded onto optional pattern elements. That is, :[abc|def] is now equivalent to [:abc|:def] (this was already the case for :(abc|def) and (:abc|:def))
  • Added a utility class for easily creating Enum-based ClassInfos (see #5129)
  • Added a utility method or deleting a variable in the Variables class (see #5217)
  • Added support for registering plural event values (see #5168)
  • The Comparator system has been completely rewritten. Please review the javadoc as many classes and methods have been deprecated. These will continue to function for now
  • The Converter system has been completely rewritten. Please review the javadoc as many classes and methods have been deprecated. These will continue to function for now
  • SelfRegisteringSkriptEvent has been deprecated (see #5140)
  • Added support for registering a property expression with default expressions (see #5272)
  • The final modifier on PropertyExpression has been removed, allowing them to return multiple items per element if overriden (see #5455) (closes #5521)
  • Added support for registering custom VariableStorage implementations (see #4873)

Credit to the team on this release: @APickledWalrus @TheLimeGlass @TPGamesNL @AyhamAl-Ali @sovdeeth @Pikachu920 @UnderscoreTud @Moderocky

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

2.7.0-beta3

10 months ago

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 https://github.com/SkriptLang/Skript/issues/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 https://github.com/SkriptLang/Skript/issues/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 https://github.com/SkriptLang/Skript/issues/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 https://github.com/SkriptLang/Skript/issues/5539)
  • Fixed a bug where an EntityData's details would not be applied before calling the consumer of a section in EffSecSpawn. (Closes https://github.com/SkriptLang/Skript/issues/5711)
  • Fixed some item comparisons for ItemTypes created through type of <itemtype> (Closes https://github.com/SkriptLang/Skript/issues/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 https://github.com/SkriptLang/Skript/issues/2711, https://github.com/SkriptLang/Skript/issues/4773, https://github.com/SkriptLang/Skript/issues/5497, https://github.com/SkriptLang/Skript/issues/5557 and https://github.com/SkriptLang/Skript/issues/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 https://github.com/SkriptLang/Skript/issues/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)

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.

2.7.0-beta2

1 year ago

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 https://github.com/SkriptLang/Skript/issues/5510)
  • Fixed a bug where the 'raw string' expression would return the formatted string of a non-literal. (Closes https://github.com/SkriptLang/Skript/issues/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 https://github.com/SkriptLang/Skript/issues/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 https://github.com/SkriptLang/Skript/issues/5270)
  • The second bug happens when trying to remove an inventory with air items from an entity. (Closes https://github.com/SkriptLang/Skript/issues/5237 and https://github.com/SkriptLang/Skript/issues/5396)

Skript API (Addon developers)

  • Added debugging and JProfiler to the gradle tasks. Read more at https://github.com/SkriptLang/Skript/pull/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.

2.7.0-beta1

1 year ago

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 https://github.com/SkriptLang/Skript/pull/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.

2.6.4

1 year ago

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. (https://github.com/SkriptLang/Skript/issues/5094 thanks @TUCAOEVER)
  • Fixed variable names with long numbers either taking long parsing time, or not being able to compare with another similar number. (https://github.com/SkriptLang/Skript/issues/4729, https://github.com/SkriptLang/Skript/pull/3929)
  • Fixed ExprTimePlayed not working on versions 1.13-1.14 (https://github.com/SkriptLang/Skript/issues/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 (https://github.com/SkriptLang/Skript/issues/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. (https://github.com/SkriptLang/Skript/issues/4109)
  • Fixed a bug where Skript couldn't spawn lingering potions in 1.9-1.13 (https://github.com/SkriptLang/Skript/issues/4933)
  • Fixed a bug where Skript might not start on 1.11.2 due to enchantment sweeping edge not being registered (https://github.com/SkriptLang/Skript/issues/4933)
  • Fixed a bug where Skript wouldn't register sound syntaxes on 1.10.2 due to sound category not existing (https://github.com/SkriptLang/Skript/issues/4933)
  • Fixed a NPE when using of %itemtype% syntax in preparing craft event (https://github.com/SkriptLang/Skript/issues/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

2.6.3

1 year ago

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

2.6.2

1 year ago

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

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)

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%"

Additions / Improvements

This is useful for plugins like Geyser where some usernames are prefixed by a specific character.

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.

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

2.6.1

2 years ago

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

2 years ago

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

2.6-beta3

2 years ago

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

Fixes

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

Please note that if a world is not provided to the location function, the default world will be used.