HoloAPI
An advanced and powerful holographic display plugin
Features
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.
or
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
Command | Permission | Description |
---|---|---|
/holoupdate | holoapi.update | Update HoloAPI if a new version has been found. |
/holo | holoapi.holo | Base 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 create | holoapi.holo.create | Create a holographic display. Lines can be entered one after each other. |
/holo create image <image_id> | holoapi.holo.create | Create a holographic display from an image. See the Configuration page on the Wiki for more information on how to set this up. |
/holo create animation | holoapi.holo.create | Create an animated holographic display from lines of text. |
/holo create animation <animation_id> | holoapi.holo.create | Create an animated hologram. See the Configuration Wiki page for info on how to set up GIFs. |
/holo remove <id> | holoapi.holo.remove | Remove a hologram by its assigned ID. |
/holo info | holoapi.holo.info | View all active holographic displays and their respective IDs. |
/holo move <id> | holoapi.holo.move | Move a hologram to your current position. |
/holo teleport <id> | holoapi.holo.teleport | Teleport to a specific hologram. |
/holo build | holoapi.holo.build | Dynamically build a combined hologram of both text and images. |
/holo edit <id> <line> | holoapi.holo.edit | Edit a line of an existing hologram. |
/holo edit <id> <line> <content> | holoapi.holo.edit | Edit a line of an existing hologram. The content can be more than one line. |
/holo nearby <radius> | holoapi.holo.nearby | View information on all nearby holograms within the specified radius |
/holo copy <id> | holoapi.holo.copy | Copy an existing hologram to your current position. |
/holo refresh <id> | holoapi.holo.refresh | Refresh a Hologram of the specified ID. |
/holo reload | holoapi.holo.reload | Reload all configuration files and holograms |
TouchScreen Hologram Commands
Command | Permission | Description |
---|---|---|
/holo touch add <id> <command> | holoapi.holo.touch.add | Add 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.add | Same 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.remove | Remove 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.clear | Clear all Touch Actions for a particular TouchScreen hologram |
/holo touch info <id> | holoapi.holo.touch.info | View information on all Touch Actions for a particular TouchScreen hologram |
Configuration
Metrics
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
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.
This is unique to the other holo plugin, due to its additional content "damage indicators" "speech"
http://ci.dsh105.com/job/HoloAPI/
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...
with spigot still updating we desperately need this plugin to be updated.
/holo create animation
&6&lHolo&c&lAPI
next
&4&lHolo&e&lAPI
done
20
answer - ...null
and error in log
My server 1.7.5
HoloAPI - v1.2.3 for CB 1.7.2-R0.3
Is there still support for this plugin?
Please Help Getting errors when trying to create a hologram and it wont even create the hologram! Console errors below!
http://pastebin.com/AiKaFcMs
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)
CONTENT HANDLING:
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.
Can someone just please give me the latest working 1.7.10/1.7.9 dev build, I don't know how to find it ._.
update to 1.8 please
Sad to see you guys go. :(
I recently switched over to the dev builds (HoloAPI 2.0.0+) to bring compatibility with the 1.7.10/1.8 protocol hack, and it seems the rewrite has totally screwed over holograms in general. I like the idea and implementation of simple holograms, ones that weren't being saved, but every hologram, advanced or not, seems to falling through the world. As a temporary solution, I could continually teleport the hologram back to where it's suppose to be which might solve it but would be extremely choppy.
Also, when 1.8 does come out, I heard that horses with age deformities don't work anymore. Are you planning to switch to wither skulls with 0 motion? Armor stands with no gravity? Or something else?
I appreciate the hard work the devs have put into this. Keep it up!
Need update to 1.7.10. Please :)
I updted to the latist version op holoapi and I did /holo create and typed in my text then typed in "done" and I got this.
when the error acured it didn't say "an unknowen error acureed whel profroming this command"
btw sorry for the bad spelling I am dyslexic and disgraphic.
[14:05:51 INFO]: ericgolde555 issued server command: /holo create
[14:06:04 WARN]: [HoloAPI] No such field: t!
[14:06:04 ERROR]: Error handling conversation prompt
java.lang.NullPointerException
at com.dsh105.holoapi.util.ReflectionUtil.setField(ReflectionUtil.java:114) ~[?:?]
at com.dsh105.holoapi.util.wrapper.protocol.Packet.write(Packet.java:84) ~[?:?]
at com.dsh105.holoapi.util.wrapper.WrapperPacketSpawnEntityLiving.setMetadata(WrapperPacketSpawnEntityLiving.java:130) ~[?:?]
at com.dsh105.holoapi.api.Hologram.generate(Hologram.java:755) ~[?:?]
at com.dsh105.holoapi.api.Hologram.show(Hologram.java:618) ~[?:?]
at com.dsh105.holoapi.api.Hologram.show(Hologram.java:587) ~[?:?]
at com.dsh105.holoapi.api.HologramFactory.build(HologramFactory.java:252) ~[?:?]
at com.dsh105.holoapi.conversation.InputSuccessPrompt.getPromptText(InputSuccessPrompt.java:40) ~[?:?]
at org.bukkit.conversations.Conversation.outputNextPrompt(Conversation.java:291) ~[craftbukkit.jar:git-Spigot-1631]
at org.bukkit.conversations.Conversation.acceptInput(Conversation.java:230) [craftbukkit.jar:git-Spigot-1631]
at org.bukkit.craftbukkit.v1_7_R4.conversations.ConversationTracker.acceptConversationInput(ConversationTracker.java:58) [craftbukkit.jar:git-Spigot-1631]
at org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer.acceptConversationInput(CraftPlayer.java:1038) [craftbukkit.jar:git-Spigot-1631]
at net.minecraft.server.v1_7_R4.PlayerConnection$2.evaluate(PlayerConnection.java:894) [craftbukkit.jar:git-Spigot-1631]
at org.bukkit.craftbukkit.v1_7_R4.util.Waitable.run(Waitable.java:24) [craftbukkit.jar:git-Spigot-1631]
at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:647) [craftbukkit.jar:git-Spigot-1631]
at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [craftbukkit.jar:git-Spigot-1631]
at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [craftbukkit.jar:git-Spigot-1631]
at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [craftbukkit.jar:git-Spigot-1631]
at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Spigot-1631]
Hello, I'm a Server Owner and Developer, it is running 1.7.9, I've installed HoloAPI but it's not working, is it because the latest build is for 1.7.2? If I do /Holo Create, it works until I type Done, thank it doesn't react, anything else that I write just goes to the Chat, like I didn't even Create a Hologram. Secondly, it doesn't react when I try to Create PhotoHolograms, like the Photos I put inside the Photo Folder are not even there. Last, /Holo Help says an internal Error occurred.... /HoloDebug shows nothing wrong.
I really want this PlugIn, but it just doesn't work.... (And I don't want to switch to "Holographic Displays", this one is better)
Update for 1.7.9 please
I turn on damage , gain health , etc ... and use it. Whenever spawn a holo message. It's normal to hide but it would save to save.yml and display again on reload. It pretty trouble! The save file can be few MB! How to fix it? please!
@CaptainBern
@CaptainBern I am using the latest HoloAPI (v1.2.3) Unless there is a newer one I can't find?
All my holograms are falling down when I join the server? D: