Frostyh Plugins

Plugins / Holograms

Holograms

Crisp floating text on display entities: placeholders, six animations, conditions, per viewer.

Get Holograms

$6.99 on BuiltByBit, list price on 16 October 2026. BuiltByBit sales can lower it, the listing shows the current price.

Buy on BuiltByBit

Also in Complete Collection: Every Plugin.

Try it live

Holograms runs on a public demo server, set up so you can use it yourself. Join, try it, then decide.

Address: try.zeropvp.xyz:25570 (Java Edition 1.21.11)

In Minecraft: Multiplayer, Add Server, paste the address, Join. Type /demo go holograms to land at its booth, or right-click the compass and pick it. The world resets every night.

Overview

Holograms

Floating text that stays crisp at any distance, built on the game's own text displays

Armour stands went out with 1.19. A hologram here is a stack of text displays, the same thing the game uses for floating text: crisp at any distance, with a real background, a real scale, and almost no cost to the server. No packet library, no dependencies, and nothing to install beside it.

Holograms at spawn: gradients, rainbow text, live TPS and player count, a per-viewer line.

Latest version
1.2.0
Server
Paper or Purpur, Java 21
BuiltByBit
Holograms on BuiltByBit
What changed in 1.2.0
  • New: /hologram clone <id> <new id> (alias copy) copies a hologram with every line, its look, permission, condition and leaderboard. A player gets the copy where they stand; from the console it lands on the same spot as the original.
  • New: /hologram insertline <id> <line> <text> puts a new line at that number and moves the lines under it down.
  • New: /hologram info <id> lists every line with its number, raw MiniMessage text and animation. Works from the console, so setline and removeline no longer need a look into holograms.yml.
  • New: /hologram near [radius] lists the holograms around you, nearest first (16 blocks by default). Click a row to teleport to it.
  • Tab completion now offers the line numbers that exist for setline, removeline and insertline.
  • Fixed: the usage lines for addline and setline lost the word <text> at the end, because MiniMessage read it as a colour tag.
  • /hologram reload now also reloads the theme colours.
  • All new commands use the existing holograms.admin permission.
  • An existing config.yml keeps working: the new messages use their defaults. The help line and the addline/setline usage fix only show after you delete or regenerate config.yml.

Features

Why server owners pick it

What makes it different

Works with

What you get

The same board at dusk; the 'Hey Frostyh' line is only visible to that player.

Leaderboards

The editor

The editor lists every hologram, switches it on or off, or creates one where you stand.

Edit any line: text, permission, colour, size, animation, background.

Lines take MiniMessage, placeholders and a per-line permission.

FAQ

Which servers does it run on?

Paper or Purpur 1.21.11 or a newer 1.21.x, with Java 21.

Do I need other plugins?

No. PlaceholderAPI is supported if you have it.

Is there DRM or a licence key?

No. There is nothing to activate and no licence server to reach, and the code is not obfuscated.

How long does setup take?

Drop the jar into /plugins and restart. The setup guide above has 5 short steps.

Can I try it before I buy?

Yes. This page has a test server with the plugin installed.

Where do I get help?

In the active support Discord, in the discussion tab on this page, or in the documentation.

Updates

Released on September 16, 2026 and updated 5 times since. The latest version is v1.3.0 (October 16, 2026). Every update is free, new Minecraft versions included.

Also by Frostyh

If this plugin helps your server, a short review on this page would mean a lot. Thank you!

Installation

Requirements

Server software
Paper, or a Paper fork such as Purpur. Spigot and CraftBukkit are not supported: the plugin uses Paper-only APIs.
Minecraft version
plugin.yml api-version 1.21; built against Paper API 1.21.11
Java
21 or newer
Required plugins
none
Optional plugins
PlaceholderAPI

Steps

  1. Download Holograms.jar from BuiltByBit. There is no licence key to enter.
  2. Stop the server and put the jar into the plugins folder.
  3. Start the server. The plugin creates plugins/Holograms/config.yml with the defaults shown under Configuration.
  4. Edit config.yml to suit your server.
  5. Apply the changes with /hologram reload (Read holograms.yml again), or restart the server.

Setup guide

  1. Drop Holograms.jar into /plugins and restart.
  2. Stand where you want the text and run /hologram create spawn.
  3. Add the rest of the lines with /hologram addline spawn <text>, or open /holograms and type them into the field.
  4. Put a placeholder in a line, for example {online} of {max} online, and watch it count.
  5. Give a line an animation from the editor if you want it to move.

Commands

