Appearance
Placeholders
Placeholders are dynamic values you can use in supported text fields. They are filled in when the flow runs.
Use placeholders in fields that show the {} icon.
Syntax
Wrap placeholder names in percent signs:
text
%placeholder.name%Examples:
%player.name%%world.name%%command.arg[1]%%global.double_xp_event%
Universal Placeholders
These placeholders are available globally across all flows, regardless of the trigger type.
Player
| Placeholder | Type | Description | Example |
|---|---|---|---|
%player.name% | string | Returns the player username | TheVoidNexus |
%player.displayname% | string | Formatted display name (with prefix) | &4Developer TheVoidNexus |
%player.tabname% | string | Formatted player tab list name (with prefix and suffix) | &4Developer TheVoidNexus &7[AFK] |
%player.uuid% | string | Returns the player UUID | 933b35ec-3571-4e85-938d-0f8094a98551 |
%player.ip% | string | Returns the player IP address | 127.0.0.1 |
%player.locale% | string | Returns the player locale/language | en |
%player.first_join% | boolean | Returns whether this is the first join | true / false |
%player.playtime% | number | Returns total playtime in seconds | 3600 |
%player.playtime.formatted% | string | Returns total playtime in a human-readable format | 2h 31m |
%player.ping% | number | Player ping in milliseconds | 45 |
%player.version% | string | Player client version | 1.16.5 |
%player.client% | string | Player client | fabric |
%player.joinhost% | string | The host the player joined from | play.oasisworld.net |
WARNING
Use %player.name% when you need a stable player identifier across online/offline account mode changes. UUIDs can change if a player switches authorization mode.
Rank & Permissions
| Placeholder | Type | Description | Example |
|---|---|---|---|
%player.rank.name% | string | Highest rank display name | Developer |
%player.rank.id% | string | Highest rank internal ID | dev |
%player.rank.prefix% | string | Returns the player prefix | &cDeveloper |
%player.rank.suffix% | string | Returns the player suffix | - |
%player.track.name% | string | Highest active permission track name | - |
%player.track.id% | string | Highest active permission track ID | - |
Location
| Placeholder | Type | Description | Example |
|---|---|---|---|
%player.location.world% | string | Current world name | world |
%player.location.x% | number | X coordinate | 150.5 |
%player.location.y% | number | Y coordinate | 64 |
%player.location.z% | number | Z coordinate | -200.3 |
%player.location.yaw% | number | Player yaw rotation (left/right angle) | 90.0 |
%player.location.pitch% | number | Player pitch rotation (up/down angle) | 15.5 |
%player.location.biome% | string | Current biome | PLAINS |
Stats
| Placeholder | Type | Description | Example |
|---|---|---|---|
%player.health% | number | Current health | 15.5 |
%player.max_health% | number | Maximum health | 20 |
%player.food% | number | Food/hunger level | 20 |
%player.level% | number | XP level | 30 |
%player.exp% | number | Current XP progress | 0.75 |
%player.gamemode% | string | Current gamemode | SURVIVAL |
Inventory
| Placeholder | Type | Description | Example |
|---|---|---|---|
%player.inventory.mainhand.type% | string | Main hand item material | DIAMOND_SWORD |
%player.inventory.mainhand.name% | string | Main hand item display name | Excalibur |
%player.inventory.mainhand.amount% | number | Main hand item stack amount | 1 |
%player.inventory.offhand.type% | string | Offhand item material | SHIELD |
%player.inventory.empty_slots% | number | Count of empty inventory slots | 12 |
%player.inventory.helmet% | string | Currently equipped helmet material | IRON_HELMET |
Economy
| Placeholder | Type | Description | Example |
|---|---|---|---|
%economy.balance% | number | Raw player balance | 1500.50 |
%economy.balance_formatted% | string | Clean, formatted balance | 1.5k |
%economy.currency.name% | string | Currency name | Coins |
%economy.currency.symbol% | string | Currency symbol | $ |
World
| Placeholder | Type | Description | Example |
|---|---|---|---|
%world.name% | string | Current world name | world_nether |
%world.time% | number | Current world time (ticks) | 6000 |
%world.weather% | string | Current weather state | CLEAR |
%world.difficulty% | string | World difficulty level | HARD |
Server
| Placeholder | Type | Description | Example |
|---|---|---|---|
%server.name% | string | Server name | MyServer |
%server.online% | number | Online player count | 150 |
%server.max_players% | number | Maximum player slots | 500 |
%server.tps% | number | Server Ticks Per Second | 19.9 |
%server.uptime% | number | Server uptime in seconds | 86400 |
System
| Placeholder | Type | Description | Example |
|---|---|---|---|
%system.date% | string | Current date | 2026-05-07 |
%system.time% | string | Current server time | 14:32:15 |
%system.timezone% | string | Server timezone | Europe/Stockholm |
%system.ram.used% | number | Used RAM in MB | 6144 |
%system.ram.free% | number | Free RAM in MB | 2048 |
%system.cpu.usage% | number | CPU usage percentage | 37.5 |
Entity
| Placeholder | Type | Description | Example |
|---|---|---|---|
%entity.name% | string | Entity display name | Zombie Warrior |
%entity.type% | string | Entity type | ZOMBIE |
%entity.uuid% | string | Entity UUID | 550e8400... |
%entity.health% | number | Entity health | 20 |
Context-Specific Placeholders
These placeholders are only available when the flow starts from the matching trigger or event.
Command Events
Available when using a Command Trigger.
| Placeholder | Type | Description | Example |
|---|---|---|---|
%command.name% | string | The base command name | spawn |
%command.label% | string | The exact alias/label used by the player | tp |
%command.args% | array | All command arguments | ["home", "lobby"] |
%command.arg[]% | string | All command arguments as text | home lobby |
%command.arg[x]% | string | Specific argument by 1-based index | %command.arg[1]% -> home |
%command.arg[1,2,3]% | string | Selected arguments by 1-based indexes | home lobby spawn |
%command.arg[>x]% | string | Arguments after the 1-based index | %command.arg[>1]% -> args 2+ |
%command.arg[>=x]% | string | Arguments from the 1-based index | %command.arg[>=1]% -> args 1+ |
%command.arg[<x]% | string | Arguments before the 1-based index | %command.arg[<3]% -> args 1-2 |
%command.arg[<=x]% | string | Arguments through the 1-based index | %command.arg[<=3]% -> args 1-3 |
%command.args.x% | string | Legacy specific argument by 1-based index | %command.args.1% -> home |
%command.args_count% | number | Number of arguments provided | 2 |
How Arguments Work
Because
%command.args%returns an array, you can use the Array node to get arguments by index. For example, in/teleport to player TheVoidNexus:
- Index
0returns"to"- Index
1returns"player"- Index
2returns"TheVoidNexus"Or use
%command.arg[...]%placeholder syntax, where indexes are 1-based:
%command.arg[]%->to player TheVoidNexus%command.arg[1]%->to%command.arg[>1]%->player TheVoidNexus%command.arg[>=2]%->player TheVoidNexus%command.arg[<3]%->to player%command.arg[<=2]%->to player%command.arg[1,3]%->to TheVoidNexus
General Events
Available when using an Event Trigger.
| Placeholder | Type | Description | Example |
|---|---|---|---|
%event.name% | string | The name of the fired event | player_join |
%event.cancelled% | boolean | Whether the event has been cancelled | false |
Chat Events
Available specifically during the player_chat event.
| Placeholder | Type | Description | Example |
|---|---|---|---|
%chat.message% | string | The full chat message | Hello world! |
%chat.message_stripped% | string | Chat message stripped of color codes | Hello world! |
Combat Events
Available during damage/death events.
| Placeholder | Type | Description | Example |
|---|---|---|---|
%combat.damage% | number | Amount of damage dealt | 5 |
%combat.damage_cause% | string | The cause of the damage | ENTITY_ATTACK |
%combat.attacker% | string | Name of the attacking entity/player | Zombie |
%combat.weapon% | string | Material of the weapon used | DIAMOND_SWORD |
%combat.critical% | boolean | Whether the hit was critical | true |
Custom Placeholders
Variables created with Set Variable or Set Boolean can be used as placeholders:
%custom.variable%This is useful for storing calculations, array values, flags, or text and then reusing them later in messages, titles, conditions, or commands.
Scopes:
- Local: Only exists while the current flow branch is running.
- Player: Stored separately per player.
- Global: Shared across the server network.
Target Player Placeholders
You can read a placeholder for a specific player instead of the triggering player. This is useful for admin commands, moderation tools, comparisons, and multi-player flows.
Syntax
Append the target player's username or UUID in parentheses:
%placeholder.name(targetPlayer)%Examples:
%player.health(TheVoidNexus)%returns the health of playerTheVoidNexus.%player.rank.prefix(Notch)%returns Notch's rank prefix.%custom.my_variable(933b35ec-3571-4e85-938d-0f8094a98551)%returns the value of player variablemy_variablefor the player with that exact UUID.
Online and Offline Players
Online player values such as health, location, and inventory are live. Offline players can still return persistent profile values such as name, rank, and saved variables. Live-only values for offline players may return safe fallback values such as 0 or none.
Nested & Dynamic Examples
You can use another placeholder inside the parentheses:
Command Arguments:
%player.rank.name(%command.args.0%)%If a player runs/check Notch, the command argument becomes the target player.Interacted Entities:
%player.displayname(%entity.name%)%Reads the display name of the player whose name matches the interacted entity.Variables:
%my_custom_var(Notch)%Reads the player-scope custom variablemy_custom_varfor Notch.
Text Helpers
Text helpers let you trim, extract, replace, format, and conditionally show text inside supported fields.
Text Buttons
Use %text.button(<text>)(<tooltip text>)[<button id>]% inside a Send Message text field to create a clickable text button. Add a Button Trigger node with the same button ID to choose what happens when the player clicks it.
Example: %text.button([Accept])(&aClick to accept)[accept]%
Set the Button Trigger click action to Trigger Flow to run the matching output. You can also use direct click actions like Run Command, Suggest Command, Open URL, or Copy to Clipboard. Inside a triggered Button Trigger flow, %button.id% returns the clicked button ID.
Text Functions
| Placeholder | Return Type | Description | Example |
|---|---|---|---|
%text.button(<text>)(<tooltip text>)[<button id>]% | string | Creates a clickable text button handled by a Button Trigger node. | %text.button([Accept])(&aClick to accept)[accept]% |
%text.trim(text)% | string | Removes leading and trailing whitespace from the text. | %text.trim( hello )% → hello |
%text.length(text)% | number | Returns the total character length of the text. | %text.length(apple)% → 5 |
%text.delete[idx1][idx2](text)% | string | Removes characters at a single index or between two indices (inclusive start, exclusive end). | %text.delete[1][3](hello)% → hlo %text.delete[1](hello)% → hllo |
%text.extract[idx1][idx2](text)% | string | Extracts characters at a single index or between two indices (inclusive start, exclusive end). | %text.extract[1][3](hello)% → el %text.extract[1](hello)% → e |
%text.extract.word[idx1][idx2](text)% | string | Extracts word(s) by index or range (0-based, space-separated). Range is inclusive of both ends. | %text.extract.word[0][1](hello world extra)% → hello world %text.extract.word[1](hello world)% → world |
%text.extract.before[idx](text)% | string | Extracts all characters before the specified index. | %text.extract.before[3](hello)% → hel |
%text.extract.after[idx](text)% | string | Extracts all characters after the specified index (inclusive of index). | %text.extract.after[3](hello)% → lo |
%text.replace(old)(new)(text)% | string | Replaces occurrences of old with new in the target text. | %text.replace(a)(o)(apple)% → opple |
%text.titlecase(text)% | string | Converts the first letter of every word to uppercase. | %text.titlecase(hello world)% → Hello World |
%text.uppercase(text)% | string | Converts the entire text to uppercase. | %text.uppercase(hello)% → HELLO |
%text.lowercase(text)% | string | Converts the entire text to lowercase. | %text.lowercase(HELLO)% → hello |
%text.convert.number(text)% | number | Strips non-numeric characters and converts the string to a numeric value. | %text.convert.number(12.34)% → 12.34 |
%text.convert.text(text)% | string | Formats a numeric value into a plain string. | %text.convert.text(100)% → 100 |
Conditional Show Function
| Placeholder | Return Type | Description | Example |
|---|---|---|---|
%text.show[boolean][text_if_true][text_if_false]% | string | Renders the first text option if boolean, placeholder, or variable evaluates to true (or 1, yes), otherwise renders the second (optional) text option. | %text.show[%player.first_join%][New User][Returning User]% |
