# πŸ“½οΈ TrilerHolograms – Lightweight TextDisplay Library **TrilerHolograms** is a modern, high-performance **Java library** for Bukkit/Spigot plugins (supporting version 1.21.10 and above). It utilizes native `TextDisplay` entities, making it significantly more efficient than traditional armor-stand-based holograms. Designed for developers, it provides a clean, static API to manage floating text with zero hassle. --- ## ✨ Features - βœ… **Static API**: Access everything via `HologramManager.`β€”no constructors needed. - 🌈 **Color Support**: Built-in support for legacy `&` color codes. - πŸ“ **Multi-line Logic**: Easily create multi-line displays using standard Java `List`. - πŸ”„ **Safe Updates**: Update existing holograms without flickering or entity recreation. - πŸ›‘οΈ **Non-Persistent**: Entities are set to `persistent = false`, ensuring they despawn on server restarts or crashes. - 🧩 **Zero Dependencies**: Works out of the box with standard Spigot/Paper API. --- ## πŸ”§ Getting Started ### 1. Create a Hologram Define a unique ID, a location, and your text lines. If the ID already exists, the old one is automatically replaced. ```java List lines = Arrays.asList( "&b&lTRILER NETWORK", "&7Welcome to the lobby!", "&eUse /play to start" ); HologramManager.create("lobby_welcome", player.getLocation(), lines); ``` ### Update Text Perfect for dynamic data like player stats, server TPS, or countdowns: ```java HologramManager.update("lobby_welcome", List.of( "&b&lTRILER NETWORK", "&aPlayers Online: " + Bukkit.getOnlinePlayers().size() )); ``` ### 3. Cleanup (Required) To ensure no "ghost" entities remain during plugin reloads or server shutdowns, call this in your main class's onDisable method: ```java @Override public void onDisable() { // This removes all holograms created by this manager HologramManager.removeAll(); } ``` ## πŸ“‘ API Reference |Method|Description | -------------|:-------------:| |create(id, loc, lines)|Spawns a new hologram or replaces an existing one.| |update(id, lines)|Changes the text of an existing hologram.| |remove(id)|Deletes a specific hologram by its ID.| |get(id)|Returns an Optional to modify raw entity properties.| |removeAll()|Deletes every hologram managed by this library.| ## πŸ§‘β€πŸ’» Advanced Examples Accessing the Raw Entity Use the get method to apply specific Minecraft Display features like glowing or scale: ```java HologramManager.get("lobby_welcome").ifPresent(display -> { display.setGlowing(true); display.setGlowColorOverride(org.bukkit.Color.AQUA); display.setShadowed(true); });``` Dynamic Stats HologramΕΎ ```java new BukkitRunnable() { @Override public void run() { HologramManager.update("stats", List.of( "&6Server Stats", "&fTPS: &a" + Bukkit.getTPS()[0] )); } }.runTaskTimer(plugin, 0L, 20L); ```