From plugin.yml. "Not set" in the permission column means plugin.yml attaches no permission to the command itself; the nodes the plugin checks are listed under Permissions.

CommandAliasesUsageDescriptionPermission
/hologram/holo, /hd/hologram create|delete|addline|insertline|setline|removeline|info|clone|move|moveto|nudge|tp|near|toggle|permission|top|untop|list|reloadMake and edit holograms.not set
/holograms/holos/hologramsThe hologram editor.not set

Subcommands in detail

/holograms                        The editor screen.
/hologram create <id> [text]      A new hologram where you stand.
/hologram addline <id> <text>     Add a line at the bottom.
/hologram setline <id> <n> <text> Replace line n.
/hologram removeline <id> <n>     Remove line n.
/hologram move <id>               Move it to where you stand.
/hologram tp <id>                 Teleport to it.
/hologram toggle <id>             Show or hide it.
/hologram permission <id> <node>  Who may see it, or none.
/hologram top <id> <source> [n]   Turn it into a top list (kills, deaths, kdr,
                                  playtime, joins, money, or papi:%placeholder%).
/hologram untop <id>              Back to normal lines.
/hologram list                    Every hologram.
/hologram reload                  Read holograms.yml again.
/hologram clone <id> <new id>      Copy a hologram (alias copy).
/hologram insertline <id> <line> <text>
/hologram info <id>                Every line with its number and raw text.
/hologram near [radius]            Holograms around you, click to teleport.

Permissions

From plugin.yml.

NodeDefaultDescriptionChildren
holograms.adminoperatorsMake, edit and delete holograms.none

Placeholders

This plugin registers no PlaceholderAPI placeholders.

With PlaceholderAPI installed, it fills in placeholders from other plugins inside its own text.

Configuration reference

The default files as they ship in the jar, with their comments. The plugin writes them to plugins/Holograms/ on first start.

config.yml

Top-level keys:

KeyDefaultComment above it
menutrueBare /hologram opens the editor screen instead of printing the list.
update-ticks10How often the lines are refreshed. 10 is twice a second; raise it if you only show static text.
personal-range48How close a player has to be before a per-viewer hologram is built for them.
server-name"Server"Used by {server}.
leaderboardssection, 1 keynone
themesection, 11 keysEvery message below is written against these names, not against hex codes: <accent>Open</accent> rather than <#5ac8fa>Open</#5ac8fa>. Change a colour here and it changes on every screen at once. Ordinary MiniMessage still works, so <gradient:#a:#b> and...
messagessection, 137 keysnone
review-remindertrueOne thank-you line with the BuiltByBit review link: once in the console after install and once in chat for the first operator who joins. It never repeats and sends nothing anywhere. false turns it off.
plugins/Holograms/config.yml
# Holograms - floating text on display entities.
#
# No armour stands and no packet library: a hologram is a stack of text displays, which is what
# Minecraft itself uses for floating text. Lines stay crisp at any distance, carry a background and
# a scale, and cost the server almost nothing.
#
# Text is MiniMessage (<red>, <bold>, <gradient:#a:#b>) and understands {online} {max} {tps}
# {server} {world}, plus {player} {health} {level} {ping} and every PlaceholderAPI placeholder when
# the hologram is shown per viewer.

# Bare /hologram opens the editor screen instead of printing the list.
menu: true

# How often the lines are refreshed. 10 is twice a second; raise it if you only show static text.
update-ticks: 10

# How close a player has to be before a per-viewer hologram is built for them.
personal-range: 48

# Used by {server}.
server-name: "Server"

leaderboards:
  # How often kills, deaths, playtime and any placeholder a board uses are written down.
  refresh-seconds: 30
  # PlaceholderAPI has no way to ask for every player at once, so a placeholder leaderboard is
  # sampled while players are online and the last value each player had is the one it ranks.

# ------------------------------------------------------------------------------------------------
# THEME
# ------------------------------------------------------------------------------------------------
# Every message below is written against these names, not against hex codes: <accent>Open</accent>
# rather than <#5ac8fa>Open</#5ac8fa>. Change a colour here and it changes on every screen at
# once. Ordinary MiniMessage still works, so <gradient:#a:#b> and <#ff0000> are fine anywhere.
theme:
  accent: "#5ac8fa"     # your colour: headings and anything the player is meant to click
  accent2: "#a4e1fc"    # a lighter accent, for a second level of emphasis
  title: "#f4f7ff"      # screen titles
  text: "#c2ccdd"       # ordinary prose
  muted: "#6b7a94"      # hints, separators, anything the eye should skip
  value: "#ffffff"      # the numbers and names the player opened the screen to read
  good: "#57e08a"
  warn: "#ffc857"
  bad: "#ff6b6b"
  small-caps: false     # ᴇхᴀᴍᴘʟᴇ - a garnish; whole menus in it read badly
  # Real Minecraft item pictures beside the buttons and in the chest screens. Drawn from the
  # client's own textures, so there is nothing to install and no resource pack: it needs a
  # 1.21.9 or newer client, and older ones simply see the buttons as words.
  item-icons: true

