Skip to content

UI System

Hytale provides four distinct UI systems, each designed for different use cases.

SystemUse CaseDocs
Custom PagesMenus, dialogs, forms, custom interfacesCustom Pages
WindowsInventory, crafting, containersWindows
HUDPersistent overlays, status displaysHUD
Entity UIWorld-space UI (health bars, damage numbers)Entity UI
HytaleMinecraft equivalent
WindowsJava Edition container GUIs (chest, furnace, crafting)
Custom PagesBedrock Edition forms - but with full markup, styling, and layouts
HUDScoreboard overlays
NotificationsAction bar / toast messages
Event Titles/title command display
Kill FeedDeath messages
Entity UINameplate and health bar rendering

The primary system for custom UIs. Uses .ui markup files with a curly-brace DSL and server-side event handling.

// open a custom page (see Player API for PlayerRef)
Player player = store.getComponent(ref, Player.getComponentType());
PlayerRef playerRef = store.getComponent(ref, PlayerRef.getComponentType());
MyPage page = new MyPage(playerRef);
player.getPageManager().openCustomPage(ref, store, page);

See: Custom Pages | Builders | Markup | Styling

For inventory and crafting interfaces with item slots. Different paradigm from pages - uses ItemContainer and slot transactions.

WindowManager windowManager = player.getWindowManager();
ContainerWindow window = new ContainerWindow(...);
windowManager.openWindow(ref, window, store);

See: Windows

Control built-in HUD components (health, mana, compass), send notifications, display event titles, customize the kill feed, or create custom overlays.

HudManager hud = player.getHudManager();
hud.hideHudComponents(playerRef, HudComponent.Compass);

See: HUD

World-space UI attached to entities - health bars, damage numbers, nameplates.

See: Entity UI

All UI systems follow a server-authoritative model:

Every interaction is a network round-trip. Latency equals ping. Plan your UI accordingly - batch updates when possible and use interface locking to prevent spam clicks.