An advanced and powerful holographic display plugin




With the discovery of new hologram technology (as seen in the video below), HoloAPI is designed to bring you a seamless experience in holographic display creation through the powerful command base and API.

Providing advanced Hologram Technology for your Bukkit server, HoloAPI has the following features (and more!):

Easily manage your own holographic displays
Create Holographic displays with images, animations (GIFs) and multi-line text
Allows developers to create and manage their own holographic displays through the extensive API
Holographic chat bubbles (captions) that show chat messages above the speaker'a head
Animated text support
Automatic UTF-8 character formatting and replacing
Super smooth Animated Holograms and hologram teleportation!
Automatic tag replacement e.g. "Hello there %name%!" (Where name is replaced with the observer's name)
Holographic chat bubbles with in-built support for VanishNoPacket
TouchScreen Holograms with an extensive and easy to use API
Floating Item displays with easy to use tags - %item:id%
BungeeCord support for TouchScreen holograms and online count placeholders
Supports Bukkit from 1.6.4 through to 1.7.9 and MCPC+ 1.6.4

Stay up to date and make sure you have the latest version of HoloAPI!

This extensive API is designed to provide you with the easiest, most feature packed resources for creating and managing your own holograms.


HoloAPI also uses intelligent image-translation technology (thanks to @bobacadodl) to transform ordinary images into futuristic holograms that can enhance your server in ways that you have never imagined.





Development builds of this project can be acquired at the provided continuous integration server. These builds have not been approved by the BukkitDev staff. Use them at your own risk.


Commands and Permissions

/holoupdateholoapi.updateUpdate HoloAPI if a new version has been found.
/holoholoapi.holoBase HoloAPI command. All in-game methods for creating holographic displays can be found under this command. Entering this command by itself will provide version information for HoloAPI.
/holo createholoapi.holo.createCreate a holographic display. Lines can be entered one after each other.
/holo create image <image_id>holoapi.holo.createCreate a holographic display from an image. See the Configuration page on the Wiki for more information on how to set this up.
/holo create animationholoapi.holo.createCreate an animated holographic display from lines of text.
/holo create animation <animation_id>holoapi.holo.createCreate an animated hologram. See the Configuration Wiki page for info on how to set up GIFs.
/holo remove <id>holoapi.holo.removeRemove a hologram by its assigned ID.
/holo infoholoapi.holo.infoView all active holographic displays and their respective IDs.
/holo move <id>holoapi.holo.moveMove a hologram to your current position.
/holo teleport <id>holoapi.holo.teleportTeleport to a specific hologram.
/holo buildholoapi.holo.buildDynamically build a combined hologram of both text and images.
/holo edit <id> <line>holoapi.holo.editEdit a line of an existing hologram.
/holo edit <id> <line> <content>holoapi.holo.editEdit a line of an existing hologram. The content can be more than one line.
/holo nearby <radius>holoapi.holo.nearbyView information on all nearby holograms within the specified radius
/holo copy <id>holoapi.holo.copyCopy an existing hologram to your current position.
/holo refresh <id>holoapi.holo.refreshRefresh a Hologram of the specified ID.
/holo reloadholoapi.holo.reloadReload all configuration files and holograms

TouchScreen Hologram Commands

/holo touch add <id> <command>holoapi.holo.touch.addAdd an action for a certain hologram to perform when touched. Actions defined without the use of the API (through this command) may only be commands. The `%name%` placeholder can be used to define the user that touched the hologram. Commands can be more than one word.
/holo touch add <id> <command> <as_console>holoapi.holo.touch.addSame functionality as `/holo touch add <command>`. `<as_console>` defines whether the action is performed by the console or the player that touched the hologram
/holo touch remove <id> <touch_id>holoapi.holo.touch.removeRemove an action for a TouchScreen hologram, where `<touch_id>` is the ID of the TouchAction. To remove a command-based Touch Action, simply enter the command"
/holo touch clear <id>holoapi.holo.touch.clearClear all Touch Actions for a particular TouchScreen hologram
/holo touch info <id>holoapi.holo.touch.infoView information on all Touch Actions for a particular TouchScreen hologram





Metrics is used to collect plugin statistics. Only data such as plugin version and players online is collected. If you do not wish for this data to be collected, disable it in the 'Plugin Metrics' folder of your 'plugins' directory.


Update Checking

HoloAPI comes with an auto-updater to save you, as a server owner, from continually checking this page for new files. It simply connects to dev.bukkit.org and compares the versions of available files. If you do not wish for HoloAPI to perform this check, navigate to the Configuration File (config.yml) in the HoloAPI directory of your plugins folder and change "checkForUpdates" and "autoUpdate" to "false". The first value disables the version comparison altogether and the second updates the plugin automatically if new files are detected.


Plugins Using HoloAPI

Some of the plugins that utilise the powerful features in HoloAPI:

...And many more!




Credit to Asdjke for coming up with the idea


You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of dirtyequi dirtyequi Dec 18, 2014 at 13:43 UTC - 0 likes

    Project is abandoned. Maintainers do not respond in IRC, neither email nor here.

  • Avatar of dirtyequi dirtyequi Dec 10, 2014 at 22:36 UTC - 0 likes

    Unfortunately this does not work with command blocks for automated hologram updates (/holo edit <id> <line> <content>). Can u pls add support for that?

    EDIT: Uh, it works, but still throws exceptions: http://pastebin.com/seRzzGyj This should be fixed at least.

    Last edited Dec 10, 2014 by dirtyequi
  • Avatar of toxictroop toxictroop Nov 22, 2014 at 16:48 UTC - 0 likes

    This is unique to the other holo plugin, due to its additional content "damage indicators" "speech"


  • Avatar of sobrien1195 sobrien1195 Nov 05, 2014 at 08:33 UTC - 1 like
  • Avatar of Weasel_Squeezer Weasel_Squeezer Oct 18, 2014 at 02:19 UTC - 0 likes

    DSH105 are you dead? It would be awesome if this plugin can get some updates! or if someone took over development of it. I would if I had the time...


  • Avatar of joshthegrate joshthegrate Oct 11, 2014 at 23:39 UTC - 0 likes

    with spigot still updating we desperately need this plugin to be updated.

  • Avatar of Vooxler Vooxler Oct 05, 2014 at 12:05 UTC - 0 likes

    /holo create animation






    answer - ...null

    and error in log

     	at com.dsh105.holoapi.api.AnimatedHologramFactory.withLocation(AnimatedHologramFactory.java:96)
     	at com.dsh105.holoapi.conversation.builder.animation.AnimationBuilderInputSuccessPrompt.getPromptText(AnimationBuilderInputSuccessPrompt.java:57)
     	at org.bukkit.conversations.Conversation.outputNextPrompt(Conversation.java:318)
     	at org.bukkit.conversations.Conversation.acceptInput(Conversation.java:252)
     	at org.bukkit.craftbukkit.v1_7_R2.conversations.ConversationTracker.acceptConversationInput(ConversationTracker.java:52)
     	at org.bukkit.craftbukkit.v1_7_R2.entity.CraftPlayer.acceptConversationInput(CraftPlayer.java:991)
     	at net.minecraft.server.v1_7_R2.PlayerConnection.a(PlayerConnection.java:836)
     	at net.minecraft.server.v1_7_R2.PacketPlayInChat.a(PacketPlayInChat.java:28)
     	at net.minecraft.server.v1_7_R2.PacketPlayInChat$1.run(PacketPlayInChat.java:59)
     	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
     	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
     	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
     	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
     	at java.lang.Thread.run(Thread.java:724)

    My server 1.7.5

    HoloAPI - v1.2.3 for CB 1.7.2-R0.3

  • Avatar of Greenman1805 Greenman1805 Sep 24, 2014 at 19:56 UTC - 0 likes

    Is there still support for this plugin?

  • Avatar of ToXiCHaZe541 ToXiCHaZe541 Sep 18, 2014 at 22:46 UTC - 0 likes

    Please Help Getting errors when trying to create a hologram and it wont even create the hologram! Console errors below!


    Check out my server at mc6.fadehost.com:25936

  • Avatar of inbudepr inbudepr Sep 18, 2014 at 18:34 UTC - 0 likes

    Nice plugin, but still not my understanding of an API. The following command interface is friendly to the manually typing players as well as to players with macro key bindings. It has been suggested to Holographic Displays, too. With that design a typical session would look like:

    /holo create my_1st_holo
    /holo edit Welcome to the monastry of the holy block.
    /holo edit It was build 4 aR (fourth month after relaunch)

    /holo create my_2nd_holo
    /holo edit Please park your horse in the
    /holo edit first building on the right.

    That would be simplest. Don't get confused by the amount of text in the specification below. It only matters what you actually have to type interactively, not what theoretically is available for (non-interactive) scripting.

    Selecting a hologram:
    /holo select [type:manual|automatic] [viewed|nearest|bestguess] [<name>|name:<name>]

    Selects a hologram for subsequent commands. Without further arguments, selects the hologram you are looking at. Newly created holograms are automatically selected. Examples, out of which the first is probably all you ever need:

    /holo select
    /holo select type:manual name:hello_world
    /holo select type:manual viewed
    /holo select type:manual nearest

    /holo select type:automatic nearest
    /holo select type:automatic viewed

    Manually setting the *name* is just for comprehension and scripting. Manually selecting the *nearest* (in three dimensions) is just for API completeness. *Automatically* selecting the nearest is more convenient. Always automatically selecting the hologram you are looking at ("viewed") is usually less surprising and most convenient.

    [Bestguess would be a combination of nearest and viewed in case either proves not to be practical.]

    [Now, if you wonder why name:<name> is required if <name> often does the trick: it takes out precedence magic from the design. That is very helpful for debugging, because it determines whether something is a bug or a misunderstanding of precedence.]

    Updating a hologram:
    /holo update [<name>|name:<name>] [mode:append|replace]

    Updates the currently selected hologram (see above) if no name is given. If the source of the hologram was a file, it re-reads the file. If the player holds a sign in his hand, updates the hologram text with the text of the nearest sign [within a hard coded radius of 5 blocks or so]. If the player holds a book in his hand, re-reads the contents of the book into the hologram (book details see below). Examples, out of which the first is probably all you ever need:

    /holo update
    /holo update name:hello_world

    The content of the source is either appended or replaced to the hologram depending on the mode.

    Creating a Hologram:
    /holo create [<name>|name:hello_world] [source:<none|inline|file|book|sign>] [type:<text|image>]

    Creates a hologram with the name explicitly or implicitly given. Automatically selects that hologram for subsequent commands (so that the name doesn't need to be given again). An explicit name is specified with name:<name>. The only source for an implicit name is a signed book. Examples:

    /holo create
    /holo create name:hello_world source:inline The text just specified in the line
    /holo create name:hello_world source:file
    /holo create name:hello_world source:file type:image

    Without further arguments, checks whether the player holds a sign or book in his hand. In this case the content of the hologram is taken from the nearest sign or the book he holds (see content handling below). Can be manually choosen with source:sign or source:book.

    If a name: but no source: is given (second example), creates a one-line placeholder hologram like in the current design.

    source:file creates a hologram from a file. The contents of the file are interpreted according to type:. type: is only supported for file-based hologram content. Otherwise type: defaults to text. [Store type with the hologram for "/holo update"]

    For type:text, the hologram is created from the content of the file <name>.txt. The extension .txt is automatically appended when searching for text files on disk.

    For type:image the supported file name extensions are checked in the following order: .jpg .jpeg .png .gif. [Dunno] The image is rendered with hologram patches.

    Editing a hologram:
    /holo edit [<name>] [append] <text>
    /holo edit [<name>] <insert|replace>:# <text>
    /holo edit [<name>] remove|delete:#
    /holo edit [<name>] shift:#[,#]
    /holo edit [<name>] substitute <word1> <word2>
    /holo edit [<name>] line #
    /holo edit [<name>] undo
    /holo edit [<name>] end

    Edits the selected hologram (see above) if no name is given. The editing happens in the chat line of the game. By default lines are appended to a hologram. Examples:

    /holo edit A second line of text
    /holo edit remove:2

    As a special case for shift, a shift with only one numeric argument shifts the last line to the given position.

    The substitution is rather simple word-based. Remember that the editing commands are also available on book pages, which correspond to lines of the hologram.

    Undo means, that the last editing operation can be undone (but not an update).

    Line editing means that the plugin pre-fills the chat. In the following example, after entering the first command the second will appear in the chat line as a suggestion, the player edits it and presses enter. The chat line is pre-filled until the player enters the last command. When the hologram has no more lines, then an append is suggested.

    /holo edit line 2
    /holo edit replace:2 A 2nd line of text
    /holo edit append The nth line of text
    /holo edit end

    Listing holograms:
    /holo list [<name>] [radius:#] [player:<pattern>] [sort:alphabetically|chronologically]

    Prints the names of the matching holograms, which is the currently selected in case of no arguments. The output appears in the private chat messages of the player. The radius refers to the number of blocks around the player.

    Setting Properties a hologram:
    /holo property [<name>] [state:hidden|visible] [name:<name>]

    Sets properties of the selected hologram (see above) if no name is given. state:visible is the default. state:hidden stores the hologram in the database, but doesn't display it.

    Specifying name:<name> effectively re-names the hologram. Names of sources are not affected. For example, if the source of a hologram was a book and you re-name it, the name of the book is not changed.

    Obtaining Information about a hologram:
    /holo info [<name>]

    Prints formatted information about the selected hologram (see above) if no name is given. The output appears in the private chat messages of the player. The information includes the creator (player name), location of the hologram, state, source and last modification time. Each on one separate line, prefixed by the name of the information.

    Printing the contents a hologram:
    /holo print [<name>]

    Prints the raw contents (text) of the selected hologram (see above) if no name is given. The output appears in the private chat messages of the player.

    Moving a hologram:
    /holo move [name:<name>] location:here|x,z,y|+-x,+-z,+-y|<anchor:<anchor>>

    Moves the center of the selected hologram (see above) if no name is given. The location can be specified as the players current position ("here"), an absolute or relative position the world, or an anchor.

    Copying a hologram:
    /holo copy [name:<name>] [location:here|x,z,y|+-x,+-z,+-y|<anchor:<anchor>>]

    Copies the selected hologram (see above) if no name is given. Specifying the location of the new hologram works like the location for move.

    Aligning two or more holograms:
    /holo align [name:<name>] [direction:north|south|west|east|up|down|player] mate:<name> mate:<name> ...

    Takes the position of the current hologram (selected or name) as a reference to align other mate holograms. Default direction is the direction of the player. Alignment is simple: the two coordinates not being the direction are applied to all mates. Example: you look north. Then the mate hologram will take the west-east coordinate and the height coordinate.

    Saving a hologram:
    /holo file_save [name:<name>]

    Saves the content of the hologram into a file on disk. Unless specified the file name is the same as the name of the hologram, with a .txt enforced as an extension.

    Fixing a hologram:
    /holo fix [name:<name>] [radius:#]

    Fixes the lightning of a hologram, by creating a block of glowstone in the correct place. They won't be dark at night any longer. [Radius would fix all holograms within a certain radius of # blocks.]

    Getting help:
    /holo help [source:<none|file|book|sign>] [target:chat|hologram]

    Generates a hologram with a help text. Or prints that text to the chat. Depending on the target:.

    Plugin management:
    /holo plugin [action:reload|save|update|morehorses]

    action:save manually saves the state of the plugin into the database once. The plugin saves its state automatically.

    action:reload reloads the plugin and the databases.

    action:update checks for an update and downloads the .jar file (but doesn't reload or restart Bukkit)


    Sign content: Signs are a way for unprivileged players to provide content for holograms. Like a clipboard, which is removed once the hologram is updated by privileged player. The content of signs is limited to 4 lines of 13 characters.

    Book content: Books can be associated with holograms by using source:book for /holo create. In that case the name of the hologram is identical with the name of the book [otherwise it would drive you insane]. Don't change the name of an associated book, because the hologram won't be automatically re-named.

    You probably want one of the plugins for editing signed books. In vanilla minecraft such books can't be edited (and thus the command /update isn't accessible.)

    Every page of a book corresponds to one line of the hologram. The Minecraft limitation for books is 50 pages with up to 256 characters per page. That's not so limiting after all.

    Pages are trimmed, i.e. white spaces are removed from start and end of the page. Empty pages are removed. A page consisting of just one literal \n is taken as an empty line.

    Any page might start with [Editing Commands]. In which case it's not taken as content, but as a list of editing commands. Use the commands specified for /holo edit on that page (except for append - just append a line to the book). Example of removing the third page of the book:

    [Editing Commands]
    remove 3

    Be aware that editing commands are processed as encountered. That affects multiple editing commands. The above example should better be on page 4 or on the last page of the book. Otherwise you might be confused with page numbers.

    The design stays my intellectual property and no transfer of rights can be implied from posting it here. Any implementation of it is the IP of the respective author.

    Last edited Sep 19, 2014 by inbudepr


Date created
Feb 22, 2014
Last update
Apr 25, 2014
Development stage
GNU General Public License version 3 (GPLv3)
Curse link
Recent files



Optional dependency
Vanish No Packet