Init
This commit is contained in:
232
content/ui-systems/hud-manager.en.md
Normal file
232
content/ui-systems/hud-manager.en.md
Normal file
@@ -0,0 +1,232 @@
|
||||
---
|
||||
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<HudComponent> 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<HudComponent> 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<HudComponent> 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<HudComponent> previous = new HashSet<>(hud.getVisibleHudComponents());
|
||||
|
||||
// Clear all HUD
|
||||
hud.setVisibleHudComponents(player.getPlayerRef());
|
||||
}
|
||||
|
||||
public void exitCinematicMode(Player player, Set<HudComponent> 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 >}}
|
||||
Reference in New Issue
Block a user