Releases: hent324211/veltrix
Release list
v0.2.4 - beta
Veltrix v0.2.4 — Release Notes
Release Date: March 21, 2026
Overview
v0.2.4 is a node expansion release, adding 35 new nodes across all four categories: Events, Logic, Actions, and Data. These nodes significantly extend what plugins can do without writing code, covering player state, world interaction, item manipulation, variables, and flow control utilities.
New Event Nodes
Player Shoot Bow (event.player_shoot_bow)
Triggered when a player fires an arrow from a bow.
- Outputs:
Then,Player
Player Eat (event.player_eat)
Triggered when a player consumes food.
- Outputs:
Then,Player
Player Toggle Sneak (event.player_toggle_sneak)
Triggered when a player starts or stops sneaking.
- Outputs:
Then,Player,Sneaking(Boolean)
Player Toggle Sprint (event.player_toggle_sprint)
Triggered when a player starts or stops sprinting.
- Outputs:
Then,Player,Sprinting(Boolean)
Weather Change (event.weather_change)
Triggered when the world weather changes.
- Outputs:
Then,IsStorm(Boolean)
Time Change (event.time_change)
Triggered when the world time changes.
- Outputs:
Then,Time(Number)
New Logic Nodes
Set Variable (logic.set_variable)
Stores a value in a named global variable. Global variables persist across all players for the lifetime of the plugin instance.
- Inputs:
In,Name(Text),Value(Any) - Outputs:
Then
Get Variable (logic.get_variable)
Reads a named global variable value.
- Inputs:
Name(Text) - Outputs:
Value(Any)
Set Player Variable (logic.set_player_variable)
Stores a value in a named variable scoped to a specific player. Useful for per-player counters, states, and flags.
- Inputs:
In,Player,Name(Text),Value(Any) - Outputs:
Then
Get Player Variable (logic.get_player_variable)
Reads a player-scoped variable by name.
- Inputs:
Player,Name(Text) - Outputs:
Value(Any)
Get Distance (logic.get_distance)
Calculates the 3D distance between two locations.
- Inputs:
Location A,Location B - Outputs:
Distance(Number)
Has Item (logic.player_has_item)
Checks whether a player currently has a specific item in their inventory.
- Inputs:
Player,Item(ItemStack) - Outputs:
Has(Boolean)
Break Loop (logic.break)
Loop control node — signals the current loop to exit immediately.
- Inputs:
In - Outputs:
Then
Continue Loop (logic.continue)
Loop control node — signals the current loop to skip to the next iteration.
- Inputs:
In - Outputs:
Then
Cooldown Check (logic.cooldown)
Returns whether a named cooldown key is ready. Useful for rate-limiting actions per player or globally.
- Inputs:
Key(Text),Time(Number, seconds) - Outputs:
Ready(Boolean)
Color Text (logic.color_text)
Applies Minecraft color and formatting codes (&a, &l, etc.) to a text string.
- Inputs:
Text - Outputs:
Text
Is Sneaking (logic.is_sneaking)
Checks if a player is currently sneaking.
- Inputs:
Player - Outputs:
Result(Boolean)
Is Sprinting (logic.is_sprinting)
Checks if a player is currently sprinting.
- Inputs:
Player - Outputs:
Result(Boolean)
Is On Ground (logic.is_on_ground)
Checks if a player is standing on a solid block.
- Inputs:
Player - Outputs:
Result(Boolean)
Is In Water (logic.is_in_water)
Checks if a player is currently submerged in water.
- Inputs:
Player - Outputs:
Result(Boolean)
Random Player (logic.random_player)
Picks a random online player from the server.
- Outputs:
Player
New Action Nodes
Set Player Health (action.set_player_health)
Sets a player's health to an exact value (0–20 for vanilla hearts).
- Inputs:
In,Player,Health(Number) - Outputs:
Then
Set Player Hunger (action.set_player_hunger)
Sets a player's food level (0–20).
- Inputs:
In,Player,Hunger(Number) - Outputs:
Then
Set Block (action.set_block)
Replaces a block at a world location with the specified material.
- Inputs:
In,Location,Material(Text) - Outputs:
Then
Break Block (action.break_block)
Removes a block at a location, dropping no items.
- Inputs:
In,Location - Outputs:
Then
Remove Item (action.remove_item)
Removes an item (by type and amount) from a player's inventory.
- Inputs:
In,Player,Item(ItemStack) - Outputs:
Then
Clear Inventory (action.clear_inventory)
Removes all items from a player's inventory.
- Inputs:
In,Player - Outputs:
Then
Damage Player (action.damage_player)
Deals damage to a player by the given amount.
- Inputs:
In,Player,Amount(Number) - Outputs:
Then
Heal Player (action.heal_player)
Restores a player's health by the given amount.
- Inputs:
In,Player,Amount(Number) - Outputs:
Then
Send Title (action.send_title)
Sends a title and subtitle text overlay to a player's screen.
- Inputs:
In,Player,Title(Text),Subtitle(Text) - Outputs:
Then
Send Action Bar (action.send_actionbar)
Sends text to the player's action bar (above the hotbar).
- Inputs:
In,Player,Text(Text) - Outputs:
Then
Set Item Name (action.set_item_name)
Changes the display name of an item stack. Returns the modified item.
- Inputs:
Item(ItemStack),Name(Text) - Outputs:
Item(ItemStack)
Set Item Lore (action.set_item_lore)
Sets the lore (description) text on an item stack. Returns the modified item.
- Inputs:
Item(ItemStack),Lore(Text) - Outputs:
Item(ItemStack)
Enchant Item (action.enchant_item)
Adds an enchantment to an item at a specified level. Returns the modified item.
- Inputs:
Item(ItemStack),Enchantment(Text),Level(Number) - Outputs:
Item(ItemStack)
New Data Nodes
Get Player Health (data.get_player_health)
Reads a player's current health value.
- Inputs:
Player - Outputs:
Health(Number)
Get Player Hunger (data.get_player_hunger)
Reads a player's current food level.
- Inputs:
Player - Outputs:
Hunger(Number)
Get Player Location (data.get_player_location)
Reads a player's current world position.
- Inputs:
Player - Outputs:
Location
Get Block Type (data.get_block_type)
Reads the material type of a block at a given location.
- Inputs:
Location - Outputs:
Material(Text)
Usage Notes
- Variable nodes (
set_variable,get_variable,set_player_variable,get_player_variable) store values at runtime only — they do not persist between server restarts. - Player variable names are case-sensitive strings. Use consistent naming across
SetandGetnodes in the same graph. - Item modification nodes (
set_item_name,set_item_lore,enchant_item) return a newItemStackoutput — wire their outputItemport into aGive Itemnode to deliver the result to a player. - Enchantment names use Bukkit enum names (e.g.
DAMAGE_ALL,PROTECTION_ENVIRONMENTAL,ARROW_DAMAGE). color_texttranslates&color codes to the Minecraft§format (e.g.&aHello→ green "Hello").cooldownis keyed by a text string — use unique keys per cooldown (e.g."kit_starter","pvp_damage").
Node Count
| Category | Previous | Added | Total |
|---|---|---|---|
| Events | 16 | 6 | 22 |
| Logic | 13 | 15 | 28 |
| Actions | 6 | 13 | 19 |
| Data | 5 | 4 | 9 |
| Total | 40 | 38 | 78 |
See Also
v0.2.3 - beta
Veltrix v0.2.3 Release Notes
Release date: 2026-03-19
Overview
v0.2.3 introduces a new project-first workflow built around a dedicated home screen. This update improves project management, recovery safety, and day-to-day usability when building plugins.
Major Additions
Home Screen
The application now starts on a home screen where all projects are listed.
You can now:
- Create new projects directly from the home screen
- Open existing projects with one click
- Manage projects from each project card
Project Creation Flow
A full New Project dialog is now available from the home screen.
The dialog includes:
- Project name
- Project location/folder
- Java package name
- Live path preview
Autosave
Projects now autosave every 10 seconds while editing.
Autosave behavior:
- Runs in the background while a project is open in the editor
- Saves graph/project state periodically
- Helps prevent data loss from accidental closes or interruptions
Home Screen Project Actions
Each project card includes an action menu with:
- Rename Project
- Reveal Project Folder
- Duplicate Project
- Delete Project
Delete behavior:
- Removes the project from Veltrix metadata and saved snapshot data
- Does not delete your project folder files from disk
Version Display
The app version is now always visible on the home page header as v<version>.
The displayed value is sourced from Maven build metadata (pom version).
UX / UI Improvements
- Home page layout moved to compact card/grid style for faster scanning
- New Project and compile-related dialogs now use dark-theme styling
- Improved project management flow from startup through compile
Notes for Existing Users
- Existing projects remain compatible
- Projects are still accessible through Veltrix project storage
- Autosave updates timestamps and saved data as you work
Recommended Upgrade Validation
After upgrading to v0.2.3, validate the following:
- Open app and confirm the home screen appears first
- Create a new project and verify it appears in the home list
- Open a project and wait at least 10 seconds, then reopen to confirm autosave
- Test project actions (rename, duplicate, reveal folder, delete)
- Confirm the home header shows the current version label
v0.2.2 - beta
Veltrix Release Notes
New Logic Nodes
This release adds five new logic nodes for flow control and math workflows:
-
Loop (
logic.loop)- Inputs:
In(Execution),Count(Data: Number) - Outputs:
Loop(Execution),Done(Execution)
- Inputs:
-
For Each Player (
logic.foreach_player)- Inputs:
In(Execution) - Outputs:
Loop(Execution),Player(Data: Player),Done(Execution)
- Inputs:
-
While Loop (
logic.while)- Inputs:
In(Execution),Condition(Data: Boolean) - Outputs:
Loop(Execution),Done(Execution)
- Inputs:
-
Random Number (
logic.random_number)- Inputs:
Min(Data: Number),Max(Data: Number) - Outputs:
Value(Data: Number)
- Inputs:
-
Math Operation (
logic.math)- Editable field:
Operator(+,-,*,/,%) - Inputs:
A(Data: Number),B(Data: Number) - Outputs:
Result(Data: Number)
- Editable field:
Included Improvements
- Export/code generation support for all new nodes
- Math operator editing support in the node UI
- Node reference documentation updated in
docs/NODES.md
Note: the -all.jar is platform-specific for JavaFX natives. Build and release it on each target OS (Linux/Windows/macOS) for best compatibility.