--- title: HUD Manager type: docs weight: 1 --- The `HudManager` controls which HUD components are visible to the player. **Package:** `com.hypixel.hytale.server.core.entity.entities.player.hud` ## HUD Components All available HUD components: | Component | Description | |-----------|-------------| | `HudComponent.Hotbar` | Player's item hotbar | | `HudComponent.StatusIcons` | Status effect icons | | `HudComponent.Reticle` | Crosshair/targeting reticle | | `HudComponent.Chat` | Chat window | | `HudComponent.Requests` | Pending requests UI | | `HudComponent.Notifications` | Alert notifications | | `HudComponent.KillFeed` | Kill/death messages | | `HudComponent.InputBindings` | Control hints | | `HudComponent.PlayerList` | Tab player list | | `HudComponent.EventTitle` | Large event titles | | `HudComponent.Compass` | Direction compass | | `HudComponent.ObjectivePanel` | Quest/objective tracker | | `HudComponent.PortalPanel` | Portal interface | | `HudComponent.BuilderToolsLegend` | Builder tool hints | | `HudComponent.Speedometer` | Speed indicator | | `HudComponent.UtilitySlotSelector` | Utility slot UI | | `HudComponent.BlockVariantSelector` | Block variant picker | | `HudComponent.BuilderToolsMaterialSlotSelector` | Builder material slots | | `HudComponent.Stamina` | Stamina bar | | `HudComponent.AmmoIndicator` | Ammunition counter | | `HudComponent.Health` | Health bar | | `HudComponent.Mana` | Mana bar | | `HudComponent.Oxygen` | Oxygen/breath bar | | `HudComponent.Sleep` | Sleep indicator | ## Default Components These components are visible by default: ```java Set DEFAULT = Set.of( HudComponent.UtilitySlotSelector, HudComponent.BlockVariantSelector, HudComponent.StatusIcons, HudComponent.Hotbar, HudComponent.Chat, HudComponent.Notifications, HudComponent.KillFeed, HudComponent.InputBindings, HudComponent.Reticle, HudComponent.Compass, HudComponent.Speedometer, HudComponent.ObjectivePanel, HudComponent.PortalPanel, HudComponent.EventTitle, HudComponent.Stamina, HudComponent.AmmoIndicator, HudComponent.Health, HudComponent.Mana, HudComponent.Oxygen, HudComponent.BuilderToolsLegend, HudComponent.Sleep ); ``` ## Accessing the HUD Manager ```java Player player = ...; HudManager hudManager = player.getHudManager(); ``` ## Showing Components ```java // Show specific components (additive) hudManager.showHudComponents(player.getPlayerRef(), HudComponent.Health, HudComponent.Stamina, HudComponent.Hotbar ); // Show from a Set Set components = Set.of( HudComponent.Chat, HudComponent.Notifications ); hudManager.showHudComponents(player.getPlayerRef(), components); ``` ## Hiding Components ```java // Hide specific components hudManager.hideHudComponents(player.getPlayerRef(), HudComponent.Compass, HudComponent.Speedometer ); ``` ## Setting Components Replace all visible components: ```java // Set exact visible components (replaces all) hudManager.setVisibleHudComponents(player.getPlayerRef(), HudComponent.Hotbar, HudComponent.Health ); // Clear all HUD components (empty) hudManager.setVisibleHudComponents(player.getPlayerRef()); ``` ## Querying Visible Components ```java Set visible = hudManager.getVisibleHudComponents(); if (visible.contains(HudComponent.Health)) { // Health bar is visible } ``` ## Resetting the HUD ```java // Reset to default components and clear custom HUD hudManager.resetHud(player.getPlayerRef()); // Reset entire UI state hudManager.resetUserInterface(player.getPlayerRef()); ``` ## Custom HUD Overlay For persistent overlays: ```java public class ScoreboardHud extends CustomUIHud { public ScoreboardHud(PlayerRef ref) { super(ref); } @Override protected void build(UICommandBuilder builder) { // Extension .ui is REQUIRED builder.append("Hud/Scoreboard.ui"); builder.set("#score", 1500); builder.set("#rank", "Gold"); } } // Set custom HUD hudManager.setCustomHud(player.getPlayerRef(), new ScoreboardHud(player.getPlayerRef())); // Remove custom HUD hudManager.setCustomHud(player.getPlayerRef(), null); ``` ## Practical Examples ### Cinematic Mode Hide all UI for cutscenes: ```java public void enterCinematicMode(Player player) { HudManager hud = player.getHudManager(); // Store current state if needed for restoration Set previous = new HashSet<>(hud.getVisibleHudComponents()); // Clear all HUD hud.setVisibleHudComponents(player.getPlayerRef()); } public void exitCinematicMode(Player player, Set restore) { player.getHudManager().setVisibleHudComponents(player.getPlayerRef(), restore); } ``` ### Minimal HUD Mode Show only essential components: ```java public void setMinimalHud(Player player) { player.getHudManager().setVisibleHudComponents(player.getPlayerRef(), HudComponent.Hotbar, HudComponent.Health, HudComponent.Reticle ); } ``` ### Builder Mode HUD Show builder-specific components: ```java public void enableBuilderHud(Player player) { HudManager hud = player.getHudManager(); hud.showHudComponents(player.getPlayerRef(), HudComponent.BuilderToolsLegend, HudComponent.BuilderToolsMaterialSlotSelector, HudComponent.BlockVariantSelector ); } ``` ## Best Practices {{< callout type="info" >}} **HUD Guidelines:** - Always use `PlayerRef` when calling HUD methods - Store previous state before clearing if you need to restore later - Consider game mode when deciding which components to show - Use `resetHud()` to return to default state {{< /callout >}} {{< callout type="warning" >}} **Performance Note:** Avoid rapid toggling of HUD components as each change sends packets to the client. {{< /callout >}}