3.1 KiB
title, type, weight
| title | type | weight |
|---|---|---|
| UI Systems | docs | 5 |
The UI Systems section covers user interface, permissions, and custom pages.
Overview
{{< cards cols="2" >}} {{< card link="hud-manager" title="HUD Manager" subtitle="Control visibility of HUD components" icon="eye" >}} {{< card link="custom-pages" title="Custom Pages" subtitle="Create custom UI overlays" icon="document-text" >}} {{< card link="windows" title="Windows" subtitle="Inventory and crafting windows" icon="collection" >}} {{< card link="ui-files" title="UI Files" subtitle="The .ui markup language" icon="code" >}} {{< card link="ui-syntax" title="UI Syntax" subtitle="Variables, imports, templates" icon="document" >}} {{< card link="ui-widgets" title="UI Widgets" subtitle="Available widget types" icon="cube" >}} {{< card link="ui-properties" title="UI Properties" subtitle="Anchor, layout, padding" icon="adjustments" >}} {{< card link="ui-styles" title="UI Styles" subtitle="Styling system" icon="color-swatch" >}} {{< card link="permissions" title="Permissions" subtitle="Player permissions and access control" icon="shield-check" >}} {{< /cards >}}
Key Concepts
HUD Components
The HUD consists of built-in components that can be shown or hidden:
- Hotbar - Item slots at the bottom of the screen
- Health/Mana/Stamina - Vital stat bars
- Chat - Text communication
- Compass - Direction indicator
- Notifications - Alert messages
- And many more...
Custom Pages
Custom pages allow you to create overlay UIs using the UICommandBuilder:
public class MyPage extends CustomUIPage {
public MyPage(PlayerRef ref) {
super(ref, CustomPageLifetime.CanDismiss);
}
@Override
public void build(Ref<EntityStore> ref, UICommandBuilder builder,
UIEventBuilder events, Store<EntityStore> store) {
// Build UI using builder.set(), builder.append(), etc.
builder.append("Pages/MyTemplate.ui");
builder.set("#title", "Welcome!");
}
}
Page Manager
Each player has a PageManager that handles custom pages:
Player player = ...;
PageManager pageManager = player.getPageManager();
// Open a custom page
pageManager.openCustomPage(ref, store, new MyPage(player.getPlayerRef()));
// Close to normal view
pageManager.setPage(ref, store, Page.None);
Accessing the HUD Manager
Player player = ...;
HudManager hudManager = player.getHudManager();
// Hide all HUD components
hudManager.setVisibleHudComponents(player.getPlayerRef());
// Show specific components
hudManager.showHudComponents(player.getPlayerRef(),
HudComponent.Hotbar,
HudComponent.Health
);
Architecture
Player
├── HudManager → Controls HUD visibility
├── PageManager → Manages custom pages
│ └── CustomUIPage → Your custom UI
└── WindowManager → Manages windows (inventory, crafting)
{{< callout type="info" >}}
UI operations are typically performed through the PlayerRef or Player component. Access these through events or the command context.
{{< /callout >}}