Skip to content

Hologram

Create floating, billboarded text in the world using the vanilla minecraft:text_display entity. Holograms are visible to all players in range of the entity — there is no per-player scope.

Metatable name: "hologram"

Spawns a new hologram at pos with the given text. Returns a hologram wrapper.

local holo = world:spawnHologram({ x = 0, y = 64, z = 0 }, "Welcome to the server!")
holo.lines = { "Line 1", "Line 2", "Line 3" }
mc.schedule(40, function()
holo:destroy()
end)

All options are optional. Pass any subset of the table below.

KeyTypeDefaultDescription
alignmentstring"center""left", "center", or "right"
billboardstring"center""fixed", "vertical", "horizontal", or "center"
lineWidthnumber200Max characters per line before wrap
backgroundnumber0x40000000ARGB int. Use -1 for no background
opacitynumber-10..255. -1 uses background alpha
shadowbooleantrueRender a drop shadow
seeThroughbooleanfalseRender through walls
glowingbooleanfalseEntity outline glow
local holo = world:spawnHologram({ x = 0, y = 64, z = 0 }, "Server info", {
alignment = "center",
billboard = "center",
background = 0x80000000,
shadow = true,
seeThrough = true,
})

type: string

The full text rendered by the hologram, with newlines (\n) separating lines. Assign a string to replace all text at once.

type: table

Lines array (strings). Read or assign; assigning replaces all text and re-joins with newlines.

type: string

One of "left", "center", "right". Read/write.

type: string

One of "fixed", "vertical", "horizontal", "center". Read/write.

  • fixed — does not rotate; text always faces the same direction
  • vertical — rotates around the vertical axis only
  • horizontal — rotates around the horizontal axis only
  • center — always faces the camera (default)

type: number

Max characters per line before text wraps. Read/write.

type: number

ARGB integer (e.g. 0x40000000). Set to -1 for no background. Read/write.

type: number

0..255, or -1 to use the background’s alpha channel. Read/write.

type: boolean

Whether the text has a drop shadow. Read/write.

type: boolean

Whether the text renders through walls. Read/write.

type: boolean

Whether the entity has the glowing outline effect. Read/write.

Updates a single line (1-indexed) without re-sending all other lines.

  • n (number) — Line index (1‑based)
  • text (string) — New line text
holo:setLine(2, "Updated second line")

Destroys the hologram entity and removes it from the manager.

holo:destroy()

Returns a table of all live hologram wrappers (in creation order).

for _, holo in ipairs(mc.holograms()) do
print(holo.uuid, holo.text)
end

Returns the hologram with the given UUID, or nil if not found.

local holo = mc.getHologram(some_uuid)
if holo then
holo.text = "Updated"
end

Holograms are global — they are visible to all players in range and persist until destroyed. All holograms are destroyed on /ignis reload. Per-player disconnect does not remove holograms (they are not owned by a player).

Holograms are entities, so they expose the entity properties via metatable delegation: pos, uuid, world, removed, glowing, tags, and so on. You can also call entity:readNbt() and entity:writeNbt(nbt) to inspect or modify the underlying NBT directly.