Zum Hauptinhalt springen

GUI

Die GUI-Erweiterung ist das zentrale Menüsystem von Typewriter. Sie bietet 9 konfigurierbare Layout-Engines (plus reine API-Komponenten), 23 Inventartypen, Tastatur-/Mausinteraktionen, dauerhafte Gegenstandsspeicherung und vollständige MiniMessage-Formatierung. Fast alle anderen Erweiterungen sind für ihre Menüs darauf angewiesen.

Demnächst: ein webbasierter WYSIWYG-Editor mit Drag & Drop, ingame-genauer Live-Vorschau, CSS-Flexbox-Auto-Layout, Menüzuständen, Tilemaps und Multi-Provider-Resourcepack-Unterstützung.

Funktionen

  • 9 Layout-Engines — Simple, Composite, Scrollable, Paginated, Frame, Flex, Storage, Book, Merchant — plus Iterator, Slider und ReactiveSlot über die Kotlin-API.
    • 23 Inventartypen — Truhe, Ofen, Amboss, Zaubertisch, Schmiedetisch, Händler, Buch und mehr.
    • Scrollen und Navigation — Scrollbare Layouts mit konfigurierbaren Auf-/Ab-/Links-/Rechts-Schaltflächen. Scroll-Schaltflächen sind am Viewport verankert. Multi-Frame mit unabhängigen Zonen.
    • Dauerhafte Speicherung — Durch Artefakte gestützte Gegenstandsspeicherung — pro Spieler oder gruppenbasiert. Akkumulationsmodus zur Fortschrittsverfolgung. Konfigurierbare Klickaktionen.
    • Speicher-Platzhalter — Dynamische Platzhalter {stored_name}, {stored_amount}, {stored_max} in Slot-Namen und -Lore.
    • MiniMessage — Volle MiniMessage-Unterstützung für Titel, Gegenstandsnamen und Lore. Farben, Verläufe, Hover-/Klick-Ereignisse.
    • Klickinteraktionen — LEFT, RIGHT, SHIFT, DOUBLE_CLICK, DROP, SWAP_OFFHAND, NUMBER_KEY, SCROLL — pro Slot oder global.
    • Animationen — Sanfte Slot-Übergänge mit konfigurierbarem Easing (linear, ease-in, ease-out).
    • Eingabedialoge — Texteingabeaufforderungen während der Menüinteraktion über die Dialog-API von Paper.

Architektur

Eintragsbibliothek

Aktionen

  • Open GUI — Der Haupteinstiegspunkt. Definiert eine Inventar-GUI mit Titel, Layout, Gegenständen, Interaktionen und Speicherung.

Konfiguration

  • GUI Settings — Globale Standardwerte: Audiokonfiguration, Zuordnung des Speicher-Klickverhaltens, Fertigkeitsbaum-Knoten.

Anleitungen

  • Einführung — Wie das System funktioniert, das Vokabular und dein erstes Menü Schritt für Schritt.
    • Layout-Typen — Jede Layout-Engine mit vollständigen Beispielen und wann welche zu verwenden ist.
    • Befehle & Interaktionen — Klicktypen, interne gui:-Aktionen, Abklingzeiten, Eingabedialoge.
    • Cookbook — Anpassungsfertige Rezepte: scrollbare Liste, Shop, Bestätigung, Kontingent-Einzahlung.

Artefakte

  • GUI Storage — Artefakt für dauerhafte Speicherung. Gegenstandspersistenz pro Spieler oder gruppenbasiert, mit Akkumulationsunterstützung.

Schnellstart

  • 1. Einen Open-GUI-Eintrag erstellen — Erstelle einen Open GUI-Aktionseintrag. Dieser eine Eintrag definiert alles zu einem Menü: Grundeinrichtung: - title — Inventartitel (MiniMessage + PlaceholderAPI) - guiType — Inventartyp: CUSTOM, CHEST, MERCHANT, BOOK, ANVIL usw. (23 Typen) - size — Für den Typ CUSTOM: SIZE_9 bis SIZE_54 Layout (wähle eines): - simple — Explizite x,y-Koordinaten, mit count/direction/gap/repeatY für Rastermuster - scrollable — Viewport mit Scroll-Schaltflächen, das innere Layout scrollt - frame — Mehrere unabhängige Zonen, jede mit eigenem Kind-Layout - paginated — Diskrete Seiten mit Vor-/Zurück-Navigation - composite — In Z-Reihenfolge gestapelte Kinder - book — MiniMessage-Seiten als geschriebenes Buch - merchant — Dorfbewohner-Handel mit benutzerdefinierten Gegenständen Gegenstände & Interaktionen: - Definiere Slots mit item, displayName, lore — nutze x/y/count/direction zur Positionierung - Hänge interactionList pro Slot an: LEFT, RIGHT, SHIFT_LEFT, SHIFT_RIGHT, DOUBLE_CLICK, DROP usw. - Hänge triggers an, um Typewriter-Aktionen beim Klick auszulösen Speicherung (optional): - Füge storage zu einem beliebigen Slot hinzu, um Gegenstände zu persistieren - Nutze die Platzhalter {stored_name}, {stored_amount}, {stored_max} → Referenz des Open-GUI-Eintrags

  • 2. Aus anderen Erweiterungen verknüpfen — Sobald dein GUI-Eintrag existiert, referenziere ihn aus jeder anderen Erweiterung, die ein Menü benötigt: - QuestCodexquest_codex_settings nutzt das GUI-Layout zum Durchsuchen von Quests - Shops — Shop-Menüs nutzen GUI-Layouts zur Gegenstandsanzeige - BattlePass, Crates, Pets, Party, Profiles, Cosmetics, Dungeon, BTCSky... — Alle nutzen die GUI-Erweiterung für ihre Menüs Referenziere einfach die ID des Open GUI-Aktionseintrags in der Menükonfiguration der anderen Erweiterung. > Die GUI-Erweiterung ist eine erforderliche Abhängigkeit für über 20 andere Erweiterungen.