messages:
  prefix: "<accent><bold>Holo</bold></accent> <muted>»</muted> "
  no-permission: "<bad>You cannot do that.</bad>"
  players-only: "<text>Players only.</text>"
  everyone: "everyone"
  word-on: "<good>on</good>"
  word-off: "<bad>off</bad>"
  first-line: "<value>{id}</value>"
  help: "<text>/hologram create <id> [text] · addline · insertline · setline · removeline · info · clone · move · moveto · nudge · tp · near · toggle · permission · top · list · reload</text>"
  usage-create: "<text>/hologram create <id> [first line]</text>"
  usage-addline: "<text>/hologram addline <id> \\<text></text>"
  usage-setline: "<text>/hologram setline <id> <line> \\<text></text>"
  usage-id: "<text>/hologram {sub} <id></text>"
  bad-name: "<bad>Names: letters, numbers, - and _, up to 24 characters.</bad>"
  exists: "<bad>There is already a hologram called </bad><value>{id}</value>"
  unknown: "<bad>No hologram called </bad><value>{id}</value>"
  no-line: "<bad>There is no line {n}.</bad>"
  created: "<text>Hologram </text><value>{id}</value><text> created where you stand.</text>"
  deleted: "<text>Hologram </text><value>{id}</value><text> deleted.</text>"
  line-added: "<text>Line {n} added to </text><value>{id}</value><text>.</text>"
  line-set: "<text>Line {n} of </text><value>{id}</value><text> changed.</text>"
  line-removed: "<text>Line {n} removed from </text><value>{id}</value><text>.</text>"
  moved: "<text>Hologram </text><value>{id}</value><text> moved here.</text>"
  moved-to: "<text>Hologram </text><value>{id}</value><text> is now at </text><accent>{x} {y} {z}</accent><muted> in {world}</muted>"
  usage-moveto: "<text>/hologram moveto <id> <x> <y> <z> [world]</text>"
  usage-nudge: "<text>/hologram nudge <id> <dx> <dy> <dz></text><newline><muted>Shifts it by that much, for lining two up.</muted>"
  unknown-world: "<bad>No world called </bad><value>{world}</value>"
  need-colour: "<bad>Put a colour in the box first, like </bad><value>#40000000</value><bad> or </bad><value>#ff0000</value>"
  need-coords: "<bad>Put three numbers in the box, like </bad><value>120 71 -244</value>"
  background-set: "<text>Background set to </text><accent>{value}</accent>"
  shadow-colour-set: "<text>Text shadow set to </text><accent>{value}</accent>"
  default: "the game's own"
  facing-center: "faces you"
  facing-fixed: "fixed"
  facing-vertical: "turns sideways"
  facing-horizontal: "lies flat"
  enabled: "<text>Hologram </text><value>{id}</value><text> is showing again.</text>"
  disabled: "<text>Hologram </text><value>{id}</value><text> is hidden.</text>"
  permission-set: "<text>Permission of </text><value>{id}</value><text>: </text><value>{value}</value>"
  list: "<text>Holograms: </text><value>{list}</value>"
  # /hologram insertline: the new line takes number {n}, the lines under it move down one.
  usage-insertline: "<text>/hologram insertline <id> <line> \\<text></text>"
  line-inserted: "<text>Line {n} inserted into </text><value>{id}</value><text>.</text>"
  # /hologram info: one head line, then one row per line with its raw text.
  info-head: "<value>{id}</value><text> · {lines} line(s) · {x} {y} {z} in {world} · </text>{state}"
  info-row: "<muted>{n}.</muted> <text>{text}</text><muted> ({animate})</muted>"
  # /hologram clone: a copy where you stand (or on the same spot, from the console).
  usage-clone: "<text>/hologram clone <id> <new id></text>"
  cloned: "<text>Copied </text><value>{id}</value><text> to </text><value>{new}</value><text>.</text>"
  # /hologram near: click a row to go there.
  near-head: "<text>{count} hologram(s) within {radius} blocks:</text>"
  near-row: "<click:run_command:'/hologram tp {id}'><hover:show_text:'<text>Go to {id}</text>'><muted> - </muted><value>{id}</value><text> · {distance} blocks · {lines} line(s)</text></hover></click>"
  near-none: "<text>No holograms within {radius} blocks.</text>"
  reloaded: "<value>Reloaded {count} hologram(s).</value>"

  # The editor. Every line here is a screen title, a button label or a tooltip.
  menu-title: "<value>Holograms</value>"
  menu-edit-title: "<value>{id}</value>"
  menu-close: "<white><icon:close></white><text>Close</text>"
  menu-back: "<white><icon:back></white><text>Back</text>"
  menu-back-tip: "<text>Back to the list.</text>"
  menu-empty: "<text>No holograms yet. Type a name below and press create.</text>"
  menu-empty-field: "<text>Type the text in the field first.</text>"
  menu-line: "<value>{id}</value><text> · {lines} line(s) · {x} {y} {z} in {world} · </text>{state}"
  menu-open-tip: "<text>Edit {id}.</text>"
  menu-field-id: "<text>Name of the new hologram</text>"
  menu-create: "<white><icon:hologram></white><good>Create it where I stand</good>"
  menu-create-tip: "<text>Uses the name in the field above.</text>"
  menu-head: "<text>{id} at {x} {y} {z} in {world} · {permission} · {mode}</text>"
  menu-line-row: "<text>{n}. </text>{text}<muted> ({animate})</muted>"
  menu-line-option: "Line {n}"
  menu-field-text: "<text>Text</text>"
  menu-field-line: "<text>Which line</text>"
  menu-field-permission: "<text>Permission, empty for everyone</text>"
  menu-add: "<white><icon:yes></white><good>Add that line</good>"
  menu-add-tip: "<text>Puts the text above at the bottom of the stack.</text>"
  menu-set: "<white><icon:yes></white><value>Replace the chosen line</value>"
  menu-set-tip: "<text>Writes the text above into the line you picked.</text>"
  menu-remove: "<white><icon:delete></white><bad>Remove the chosen line</bad>"
  menu-remove-tip: "<text>Deletes the line you picked.</text>"
  menu-animate: "<white><icon:fire></white><value>Next animation</value>"
  menu-animate-tip: "<text>none, bob, pulse, rainbow, typewriter, spin.</text>"
  menu-bigger: "<white><icon:up></white><value>Bigger</value>"
  menu-smaller: "<white><icon:down></white><value>Smaller</value>"
  menu-size-tip: "<text>Scale of the line you picked.</text>"
  menu-permission: "<white><icon:save></white><value>Save the permission</value>"
  menu-permission-tip: "<text>Only players with it see this hologram.</text>"
  menu-field-colour: "<text>A colour, #AARRGGBB or #RRGGBB</text>"
  menu-field-at: "<text>Coordinates, like 120 71 -244</text>"
  menu-move: "<white><icon:teleport></white><value>Move it here</value>"
  menu-move-to: "<white><icon:teleport></white><value>Move to coordinates</value>"
  menu-move-to-tip: "<text>Puts it where the box says, in this world. For a spot you cannot stand on.</text>"
  menu-background: "<white><icon:settings></white><value>Background</value>"
  menu-background-tip: "<text>Cycles: your colour, the game's own, or none at all.</text>"
  menu-background-colour: "<white><icon:settings></white><value>Background colour</value>"
  menu-background-colour-tip: "<text>Sets it to the colour in the box. The first two digits are how see-through it is.</text>"
  menu-shadow-on: "<accent>✔</accent> <good>Text shadow</good>"
  menu-shadow-off: "<accent>✖</accent> <muted>Text shadow</muted>"
  menu-shadow-tip: "<text>The drop shadow behind the letters.</text>"
  menu-shadow-colour: "<white><icon:settings></white><value>Shadow colour</value>"
  menu-shadow-colour-tip: "<text>Colours the drop shadow. Empty or 'none' gives it back to the game. Needs a 1.21.4+ client.</text>"
  menu-facing: "<white><icon:settings></white><value>Facing</value><text>  ·  {value}</text>"
  menu-facing-tip: "<text>Whether it turns to face you, lies flat, or stays put.</text>"
  menu-fade: "<white><icon:settings></white><value>Fade</value>"
  menu-fade-tip: "<text>Makes the text more see-through each click, then back to solid.</text>"
  menu-move-tip: "<text>Puts the hologram where you stand.</text>"
  menu-tp: "<white><icon:teleport></white><value>Go to it</value>"
  menu-tp-tip: "<text>Teleport to the hologram.</text>"
  menu-on: "<good>■</good> <value>Showing</value>"
  menu-off: "<muted>■</muted> <text>Hidden</text>"
  menu-toggle-tip: "<text>Show or hide this hologram.</text>"
  menu-delete: "<white><icon:delete></white><bad>Delete this hologram</bad>"
  menu-delete-tip: "<text>Removes it and its lines for good.</text>"
  mode-shared: "one copy for everybody"
  mode-personal: "a copy per viewer"
  switch-on: "<white><icon:yes></white><good><bold>ON</bold></good>  <value>{title}</value>"
  switch-off: "<white><icon:no></white><bad><bold>OFF</bold></bad> <text>{title}</text>"

  # Leaderboards.
  usage-top: "<text>/hologram top <id> <source> [rows] · sources: {sources}, or papi:<placeholder></text>"
  top-set: "<value>{id}</value><text> now shows the top {count} of </text><value>{source}</value><text>.</text>"
  top-cleared: "<text>{id} is a normal hologram again.</text>"
  source-kills: "Kills"
  source-deaths: "Deaths"
  source-kdr: "Kill / death"
  source-playtime: "Playtime in minutes"
  source-joins: "Times joined"
  source-money: "Money (needs Vault)"
  menu-board: "<white><icon:board></white><accent>Make it a leaderboard</accent>"
  menu-board-on: "<accent>Leaderboard: {source}</accent>"
  menu-board-tip: "<text>Let the lines come from a ranking instead of fixed text.</text>"
  menu-board-title: "<value>{id} · leaderboard</value>"
  menu-board-none: "<text>Not a leaderboard yet. Pick what it should rank and press apply.</text>"
  menu-board-head: "<text>Ranking </text><value>{source}</value><text>, top {count}.</text>"
  menu-board-preview: "<text>{rank}. {player} · {value}</text>"
  menu-board-empty: "<text>Nothing counted yet. It fills up as people play.</text>"
  menu-field-source: "<text>What it ranks</text>"
  menu-field-papi: "<text>Or a PlaceholderAPI placeholder, empty to use the choice above</text>"
  menu-field-format: "<text>How a row is written</text>"
  menu-board-apply: "<white><icon:yes></white><good>Apply</good>"
  menu-board-apply-tip: "<text>Use the source and the row format above.</text>"
  menu-board-more: "<value>One row more</value> <muted>({count})</muted>"
  menu-board-fewer: "<value>One row less</value> <muted>({count})</muted>"
  menu-board-rows-tip: "<text>How many places the board shows.</text>"
  menu-board-off: "<white><icon:delete></white><bad>Back to normal lines</bad>"
  menu-board-off-tip: "<text>Stop ranking and keep the lines you wrote.</text>"

