Queues

A queue is an ordered list of steps sent to a player on a named channel. Each step plays, waits for every message in it to expire, then the next step starts automatically. You can run multiple queues on the same player at once by using different channel names.

Every queue belongs to a channel. You name the channel yourself when you call /eta queue. There is no default — the channel argument is always required.

/eta queue Steve cutscene "<dur:80>Step one"
/eta queue Steve subtitles "<dur:60>Narrator line"

Both queues run independently. The cutscene channel and the subtitles channel do not interfere with each other’s step timing.

The queue_definition argument is a single greedy string with two separators:

SeparatorMeaning
|Starts the next step. Steps play one at a time.
&Adds a second message to the current step. Both display simultaneously.

Each token in the definition is a markup string that must contain a <dur:N> tag. N is a float in ticks. If the tag is missing, that message defaults to 60 ticks.

/eta queue @a boss_fight "<dur:100><type speed=40>The gate opens...</type>" | "<dur:80><rainbow><bold>Boss Appeared!</bold></rainbow>" | "<dur:120><wave>Prepare yourself.</wave> & <dur:120><neon c=FF0000>+300 Power</neon>"

Step three above shows two messages running at the same time via &.

Wrapping tokens in "..." or '...' is optional but avoids shell quoting issues. The parser strips the outer quotes before parsing.

Advance is automatic. The client ticks every active channel on each game tick. When every message in the current step has expired (its lifetime has run down), the next step starts immediately.

You don’t send an explicit “advance” signal. Sizing the <dur:N> value controls how long each step holds before the next one begins.

Fade-out ticks on a message are part of its lifetime. A message with <dur:100> and [fade out=20] holds the step for 100 ticks total; the fade is not added on top.

Both /eta stopqueue and /eta clearqueue cancel a queue, but they differ in what happens to the step currently on screen.

clearqueue removes all pending steps from the queue but lets the current step finish its natural lifetime. The messages already visible stay on screen until they expire.

stopqueue immediately dismisses the messages currently on screen and discards all pending steps. The channel is gone instantly.

/eta clearqueue Steve cutscene -- pending steps gone, current step finishes
/eta stopqueue Steve cutscene -- current step dismissed immediately

Both commands accept an optional channel name. Without one, they act on all queues for that player.

/eta queue @a quest_end \
"<dur:80>[anchor value=MIDDLE][fade in=10 out=10]<rainbow><bold>Quest Complete!</bold></rainbow>" \
| "<dur:100>[anchor value=MIDDLE][fade in=10 out=10]<type speed=40>You have slain the dragon...</type>" \
| "<dur:100>[anchor value=MIDDLE][fade in=10 out=10]<neon c=FFD700><wave>+ 1000 XP</wave></neon> & <dur:100>[anchor value=MIDDLE_LEFT][offset x=40 y=0]<c value=#AAAAAA>Level 12</c>"

Step 1 shows the rainbow “Quest Complete!” heading centered on screen. Step 2 follows with the typewriter line. Step 3 plays the XP reward and a secondary level indicator simultaneously on different anchors.

The three-step version of this sequence is also wired into /eta test 33 if you want to fire it without typing the full string.