Views, Tabs und Vererbung
Eine View ist ein Bildschirm eines Menüs. Alle Views teilen dieselbe Hülle (die Tab-Leiste, den Footer), nur der Inhalt wechselt.
Views deklarieren
Füge in views pro Bildschirm einen Eintrag hinzu:
| Feld | Aufgabe |
|---|---|
id | Wird von gui:view und von den Tabs verwendet. |
name | Beschriftung für den Breadcrumb. Fällt auf die id zurück. |
title | Titel dieser View. Leer behält den Menütitel. Akzeptiert {breadcrumb}, {view} und {root}. |
parentId | Übergeordnete View, für den Breadcrumb und damit der Tab des Elternteils hervorgehoben bleibt. |
frames | Explizite Zuordnung von einer Frame-id zu einer Layout-id. |
criteria, viewPermission | Die View ist nicht erreichbar und ihr Tab ausgeblendet, wenn sie nicht erfüllt sind. |
activeStyle | Aussehen des Tabs, solange er aktiv ist: glint, material, customModelData, nameFormat, loreSuffix. |
Beim Open GUI ist defaultViewId die zuerst geöffnete View (bei leerem Wert die zuerst deklarierte). breadcrumbSeparator ist der MiniMessage-Text zwischen den Breadcrumb-Segmenten, und pushHistoryOnViewSwitch sorgt dafür, dass gui:back nach einem Tab-Wechsel zur vorherigen View zurückkehrt.
Frames füllen
Setze in einem frame-Layout die layoutId eines Frames auf @view. Für die aktive View sucht die Erweiterung das Layout in dieser Reihenfolge:
- die
frames-Zuordnung der View für diese Frame-id; - ein Layout mit dem Namen
<view id>_<frame id>, zum Beispielisland_contentfür den Framecontentund die Viewisland; - dieselben beiden Suchen entlang der
parentId-Kette.
Ein Frame, der zu nichts aufgelöst wird, bleibt leer. Nur das Wurzel-Layout des Menüs (mainLayoutId) löst @view-Frames auf.
Tabs
Gib einem Tab-Item buttonPrefix view: und buttonType gleich der id der View. Ein Klick darauf wechselt zur View, und das Item übernimmt den activeStyle der View, solange diese View oder eine ihrer Kind-Views aktiv ist. Tabs nicht erreichbarer Views werden ausgeblendet.
Ist die angeforderte View ausgeblendet, wird die erste View verwendet, die der Spieler erreichen kann. Eine angeforderte View, die nicht existiert, wird als Unknown view protokolliert.
Ein Menü erben
baseMenuId ist die Entry-id eines Vorlagen-Open-GUI. Das Kind erbt dessen layoutPool, views, mainLayoutId, defaultViewId und size, wobei die Kette bis zur Wurzel verfolgt wird; ein Menü kann also eine Domänenvorlage erben, die ihrerseits eine globale Hülle erbt. Ein Layout des Kindes mit derselben id ersetzt das geerbte, und dasselbe gilt für Views. Der storagePool wird nur vom direkten Elternteil geerbt. Eine leere mainLayoutId beim Kind verwendet die des Elternteils.
Prüfe, ob das Elternteil existiert, ob jede layoutId im zusammengeführten Pool vorhanden ist und ob zwei Menüs nicht voneinander erben.
In der Praxis
Erstelle ein Vorlagenmenü mit einem festen Tab-Frame und einem @view-Inhalts-Frame und erstelle dann pro Domäne ein Kind, das nur die Inhalts-Layouts überschreibt. Inhalts-Layouts können simple, scrollable oder paginated sein, ohne die Tab-Leiste anzufassen.