--- title: UI Systems type: docs weight: 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`: ```java public class MyPage extends CustomUIPage { public MyPage(PlayerRef ref) { super(ref, CustomPageLifetime.CanDismiss); } @Override public void build(Ref ref, UICommandBuilder builder, UIEventBuilder events, Store 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: ```java 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 ```java 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 >}}