# One thank-you line with the BuiltByBit review link: once in the console after install and once
# in chat for the first operator who joins. It never repeats and sends nothing anywhere. false turns it off.
review-reminder: true

Config guide

The annotated summary from the store page. Where it and the default file above differ, the file is what the plugin ships.

menu: true
update-ticks: 10        how often the lines refresh (10 = twice a second)
personal-range: 48      how close a viewer must be for a per-viewer copy
server-name: "Server"   used by {server}

holograms.yml, written by the plugin:
  spawn:
    world: world
    x: 0.5  y: 66.0  z: 0.5
    permission: ""       empty = everybody
    condition: ""        e.g. "%vault_eco_balance% > 1000"
    per-player: false    true = one copy per viewer
    line-height: 0.28
    view-range: 1.0      1.0 is about 64 blocks
    lines:
      0: { text: "<gold><bold>SPAWN</bold></gold>", scale: 1.4, animate: pulse }
      1: { text: "<gray>{online} of {max} online</gray>", animate: none }

FAQ

Which servers and versions does it run on?

It needs Paper or a Paper fork such as Purpur, because it uses Paper-only APIs (the dialog API for its menus, Adventure text components). Spigot and CraftBukkit are not supported. plugin.yml declares api-version 1.21, the jar is built against Paper API 1.21.11, and it needs Java 21 or newer.

Does it need other plugins?

No other plugin is required (plugin.yml has no hard dependencies). Optional: PlaceholderAPI (plugin.yml softdepend), used when present.

How do I apply config changes?

Edit plugins/Holograms/config.yml and run /hologram reload (read holograms.yml again). A restart works too.

Does it run on Folia, or for Bedrock players?

Not tested on Folia, and plugin.yml does not declare folia-supported. Bedrock players (through Geyser) have not been tested either.

What licence do I get?

The licence terms are the BuiltByBit EULA shown on the listing. There is no licence key to enter, and the plugin never contacts a licence server.