---
# System prepended metadata

title: 'Release 2.9.0 Beta 1: 09/05/24'
tags: [beta]

---

# Skript 2.9.0 Beta 1

Skript 2.9.0 Beta 1 is here, ready for testing! This beta contains many new features, major changes, and bug fixes to improve the Skript experience, but we need to be sure they all work properly!

Below, you can familiarize yourself with the changes. As always, report any issues to our [issues page](https://github.com/SkriptLang/Skript/issues)! You can also use the [#2-9-0-beta1 channel](<https://discord.gg/pB3HVW5u>) in the [SkriptLang Testing Guild](<https://discord.gg/AhpyKSY6>) to talk about this beta.

## ⚠ 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.

Happy Skripting!
## Major Changes
- Skript can now listen to events cancelled by other plugins! Your current scripts will behave the same as they always have, but there's now the option to listen to cancelled, uncancelled, or both kinds at once:
```applescript
on break of stone:
    # Normal behavior, only listens to uncancelled break events.

on uncancelled break of stone:
    # Same as `on break of stone`, only uncancelled.
    
on cancelled break of stone:
    # Will only listen to cancelled events. For example, 
    # when Worldguard prevents a block break in a protected region.

on any break of stone:
    # Will listen to both cancelled and uncancelled events.
    # Finally, `event is cancelled` will be useful!
    
on all break of stone:
    # Same as `on any break of stone`.
```
- Added a config option to allow case-insensitive commands, so your accidental capslock won't mess you up as much!
```applescript
# default: only /test
# insensitive: /test, /TEST, /tEsT...
command /test:
    trigger:
        broadcast "test!"
```
- Adds multi-line comments. Comments are opened and closed with **three** hashtags `###` alone on a line. 
    ```applescript
    This is code
    ###
    |
    This is a comment
    |
    ###
    This is code (again)
    ```
    - Triple-hashtags in the middle of a line (e.g. `hello ### there`) will **not** start or end a comment.
- Support for string 'concatenation'!
    - Text can be appended to other text (e.g. `set {text} to "hello" + "there"`) with the addition operator.
    - The `concat(...)` function joins any text or objects together into a single text.

## ⚠ Breaking Changes
- Timespans will now show the weeks and years instead of stopping at days:
```patch
broadcast "%{_timespan}%"
- "378 days and 20 minutes"
+ "1 year and 1 week and 6 days and 20 minutes"
```
- The names of function parameters can no longer include the following characters: `(){}\",`.

## Changelog

### Additions
- [#4661](<https://github.com/SkriptLang/Skript/pull/4661>) Adds syntax to get the second, minutes, hours, etc of a timespan.
- [#6105](<https://github.com/SkriptLang/Skript/pull/6105>) Adds support for `is connected` pattern in the `is online` condition.
- [#6272](<https://github.com/SkriptLang/Skript/pull/6272>) Adds Russian translation.
- [#6334](<https://github.com/SkriptLang/Skript/pull/6334>) Adds support for character codepoints.
- [#6422](<https://github.com/SkriptLang/Skript/pull/6422>) Adds a new use for the 'actual' target block option.
- [#6549](<https://github.com/SkriptLang/Skript/pull/6549>) Adds a suppressible warning type for deprecated syntaxes.
- [#6558](<https://github.com/SkriptLang/Skript/pull/6558>) Adds `###` multi-line comment support.
- [#6576](<https://github.com/SkriptLang/Skript/pull/6576>) Adds support string 'concatenation'.
- [#6639](<https://github.com/SkriptLang/Skript/pull/6639>) Adds fire-resistant item property support.

### Bug Fixes
- [#5422](<https://github.com/SkriptLang/Skript/pull/5422>) Fixes bugs with the whitelist condition.
- [#6573](<https://github.com/SkriptLang/Skript/pull/6573>) Fixes `is connected` pattern to support only Paper server.

### Removals
- [#5606](<https://github.com/SkriptLang/Skript/pull/5606>) Removes the warnings in the default variable test.
- [#6505](<https://github.com/SkriptLang/Skript/pull/6505>) Removes Player name/UUID in variables warning.
- [#6673](<https://github.com/SkriptLang/Skript/pull/6673>) Removes old deprecated vector arithmetic syntax in favour of regular arithmetic.

### Changes
- [#4661](<https://github.com/SkriptLang/Skript/pull/4661>) Adds timespan details expression & improvements.
- [#5676](<https://github.com/SkriptLang/Skript/pull/5676>) Changes uuid in variable names default setting.
- [#6160](<https://github.com/SkriptLang/Skript/pull/6160>) Adds the option of 'breakable' to the existing unbreakable syntaxes.
- [#6207](<https://github.com/SkriptLang/Skript/pull/6207>) Adds ability to listen to cancelled events.
- [#6275](<https://github.com/SkriptLang/Skript/pull/6275>) Ignore cleanup lang in git blame.
- [#6306](<https://github.com/SkriptLang/Skript/pull/6306>) Adds a more flexible static parse method.
- [#6307](<https://github.com/SkriptLang/Skript/pull/6307>) Throw an exception when attempting to register an abstract class.
- [#6349](<https://github.com/SkriptLang/Skript/pull/6349>) Creates SectionExitHandler interface.
- [#6361](<https://github.com/SkriptLang/Skript/pull/6361>) Make function parameter name rules stricter.
- [#6389](<https://github.com/SkriptLang/Skript/pull/6389>) Allows element-wise comparision when checking if two "and" lists are equal.
- [#6393](<https://github.com/SkriptLang/Skript/pull/6393>) Adds "invincible" as a synonym of "invulnerable" in related syntaxes.
- [#6456](<https://github.com/SkriptLang/Skript/pull/6456>) Adds syntax for bells and bell events.
- [#6506](<https://github.com/SkriptLang/Skript/pull/6506>) Adds pathfinding condition.
- [#6550](<https://github.com/SkriptLang/Skript/pull/6550>) Enhances pattern keywords for faster parsing speed.
- [#6577](<https://github.com/SkriptLang/Skript/pull/6577>) Adds a config option to allow case-insensitive Skript commands
- [#6627](<https://github.com/SkriptLang/Skript/pull/6627>) Allows usage messages to contain expressions.

### API Changes
- [#6291](<https://github.com/SkriptLang/Skript/pull/6291>) Adds parse result structure for testing scripts.
- [#6531](<https://github.com/SkriptLang/Skript/pull/6531>) Adds ClassInfoReference system.
- [#6551](<https://github.com/SkriptLang/Skript/pull/6551>) Allows simple root-level structures.
- [#6556](<https://github.com/SkriptLang/Skript/pull/6556>) Allows look-behind for headless effect sections during init.
- [#6568](<https://github.com/SkriptLang/Skript/pull/6568>) Adds function contracts, allowing functions to modify their return type/plurality based on their arguments.

[Click here to view the full list of commits made since 2.8.5](<https://github.com/SkriptLang/Skript/compare/2.8.5...2.9.0>)

## Notices

### Thank You

Special thanks to the contributors whose work was included in this version:
- @sovdeeth
- @Moderocky 
- @envizar 
- @APickledWalrus
- @NotSoDelayed
- @AyhamAl-Ali

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.