Immersive Messages
Immersive messages are HUD popups rendered directly to the overlay layer, outside Minecraft’s normal text component pipeline. They’re the primary feature that distinguishes ETA from a simple markup mod.
What an immersive message is
Section titled “What an immersive message is”An immersive message is a floating text element drawn onto the screen by ETA’s overlay renderer. It has no connection to chat, item names, or other inline surfaces; it exists purely on the HUD for as long as its lifetime allows, then disappears.
Unlike inline markup (which works anywhere Minecraft renders text), an immersive message carries layout properties: an anchor point, an x/y offset, a text scale, an optional background, and whole-message effects that transform the message as a unit. None of those properties exist in the inline markup pipeline.
Triggering one
Section titled “Triggering one”From a command: /eta send sends an immersive message to one or more players from the server side. See the Commands page for the full syntax.
From Java: construct an ImmersiveMessage and pass it to EmbersTextAPI.sendMessage(player, msg). See Sending Messages for a walkthrough.
From KubeJS: call EmbersText.send(player, EmbersText.markup(duration, text)) from a server script. See KubeJS for the full binding (NeoForge 1.21.1 only).
Lifecycle
Section titled “Lifecycle”Every immersive message has three phases:
fadeIn (ticks) + duration (ticks) + fadeOut (ticks) = total lifetimeduration is a float measured in ticks (20 ticks = 1 second). It represents how long the message sits fully visible. fadeInTicks and fadeOutTicks are both int values. During the fade-in phase the message alpha ramps from 0 to 1; during fade-out it ramps back down. Neither fade is required; both default to 0.
| Getter | Returns | Unit |
|---|---|---|
getDuration() | visible duration | ticks (float) |
getFadeInTicks() | fade-in length | ticks (int) |
getFadeOutTicks() | fade-out length | ticks (int) |
totalLifetime() | fadeIn + duration + fadeOut | ticks (float) |
totalLifetimeTicks() | ceil(totalLifetime()) | ticks (int) |