Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Switched from resolving variables and functions during compilation to runtime
Added nestable triggers, allowing for simple creation of complex triggers
Added trigger unregistration
Added single use triggers
Added same line blocks, eg: 'if condition: someFunction()'
Added null-safe operator ?.
Added a lot of new operators such as **, ??, ++, += and many more
Added native support for maps/dicts, eg: 'map = {1: "val"}'
Added ternary operators
Syntax changes Some functions has had their syntax changed as they are now `default functions`. These functions are the following:
If-trees:
![]()
Loops:
![]()
Misc:
![]()
Custom functions have been added to allow for more flexibility and to allow for code reuse. This is supposed to be the updated and reworked version of the previously removed `Macros` which some of you might remember.
Return types
Custom functions require either a `return type` (such as `int`) or `def` if there is no return value. Any data type can be used as a return type. Lists are formatted as `type[]`.
Arguments
A function can be equipped with an, essentially, unlimited amount of arguments. The format for arguments is as follows `type:name=defaultValue`.
The type and default value is optional for arguments.
Not including a type will allow any value, though only the functions assigned to "Any" will be accessible through it.
Not including a default value will make an argument required, as opposed to optional. An argument with a default value can of course be overriden. Arguments can be accessed via both `position` and `keyword` (see `someFunction` below).
![]()
Constants store a constant value, equal to `static final` values in Java.
Constants are usable as default values in functions, provided they are declared __BEFORE__ the function. They may also have the value as returned by a function, provided it is declared __AFTER__ the function.
![]()
Imports are used to declare what objects to use for a script. This is useful when an external plugin is used, such as Artifact.
![]()
Durations can now be natively parsed by Helix and no bulky constructor, e.g. `Duration.parse("10s")` is required. Durations can instead be written as just `10s`.
Parsing has been improved and Helix (and Artifact) will give detailed information about line, software and cause when an error occurs.
Bug fixes and minor improvements Most systems have been upgraded to be more robust and easier to use. Some systems have gotten overhauls as they where outdated. A lot of minor bugs have also been fixed.
- Added 1.21 support
- Removed 1.20 support due to changes in Yggdrasil caused by Spigot API reworks
- Reworked all GUIs to be much more intuitive at the cost of capability
- Rewrote parser code to make file parsing more reliable
- Multiple bug fixes
UPDATE 3.0.0
After months of work Helix 3.0.0 is here!!! This update brings an entire rewrite of the plugin and all of it's syntax and interfaces!
Helix now has a proper text editing with it's custom file format! Editing scripts via a text file is now like writing code in any other high level scripting language. Although Helix now is very accessible for text editors it will still keep its GUIs and scripts are still possible to create in-game....
We also use cookies, as they are essential for the proper