Zum Hauptinhalt springen

Layouts, Frames und Slots

Ein Layout ist ein benannter Block des Menüs. Du erstellst es im layoutPool eines Open GUI-Entrys und gibst ihm eine id. Andere Layouts erreichen es über diese id.

Ein Layout wählen​

LayoutVerwendungFelder
simpleStatische Menüs, Rahmen und feste Buttons.items
flexItems, die automatisch in Reihen angeordnet werden.items, justifyContent, alignItems, wrap, virtualHeight
paginatedEine Liste, die in Seiten aufgeteilt ist.itemsPerPage, slots, items, navigationButtons
scrollableInhalt, der größer ist als das Fenster.innerId, virtualWidth, virtualHeight, buttons
frameVoneinander unabhängige Rechtecke.frames
compositeÜbereinander gezeichnete Ebenen.children
bookEin beschriebenes Buch.pages
merchantDorfbewohner-Handel.trades
storagePersistente Item-Slots.entry, groupKey, slots
leaderboardEine Fact-Rangliste.leaderboard, x, y, width, height, previousButton, nextButton

simple​

Jedes Item hat ein x (Spalte, 0 bis 8) und ein y (Reihe, 0 ist oben). Mit diesem Layout beginnst du am besten.

dropOnClose gibt beim Schließen des Menüs zurück, was in den Slots des Layouts übrig ist (auch wenn ein anderes Menü es ersetzt): Beute, die der Spieler nicht genommen hat, oder einen Gegenstand, den er dort abgelegt hat. Nur Gegenstände mit allowPickup werden zurückgegeben, und nur einmal; Dekoration nie. closeDelivery legt fest, wie: GIVE_OR_DROP (Standard) legt sie ins Inventar und wirft den Überschuss vor die Füße des Spielers, DROP wirft alles. Standardmäßig ist es aus, und der Editor warnt, wenn es aktiv ist, aber kein Gegenstand entnommen werden darf.

flex​

flex ignoriert x und y seiner Items und ordnet sie von links nach rechts, Reihe für Reihe, über die Breite des Menüs an. justifyContent bestimmt, wie eine Reihe verteilt wird (START, CENTER, END, SPACE_BETWEEN), alignItems, wo der Block innerhalb von virtualHeight vertikal sitzt, und wrap, ob eine volle Reihe in der nächsten Zeile fortgesetzt wird. Ohne wrap werden Items hinter der letzten Spalte verworfen und protokolliert.

paginated​

Items werden in Seiten zu je itemsPerPage aufgeteilt und in die physischen slots gefüllt (der Slot-Index ist y * 9 + x). Ist slots leer, füllen sie das Inventar von oben links. Füge Buttons in navigationButtons hinzu, einen pro role:

  • NEXT und PREVIOUS erscheinen nur, wenn es eine Seite gibt, zu der man wechseln kann.
  • BACK wird immer angezeigt und führt zum vorherigen Menü zurück.
  • INDICATOR ist nicht anklickbar und erscheint erst ab zwei Seiten. Sein Name und seine Lore akzeptieren {page}, {total_pages}, {next_page}, {prev_page} und {page_indicator}.

Reserviere die Zellen der Buttons: Seiten füllen die in slots aufgeführten Slots und umgehen deine Buttons nicht.

scrollable​

Ein scrollable-Layout zeigt ein Fenster auf das in innerId genannte Layout. virtualWidth und virtualHeight geben die Größe des gesamten Bereichs an. Füge buttons mit einer direction (UP, DOWN, LEFT, RIGHT) und einem step in Slots pro Klick hinzu. Jeder Button wird nur angezeigt, wenn es in seiner Richtung etwas zu scrollen gibt.

Ist showDefaultButtons aktiv (Standard), wird für jede Richtung ohne Eintrag in buttons ein Pfeil hinzugefügt. defaultStep (mindestens 1) ist die Anzahl der Slots, um die diese Pfeile pro Klick scrollen; deine eigenen Buttons behalten ihren step. Ist die Option aus, gibt es keine Standardpfeile.

Standardpfeile folgen derselben Regel wie deine eigenen: Sie erscheinen nur, solange der Inhalt in ihre Richtung scrollen kann. Ohne Konfiguration sind sie einfache Pfeil-Items mit dem Namen ▲, ▼, ◀ oder ▶, in der rechten Spalte (Spalte 8) für oben und unten und in der untersten Zeile für links und rechts. Sie überdecken nie etwas: Enthält die Zelle bereits ein Inhalts-Item, einen Button oder eine Dekoration, wird der Pfeil einfach nicht angezeigt, ohne Meldung in der Konsole. Ändere Item, Name oder Position eines Pfeils in der Liste scrollArrows von GUI Settings.

Menüs, die vor den Standardpfeilen geschrieben wurden

showDefaultButtons ist standardmäßig aktiv, daher erhält ein bestehendes scrollable-Layout Pfeile. Schalte es aus oder platziere die Pfeile anders, damit das Menü exakt bleibt, wie es war.

Das Mausrad scrollt bei geöffnetem Menü außerdem das fokussierte scrollbare Layout vertikal. Gib jedem scrollbaren und paginierten Layout eine eindeutige id, da die Position pro id verfolgt wird.

frame​

Ein frame-Layout listet Rechtecke auf: id, x, y, width, height und die layoutId des Layouts, das es füllt. Der Inhalt des Frames wird relativ zu seiner linken oberen Ecke positioniert. Ein Frame ohne auflösbare layoutId wird übersprungen. Verwende @view als layoutId, damit die aktive View ihn füllt.

Ein typisches Dashboard: eine feste Tab-Spalte, ein scrollbarer Inhalts-Frame und ein Footer-Frame.

composite​

composite zeichnet seine children (Layout-IDs) der Reihe nach, spätere Kinder liegen oben. Setze den Hintergrund zuerst, den Inhalt in die Mitte und die Buttons zuletzt. Ein Kind, das nicht existiert, wird übersprungen, und eine Schleife zwischen Layouts ergibt ein leeres Layout.

Layouts verbinden​

Ein Layout wird verwendet, wenn es referenziert wird: durch mainLayoutId, ein composite-Kind, ein innerId eines scrollable oder eine layoutId eines frame. Ein Layout, auf das niemand verweist, wird schlicht nicht gezeichnet.

Items und Slots​

Die Felder eines Items findest du im Abschnitt Menüs der GUI-Seite.