Zum Hauptinhalt springen

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:

FeldAufgabe
idWird von gui:view und von den Tabs verwendet.
nameBeschriftung für den Breadcrumb. Fällt auf die id zurück.
titleTitel 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.
framesExplizite Zuordnung von einer Frame-id zu einer Layout-id.
criteria, viewPermissionDie View ist nicht erreichbar und ihr Tab ausgeblendet, wenn sie nicht erfüllt sind.
activeStyleAussehen 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:

  1. die frames-Zuordnung der View für diese Frame-id;
  2. ein Layout mit dem Namen <view id>_<frame id>, zum Beispiel island_content für den Frame content und die View island;
  3. 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.