Repository navigation
4.References
Placeholders are bits of text in {curly braces} that get replaced with live values. Each player sees their own values: {player.name} shows each viewer their own name.
Format: {namespace.key}, {namespace.key:argument}, and filters after a |: {player.health|round}.
In game: /aholo placeholders lists every namespace on your server (other mods can add more), and /aholo placeholders <namespace> lists its keys. In the editor, text fields have a picker for them.
| Placeholder | Shows |
|---|---|
{player.name} |
Player name |
{player.displayname} |
Display name (team prefix, nickname mods) |
{player.uuid} |
Player UUID |
{player.x} / y / z
|
Exact position |
{player.blockx} / blocky / blockz
|
Block position |
{player.yaw} / pitch
|
Look direction |
{player.dimension} |
Dimension id, e.g. minecraft:overworld
|
{player.biome} |
Biome at the player's feet |
{player.health} |
Health, 1 decimal (health.max for max) |
{player.hunger} |
Food level 0-20 (alias food) |
{player.saturation} |
Saturation |
{player.thirst} |
Tough As Nails thirst, else a thirst scoreboard objective |
{player.armor} |
Armor points |
{player.air} |
Air in ticks (300 = full) |
{player.level} |
XP level |
{player.xp} |
Total XP points |
{player.xp.progress} |
Progress to the next level, 0-100 |
{player.gamemode} |
survival / creative / adventure / spectator |
{player.flying} / sneaking
|
true / false |
{player.op} |
Op level 0-4 |
{player.perm:<node>} |
true if the player has the permission (LuckPerms, else op 2) |
{player.team} |
Scoreboard team |
{player.held} |
Name of the item in the main hand |
{player.inventory:<slot>} |
Item id in inventory slot 0-35 |
{player.equipment:<slot>} |
Item id in mainhand / offhand / head / chest / legs / feet |
{player.item.count:<item>} |
How many of an item the player carries |
{player.effect:<effect>} |
Effect level (empty if none); effect.time:<effect> for seconds left |
{player.objective:<name>} |
Score in a scoreboard objective |
{player.kills} |
Player kills (also mobkills, deaths) |
{player.stat:<id>} |
Any vanilla stat, e.g. stat:jump
|
{player.ping} |
Ping in ms (ping.color for green/yellow/red) |
{player.playtime} |
Play time like 5h 12m (playtime.seconds for raw) |
| Placeholder | Shows |
|---|---|
{server.name} |
Server MOTD (alias title) |
{server.players} |
Players online (players.max for the limit) |
{server.uptime} |
Time since the server started |
{server.time:<pattern>} |
Real time (default HH:mm:ss) |
{server.tps} |
Ticks per second (tps.color for colour) |
{server.mspt} |
Milliseconds per tick (mspt.color) |
{server.ram.used:<gb or mb>} |
Memory used (ram.max for the limit) |
{server.version} |
Minecraft version (brand for the server software) |
{server.mod.count} |
Number of mods |
{server.mod:<modid>} |
A mod's version (mod.name:<modid> for its name) |
| Placeholder | Shows |
|---|---|
{world.name} |
Dimension id (alias id) |
{world.players} |
Players in this dimension |
{world.time} |
In-game clock HH:mm (time.alt adds the day) |
{world.time.day} |
In-game day number |
{world.weather} |
clear / rain / thunder |
{world.mobs:<category>} |
Mob count (mobs.max:<category> for the cap) |
| Placeholder | Shows |
|---|---|
{time.now:<pattern>} |
Current time (default HH:mm); add a zone: now:HH:mm@America/New_York
|
{time.date:<pattern>} |
Current date (default yyyy-MM-dd) |
{time.unix} |
Unix time in seconds |
{time.zone} |
The server's time zone |
{time.until:<date>} |
Countdown to yyyy-MM-dd[ HH:mm], like 2d 4h 3m 10s
|
{time.until.seconds:<date>} |
Seconds left |
{time.since:<date>} |
Time since a date (since.seconds for raw) |
| Placeholder | Shows |
|---|---|
{top.name:<objective>:<rank>} |
Name at a rank (1 = highest) |
{top.value:<objective>:<rank>} |
Score at a rank |
{top.rank:<objective>} |
The viewer's rank |
{top.count:<objective>} |
Entries on the board |
{top.name:state.<key>:<rank>} |
Rank by a player variable instead of a scoreboard |
| Placeholder | Shows |
|---|---|
{holo.alias} |
Hologram name (id for its UUID) |
{holo.x} / y / z
|
Position |
{holo.dim} |
Dimension |
{holo.page} / {holo.pages}
|
Viewer's page number / pages they can open: Page {holo.page}/{holo.pages}
|
{holo.page.title} |
Title of the current page |
{holo.menu} |
Name of the open menu (empty if none) |
| Placeholder | Shows |
|---|---|
{state.<key>} |
This player's own variable ({state.key:default} when unset) |
{var.<key>} |
Variable: the player's own, else the global one ({var.coins:0}) |
{var.global.<key>} / {var.player.<key>}
|
Only the global / only the player's own |
{input.<name>} |
What the player entered in input field <name> on this hologram |
{meta.<key>} |
A value stored on the hologram (/aholo <id> meta add <key> <value>) |
{data.<key>} |
A template variable (or {key} for short) |
{lang.<translation.key>} |
Text from a language file, in the viewer's language |
{pos.x} / y / z
|
Viewer position (also blockx...) |
Use {link.<source>.<key>:<link name>}. See [Linking blocks](LINK: Linking guide).
| Source | Keys |
|---|---|
block |
name, id, powered (redstone 0-15), x, y, z
|
container |
count (add ,ITEM to count one item), has, slots, used, free, fill (%), types, top
|
furnace |
burning, progress (%), burn_seconds, input, fuel, output, input_count, fuel_count, output_count
|
sign |
line (add ,1 to ,4), text
|
Also: {link.available:<name>} (true when the block is loaded) and {link.name:<name>}.
Example: {link.container.count:chest,minecraft:diamond}.
| Placeholder | Shows |
|---|---|
{trade.max:SIDE,ITEM,PRICE[,SHOP[,LINK[,CURRENCY]]]} |
Most the viewer can buy/sell right now |
{trade.economy} |
yes when an economy mod is connected |
| Placeholder | Shows |
|---|---|
{econ.player.balance} |
The viewer's balance in the connected economy mod |
{econ.format:<amount>} |
An amount written the economy mod's way |
An economy mod may replace these with its own {econ.*} keys.
| Mod | Placeholders |
|---|---|
| Lightman's Currency |
{lightman.balance}, {lightman.coins}, {lightman.bank}, {lightman.format:<value>}
|
| FTB Quests |
{ftbquests.progress:<id>}, completed:<id>, started:<id>, title:<id>, quests.completed, quests.total, chapters, team
|
| FTB Teams |
{ftbteams.name}, id, members, members.list, online, online.list, owner, color
|
Add after a |, and chain as many as you like: {player.health|round|default:?}
| Filter | Does |
|---|---|
upper / lower / title
|
Change case (title also turns _ into spaces) |
trim |
Strip surrounding spaces |
strip |
Remove colour codes |
max:<n> |
Cut to n characters, adding … |
pad:<n>[:char] / padleft:<n>[:char]
|
Pad to n characters (padleft:3:0 makes 007) |
replace:<from>:<to> |
Replace text |
prefix:<text> / suffix:<text>
|
Add text, only when not empty |
default:<text> |
Use text when empty |
if:<then>[:<else>] |
then when the value is truthy (not empty / false / 0 / no) |
yesno |
true → Yes, false → No |
map:a=x,b=y[,*=z] |
Translate values (* = anything else) |
round[:decimals] / int
|
Round / drop decimals |
number[:decimals] |
Thousands separators (1,234,567) |
compact[:decimals] |
1.2K, 3.4M, 5B |
percent:<max>[:decimals] |
Value as % of max (`health |
add:<n> / sub:<n> / mul:<n> / div:<n>
|
Maths |
bar:<max>[:width[:full[:empty]]] |
Progress bar |
color:<good>:<warn>[:low] |
Green / yellow / red by threshold |
duration[:unit] |
3725 → 1h 2m 5s (unit: s, ticks, ms, m, h) |
clock[:unit] |
3725 → 01:02:05 |
Test one: /aholo placeholders parse <text> shows what a piece of text turns into for you.
An action is what happens when a button is clicked (or when a player walks near a hologram, see [Proximity triggers](LINK: Proximity guide)).
Easiest way: in the editor, select a button and click On click. Pick what it should do from the list and fill in the fields. The action text is written for you.
You can also type actions directly. Placeholders work inside them: advholo:message?text=Hi {player.name}.
| Editor name | Action |
|---|---|
| Next page | advholo:page_next |
| Previous page | advholo:page_prev |
| Go to page | advholo:page_set?page=2 |
| Open a menu | advholo:menu_open?name=shop |
| Toggle a menu | advholo:menu_toggle?name=shop |
| Close the menu | advholo:menu_close |
| Editor name | Action |
|---|---|
| Show an element | advholo:show?id=details |
| Hide an element | advholo:hide?id=details |
| Show/hide an element | advholo:toggle_show?id=details |
Several ids: id=a,b,c. Add &seconds=5 to switch back after 5 seconds.
Stored per player, for example a setting they toggle.
| Editor name | Action |
|---|---|
| Set a player variable | advholo:state_set?key=music&value=on |
| Toggle a player variable | advholo:state_toggle?key=music |
| Add to a player variable | advholo:state_add?key=clicks&amount=1 |
| Clear a player variable | advholo:state_clear?key=music |
Per player by default, or shared by everyone with &scope=global. Saved unless you add &temp=true.
| Editor name | Action |
|---|---|
| Set a variable | advholo:var_set?key=coins&value=5 |
| Add to a variable | advholo:var_add?key=coins&amount=1 |
| Toggle a variable | advholo:var_toggle?key=lights |
| (clear) | advholo:var_clear?key=coins |
| Editor name | Action |
|---|---|
| Chat message (to the player) | advholo:message?text=&aWelcome! |
| Action bar text | advholo:actionbar?text=&eHello |
| Play a sound (to the player) | advholo:sound?id=minecraft:entity.experience_orb.pickup&volume=1&pitch=1 |
| Editor name | Action |
|---|---|
| Buy / sell (shop) | advholo:trade?side=buy&qty=1&item=minecraft:bread&price=2 |
See [Shops](LINK: Shops guide) for barter (emerald) shops, chest stock and money shops.
| Editor name | Action |
|---|---|
| Run a command as the player | cmd:/spawn |
| Run a command as console | console:/give {player.name} minecraft:diamond 1 |
Console commands run with full permissions. Only staff can add them.
| Editor name | Action |
|---|---|
| Fire an event (for mods/scripts) | advholo:event?name=opened_shop |
| Server event flag |
advholo:flag?name=sale&on=true (or false, toggle); use with the flag(sale) condition |
| Mod action | an action another mod added, e.g. mymod:open_bank
|
| Custom | type any action yourself |
Each button also has click settings in the editor (under Click behaviour):
- cost: an item cost (e.g. 2 diamonds) or a money cost (needs an economy mod)
- cooldown between clicks
- confirm: ask "Are you sure?" first
- disabled if: grey the button out when a [condition](LINK: Conditions reference) is true
- tooltip shown when hovering
- Then (action chain): more actions after the first, on success or failure, with an optional delay
A condition decides whether something is shown (an element's Who sees it), or whether a button is greyed out (disabled if). It's checked per player, so different players can see different things.
| Condition | True when |
|---|---|
has(x) |
placeholder x has a value, e.g. has(link.container.count:chest)
|
empty(x) |
placeholder x is empty |
eq(x,value) / ne(x,value)
|
x equals / doesn't equal value (not case-sensitive) |
gt(x,n) gte(x,n) lt(x,n) lte(x,n)
|
number comparisons; n can be a placeholder: gte(econ.player.balance,{data.price})
|
contains(x,text) / starts(x,text)
|
text checks (not case-sensitive) |
perm(node) |
the player has a LuckPerms permission |
op(level) |
the player has that op level |
true / false
|
always / never |
Write placeholders inside conditions without braces: eq(player.gamemode,creative).
| Condition | True when |
|---|---|
between(18:00,23:30) |
real (server) time is in that range; can wrap past midnight |
weekday(sat,sun) |
it's one of those days |
night() / day()
|
it's night / day in game |
gametime(13000,23000) |
the in-game time of day (ticks) is in that range |
rotate(SECONDS,INDEX,COUNT) |
one slot of a rotation: show COUNT elements in turn, INDEX from 0 |
flag(NAME) |
a server event flag is on (advholo:flag?name=NAME&on=true) |
| Condition | True when |
|---|---|
available(LINK) |
the linked block is loaded and present |
linked(LINK) |
the hologram has a link with that name |
-
!in front negates:!has(trade.economy) -
&&means and,||means or (||is weakest):perm(vip) || op(2)
Example: show a VIP-only button between 6 and 11 pm:
perm(group.vip) && between(18:00,23:00)
A condition that's mistyped counts as false, so it hides the element rather than showing it to everyone.
The main command is /aholo. /holo and /ah also work when no other mod uses those names. Most commands need operator (op level 2). Players use /myholo for their own holograms.
Tip: you rarely need most of these. The editor (look at a hologram, press H) does the same things with buttons. Tab-completion shows every option in game.
| Command | Does |
|---|---|
/aholo create <name> <title> |
Create a hologram in front of you |
/aholo editor |
Open the hologram browser |
/aholo <name> edit |
Open the editor for a hologram |
/aholo list / /aholo list near <range>
|
List holograms (all, or nearby) |
/aholo movehere <name> |
Move a hologram to where you stand |
/aholo move <name> <x> <y> <z> |
Nudge a hologram by x/y/z blocks |
/aholo rename <name> <newName> |
Rename |
/aholo duplicate <name> <newName> |
Copy a hologram |
/aholo delete <name> |
Delete |
/aholo anchor <name> ... |
Facing and rotation (reset to undo) |
/aholo spawndemo |
Spawn the showcase hologram |
| Command | Does |
|---|---|
/aholo <name> size <cols> <rows> |
Panel size |
/aholo <name> scale <scale> |
Overall scale |
/aholo <name> bg ... / frame ...
|
Background colour, border and corners |
/aholo <name> render <distance> |
How far away it's visible |
/aholo <name> bounds <width> <height> |
Click area |
/aholo <name> clickrange <blocks> |
How far away it can be clicked |
/aholo <name> text add ... / button add ... / shape add ... / image add ... / input add ... / chart add ...
|
Add elements (easier in the editor) |
/aholo <name> leaderboard <objective> <rows> <title> |
Add a ready-made leaderboard |
/aholo <name> widget cond <id> <expr> |
Set an element's condition (clear to remove) |
| Command | Does |
|---|---|
/aholo <name> page list / add <page> <title> / delete <page> / edit <page>
|
Pages |
/aholo <name> page lock <page> perm <node> / op <level> / clear
|
Who may open a page |
/aholo <name> menu list / add <name> / delete <name> / edit <name> / open <name> / close
|
Menus |
/aholo <name> view list / add <view>
|
Extra views (staff, VIP...) |
/aholo <name> template apply <template> / save <name> / clear / info
|
Templates |
/aholo templates list / reload / info <t> / delete <t>
|
Manage saved templates |
| Command | Does |
|---|---|
/aholo <name> click action <action> / click clear
|
Action when the panel itself is clicked |
/aholo <name> proximity radius <blocks> / cooldown <seconds> / enter <action> / leave <action> / show / clear
|
[Proximity triggers](LINK: Proximity guide) |
/aholo <name> attach self / player <player> / public <player> / position <front or above> / offset <right> <up> <forward> / info
|
[Follow a player](LINK: Follow guide) |
/aholo <name> detach |
Stop following |
/aholo <name> link add <name> / remove <name> / list
|
[Link blocks](LINK: Linking guide) |
/aholo <name> meta add <key> <value> |
Store a value ({meta.key}) |
/aholo <name> data bind <binding> / clear
|
Data binding for templates |
/aholo <name> staff hide / show / lock / unlock / revoke
|
Staff controls on player holograms |
| Command | Does |
|---|---|
/aholo placeholders / placeholders <namespace> / placeholders filters
|
List placeholders and filters |
/aholo placeholders parse <text> |
Show what text turns into for you |
/aholo flag on <name> / off <name> / list
|
Server event flags (for conditions) |
/aholo images list / reload
|
Images in config/advancedinteractions/images/
|
/aholo log player <who> <hours> / holo <name> <hours>
|
Action log: who clicked what |
/aholo perf / perf reset
|
Placeholder performance counters |
Players can make and edit their own holograms (if the server allows it, see [Player-owned holograms](LINK: Player holograms guide)).
| Command | Does |
|---|---|
/myholo create <name> [template] |
Create one, optionally from an allowed template |
/myholo list |
Your holograms |
/myholo edit <name> |
Open the editor |
/myholo move <name> |
Move it to where you stand |
/myholo link <name> <link> / unlink <name> <link>
|
Link it to a block (e.g. your shop chest) |
/myholo delete <name> |
Delete it |
Server settings. They're the same on every loader; only the file differs:
-
Forge / NeoForge:
serverconfig/advancedinteractions-server.tomlinside the world folder -
Fabric:
config/advancedinteractions-server.json
| Setting | Default | What it does |
|---|---|---|
clickReach |
6.0 | Default distance (blocks) players can click hologram elements from |
clickReachMax |
16.0 | Largest click distance a hologram may set |
clickDebounceTicks |
4 | Minimum ticks between two clicks on the same element by one player (stops double purchases from lag) |
| Setting | Default | What it does |
|---|---|---|
maxViewDistance |
128.0 | Server-wide limit on how far holograms are visible (blocks) |
placeholderRates |
top=10, ftbquests=5, container=1, furnace=1
|
Minimum seconds between refreshes per placeholder namespace |
pauseWithoutViewers |
true | Skip chart sampling and proximity checks for holograms with nobody nearby |
| Setting | Default | What it does |
|---|---|---|
enabled |
true | Record clicks, purchases/sales and staff editor actions (/aholo log) |
retentionDays |
30 | Days to keep log entries |
What players can do with their own holograms (/myholo).
| Setting | Default | What it does |
|---|---|---|
enabled |
true | Let players edit holograms they own |
maxHologramsPerOwner |
3 | Most holograms one player may make |
maxElements |
40 | Most elements in a player-owned hologram |
maxColumns / maxRows
|
20 / 16 | Largest panel size |
maxScale |
1.5 | Largest hologram scale |
maxElementScale |
3.0 | Largest scale of one element |
maxDistanceFromLink |
6.0 | Furthest a player hologram may be from the block it's linked to |
maxTextLength |
120 | Longest text in one element |
editCooldownSeconds |
3 | Seconds between saves |
templates |
(none) | Templates players may start from and apply |
placeholders |
link, input, trade, holo, meta, data, state, time, lang
|
Placeholder namespaces players may use. Others are removed from templates they apply; anything staff already put on a hologram stays. |
| Setting | Default | What it does |
|---|---|---|
blockedWords |
(none) | Words blocked in player-edited text and text input fields (not case-sensitive) |
Everything here works in any hologram text: text elements, button labels, tooltips and messages.
Type & and a code in front of the text it should apply to.
| Code | Colour | Code | Colour |
|---|---|---|---|
&0 |
Black | &8 |
Dark gray |
&1 |
Dark blue | &9 |
Blue |
&2 |
Dark green | &a |
Green |
&3 |
Dark aqua | &b |
Aqua |
&4 |
Dark red | &c |
Red |
&5 |
Dark purple | &d |
Light purple |
&6 |
Gold | &e |
Yellow |
&7 |
Gray | &f |
White |
| Code | Style |
|---|---|
&l |
Bold |
&o |
Italic |
&n |
Underline |
&m |
Strikethrough |
&k |
Scrambled |
&r |
Reset to normal |
Any colour: &#RRGGBB, e.g. &#FF8800Orange.
:grad[#FF0000-#0000FF]Your text: fades the text from the first colour to the second. In the editor, text fields have a gradient helper.
Put items, blocks or mobs right inside a line of text:
| Token | Shows |
|---|---|
:#ITEM:minecraft:diamond: |
An item icon |
:#BLOCK:minecraft:stone: |
A 3D block |
:#ENTITY:minecraft:zombie: |
A mob |
Options go in brackets before the closing ::
:#ITEM:minecraft:emerald[size@1.5,rotate@true]:
-
size@N: bigger or smaller (1 = normal) -
rotate@true: spin it -
facing@east: which way it faces
{player.name}, {server.tps} and so on. See Placeholders.
Use \n for a new line inside one text element or tooltip.