Layout-Typen

SimpleLayout

Gegenstände werden an expliziten (x, y)-Koordinaten auf einem virtuellen Raster platziert. Am besten für statische Menüs, Dekorationen und Hintergründe. Unterstützt count, direction, gap und repeatY für Rastermuster.

ScrollableLayout

Umschließt ein Kind-Layout mit Scroll-Unterstützung. Benutzerdefinierte Scroll-Schaltflächen (UP/DOWN/LEFT/RIGHT) sind am Viewport verankert — sie bewegen sich nicht, wenn der Inhalt scrollt. Am besten für lange Gegenstandslisten.

FrameLayout

Teilt den Bildschirm in unabhängige Zonen. Jeder Frame hat eigene Position, Größe und ein Kind-Layout (meist scrollbar). Am besten für Dashboards, Seitenleisten und Panels mit mehreren Bereichen. Jede scrollbare Zone muss eine eindeutige ID haben, damit das Scrollen korrekt isoliert ist.

PaginatedLayout

Diskrete Seiten mit Vor-/Zurück-Navigationsschaltflächen. Am besten für mehrseitige Menüs und große Sammlungen.

CompositeLayout

Schichtet mehrere Kind-Layouts in Z-Reihenfolge. Am besten für Overlays und komplexe Oberflächen.

BookLayout

Rendert MiniMessage-Seiten als geschriebenes Buch. Am besten für Lore, Anleitungen und Dialoge.

MerchantLayout

Definiert Dorfbewohner-Handel mit Eingabegegenständen und einem Ergebnis. Am besten für Shops und Handel.

Interaktionsreferenz

Alle unterstützten Interaktionen
InteraktionAuslöser
LEFTLinke Maustaste
RIGHTRechte Maustaste
SHIFT_LEFTShift + Linksklick
SHIFT_RIGHTShift + Rechtsklick
MIDDLEMittlere Maustaste
DOUBLE_CLICKDoppelklick
NUMBER_KEY_1..9Hotbar-Tasten 1-9
DROPQ-Taste
DROP_ALLStrg+Q
SWAP_OFFHANDF-Taste

Verwendung: interactionList pro Slot für Klickaktionen, globalInteractions für menüweite Tastenbelegungen.

Referenz der GUI-Typen

Alle 23 unterstützten Inventartypen
TypBeschreibung
CUSTOMKonfigurierbare Truhe (1-6 Reihen)
CHESTStandardtruhe
FURNACEOfen
BLAST_FURNACESchmelzofen
SMOKERRäucherofen
BEACONLeuchtfeuer
ENCHANTING_TABLEZaubertisch
GRINDSTONEReparatur am Schleifstein
CARTOGRAPHY_TABLEKartenbearbeitung
ANVILReparatur/Umbenennen am Amboss
LOOMWebstuhl (Bannermuster)
SMITHING_TABLESchmiedetisch
STONECUTTERSteinsäge
CRAFTING_TABLEWerkbank
BREWING_STANDBraustand
HOPPERTrichter
DROPPERWerfer
DISPENSERSpender
BARRELFass
SHULKER_BOXShulker-Kiste
ENDER_CHESTEndertruhe
MERCHANTHändlerhandel
BOOKGeschriebenes Buch

Speicherung und Akkumulation

  • Standardspeicherung: Klicke, um Gegenstände einzuzahlen/abzuheben. Alle Klickverhalten sind global über GUI Settings konfigurierbar.
  • Speicher-Platzhalter: {stored_name}, {stored_amount}, {stored_max} werden dynamisch im displayName und lore des Slots aufgelöst
  • forceStorage: true (Standard): nicht stapelbare Gegenstände (Schwerter, Werkzeuge, Rüstungen) können gespeichert werden
  • Akkumulationsmodus: Setze requiredItem + requiredAmount — Gegenstände werden verbraucht, onReachRequired-Auslöser feuern bei Erreichen des Schwellenwerts
  • Gruppenspeicherung: Teile die Speicherung zwischen Spielern (z. B. Insel-Team) über den group-Eintrag
  • Temporäre Slots: Gegenstände werden nach dem Schließen entfernt (temporary = true)
  • onFill / onEmpty-Auslöser: feuern Typewriter-Aktionen bei Zustandsänderungen des Slots

Vollständige Details siehe GUI Storage Artifact.

Platzhalter

Speicher-Platzhalter

Aufgelöst im displayName und lore eines Speicher-Slots:

PlatzhalterBeschreibung
{stored_name}Anzeigename des gespeicherten Gegenstands
{stored_amount}Aktuelle Gegenstandsanzahl im Slot
{stored_max}Maximale Kapazität des Slots

Engine-Platzhalter

GUI-Titel und Gegenstands-Lore unterstützen zudem die Platzhalter der Typewriter-Engine und PlaceholderAPI über @Placeholder-Felder.

Befehle

Diese Erweiterung bietet keine eigenständigen Befehle. Alle Menüinteraktionen laufen über Typewriter-Einträge.

Berechtigungen

Keine benutzerdefinierten Berechtigungen. Der GUI-Zugriff wird über die Einträge gesteuert, die Open-GUI-Aktionen referenzieren.

Abhängigkeiten

ExtensionErforderlichVerwendung
(keine)-Dies ist eine grundlegende Erweiterung. Über 20 andere Erweiterungen hängen von ihr ab.
PlaceholderAPIOptionalFür @Placeholder-Felder in Titeln, Namen und Lore.