Dialog Menu
Überblick
Dialog Menu öffnet über Papers Dialog-API die nativen Dialogbildschirme von Minecraft 1.21.6 und neuer. Ein Dialog ist ein Fenster in der Bildschirmmitte mit Titel, Textkörper, optionalem Item, Buttons und Eingabefeldern. Er benötigt kein Resource Pack und kein benutzerdefiniertes Inventar.
Du baust den gesamten Dialog in einem einzigen Action-Entry, Paper Dialog. Jeder Button führt entweder einen Befehl als Spieler aus oder löst andere TypeWriter-Entries aus. Eingabefelder (Text, Schalter, Auswahl, Schieberegler) werden gelesen, wenn der Spieler bestätigt, und ihre Werte werden mit $(key) in den Befehl eingesetzt.
Funktionen
- Native Dialoge — das Vanilla-Dialogfenster, geöffnet über Papers Dialog-API.
- Drei Layouts — ein Raster aus Buttons, eine Ja/Nein-Bestätigung oder ein Hinweis mit einem einzelnen Button.
- Aktions-Buttons — führen einen Befehl als Spieler aus, optional als OP.
- Trigger-Buttons — lösen TypeWriter-Entries direkt aus, ohne Befehl.
- Eingaben — Textfeld (auch mehrzeilig), Schalter, Mehrfachauswahl und Zahlenschieberegler.
- Eingabewerte in Befehlen — verwende
$(key)in einem Befehl, um einzusetzen, was der Spieler eingegeben oder gewählt hat. - Dynamischer Text — Titel, Nachrichten und Beschriftungen akzeptieren MiniMessage und PlaceholderAPI-Platzhalter.
- Body-Item — zeigt ein Item im Dialogkörper an.
- Verhalten nach der Aktion — den Dialog schließen, offen lassen oder auf eine Serverantwort warten.
- Platzhalter — prüfe, ob ein Spieler gerade einen Dialog geöffnet hat.
Installation
- Betreibe Paper (oder einen Fork wie Folia) in der Version 1.21.6 oder neuer: Ältere Versionen haben die Dialog-API nicht.
- Stelle sicher, dass die Basic-Erweiterung von TypeWriter installiert ist (siehe die TypeWriter-Dokumentation).
- Optional: Installiere PlaceholderAPI, um Platzhalter in Texten zu verwenden.
- Lege die Dialog-Menu-JAR in
plugins/Typewriter/extensions/ab und starte den Server neu.
Erste Schritte
Zeige ein Bestätigungsfenster, bevor ein Spieler teleportiert wird:
- Öffne im TypeWriter-Web-Panel eine Sequence-Page und füge einen Paper Dialog-Entry hinzu.
- Setze
displayNameauf<gold>Travel to the spawn?undmessageauf den Text des Dialogkörpers. - Setze
dialogTypeaufCONFIRMATION. - Füge in
buttonseinen Aktions-Button hinzu. Setze seinlabelaufYesund seinencommandaufspawn. - Setze in
exitButtondaslabelaufNo. Lasscommandleer: Der Button schließt dann nur den Dialog. - Verknüpfe den Entry mit dem, was ihn öffnen soll: eine NPC-Interaktion, ein Befehl oder eine Dialogoption.
- Veröffentliche und löse den Entry im Spiel aus.
Um einen Wert abzufragen, füge buttons eine Texteingabe hinzu: Setze key auf name, buttonLabel auf Send und command auf rename $(name). Wenn der Spieler auf den Button klickt, wird der Text anstelle von $(name) eingesetzt.
asOp führt den Befehl mit temporären Operator-Rechten aus. Verwende es nur für Befehle, die du vollständig kontrollierst, und setze niemals freien Text eines Spielers in einen solchen Befehl ein.
Funktionsweise
Wenn die Aktion ausgeführt wird, wird der Dialog aus dem Entry aufgebaut und dem auslösenden Spieler angezeigt. Ein Button ist einmalig verwendbar: Nach einem Klick wird seine Aktion für diesen Dialog einmal ausgeführt. Der Dialog wird entsprechend afterAction geschlossen oder bleibt offen.
Alle Textfelder unterstützen MiniMessage und Platzhalter. displayName fällt auf den Entry-Namen zurück, wenn es leer ist.
Menüs
Das Dialog-Layout hängt von dialogType ab:
| Typ | Layout |
|---|---|
MULTI_ACTION | Ein Raster aus Buttons mit columns Spalten, plus dem Exit-Button, wenn showExitButton aktiviert ist. |
CONFIRMATION | Das Vanilla-Ja/Nein-Fenster: Der erste Button bestätigt, der Exit-Button lehnt ab. Der Exit-Button wird in diesem Modus immer erzeugt. |
NOTICE | Ein Fenster mit einem einzelnen Button, der den ersten Button verwendet oder den Exit-Button, falls es keinen gibt. |
Die Button-Typen, die du zu buttons hinzufügen kannst:
| Typ | Felder | Befehls-Makro |
|---|---|---|
| Aktions-Button | label, command, asOp | keines |
| Trigger-Button | label, triggers | keines |
| Texteingabe | label, key (Standard input), buttonLabel, command, asOp, width, labelVisible, initial, maxLength, maxLines, height | $(input) |
| Boolean-Schalter | label, key (Standard boolean), initial, onTrue, onFalse, buttonLabel, command, asOp | $(boolean), ersetzt durch onTrue oder onFalse |
| Mehrfachauswahl | label, key (Standard choice), options, buttonLabel, command, asOp | $(choice) |
| Zahlenbereich | label, key (Standard value), start, end, initial, step, buttonLabel, command, asOp | $(value), auf eine ganze Zahl gerundet |
Eingabefelder werden über den Buttons angezeigt. Jeder Eingabe-Button fügt außerdem seinen eigenen Bestätigungs-Button hinzu, mit buttonLabel als Text; ein Befehl kann das $(key) jeder Eingabe im selben Dialog verwenden. Der Exit-Button wird separat in exitButton konfiguriert.
Schreibe bei einer Mehrfachauswahl options als kommagetrennte Liste und füge ein * hinter der Option an, die anfangs ausgewählt sein soll, zum Beispiel Easy,Normal*,Hard.
Platzhalter
PlaceholderAPI-Platzhalter, bereitgestellt von der Expansion typewriter.
| Platzhalter | Gibt zurück |
|---|---|
%typewriter_inmenudialog% | 1, wenn der Spieler einen Dialog dieser Erweiterung geöffnet hat, sonst 0. |
%typewriter_inmenudialog_<name>% | 1, wenn der geöffnete Dialog der Paper-Dialog-Entry mit diesem Entry-Namen ist. %typewriter_inmenudialog:<name>% funktioniert ebenfalls. |
Der Zustand wird zurückgesetzt, wenn auf einen Button geklickt wird, wenn der Spieler den Server verlässt und wenn TypeWriter neu lädt. Er wird nicht zurückgesetzt, wenn der Spieler den Dialog mit der Escape-Taste schließt.
Entries
1 Einträge, aus dem Quellcode der Erweiterung generiert.
Aktionen1
- Paper DialogDisplay a customizable dialog
Fehlerbehebung
Beim Ausführen der Aktion wird nichts angezeigt. Dialoge benötigen Paper 1.21.6 oder neuer. Auf einem älteren Server existiert die Dialog-API nicht, und die Aktion schlägt fehl. Prüfe außerdem, ob die criteria des Entries erfüllt sind.
Ein Button bewirkt nichts. Befehls-Buttons mit leerem command schließen nur den Dialog. Andernfalls wird der Befehl als Spieler ausgeführt: Fehlt dem Spieler die Berechtigung dafür, schlägt er für ihn stillschweigend fehl, und ein Fehler wird als Dialog command '…' failed protokolliert. Teste den Befehl zuerst im Chat.
$(key) erscheint im Befehl oder wird durch nichts ersetzt. Der key der Eingabe und das Makro müssen exakt übereinstimmen. Ein Makro, das zu keiner Eingabe passt, wird durch einen leeren Text ersetzt. Bei Schaltern liefert das Makro den Wert onTrue oder onFalse, nicht true oder false.
Die Buttons funktionieren nach dem ersten Klick nicht mehr. Jeder Button ist pro geöffnetem Dialog einmalig verwendbar. Mit afterAction auf NONE oder WAIT_FOR_RESPONSE kann das Fenster auf dem Bildschirm bleiben, aber seine Buttons reagieren nicht mehr. Löse die Aktion erneut aus, um einen frischen Dialog zu öffnen.
%typewriter_inmenudialog% bleibt auf 1. Der Spieler hat den Dialog mit Escape geschlossen, was den Zustand nicht zurücksetzt. Er wird beim nächsten Button-Klick, beim Verlassen des Spielers oder beim Neuladen zurückgesetzt.
Verwandte Erweiterungen
- Companion — öffne einen Dialog, wenn der Spieler auf seinen Begleiter klickt.