Dialogbildschirme: Echte Menüs ohne Mod erstellen
Datapack-Dialoge bieten ein richtiges Fenster mit Eingabefeldern und Schaltflächen. Hier ist die JSON-Struktur, wie eine Schaltfläche einen Befehl ausführt und wie sie sich vom Buch-Menü-Hack unterscheidet.
Server-Menüs waren früher geschriebene Bücher mit anklickbaren Seiten oder eine mit Item-Frames gefälschte Truhen-GUI. Dialoge haben beides durch einen echten Bildschirm ersetzt.
Was ein Dialog ist
Eine JSON-Datei in einem Datapack, die ein Fenster beschreibt:
data/<namespace>/dialog/welcome.json
{
"type": "minecraft:notice",
"title": { "text": "Welcome" },
"body": [{ "type": "minecraft:plain_message",
"contents": { "text": "Pick a class to begin." } }],
"action": { "label": { "text": "Continue" } }
}
Dann /dialog show @p my_pack:welcome.
Die Typen
| Typ | Form |
|---|---|
notice | Text plus eine Schließen-Schaltfläche |
confirmation | Ja / Nein, jeweils mit eigener Aktion |
multi_action | ein Raster von Schaltflächen |
server_links | die integrierte Linkliste |
dialog_list | ein Menü, das andere Dialoge öffnet |
multi_action ist das Arbeitspferd – es ist der Klassenwähler, der Laden, die Warp-Liste.
Schaltflächen führen Befehle aus
{ "label": { "text": "Warp to spawn" },
"action": { "type": "minecraft:run_command", "command": "/spawn" } }
Wie clickEvent im Chat wird dies als der klickende Spieler mit dessen Berechtigungsstufe ausgeführt. Eine Schaltfläche, die einen nur für OPs verfügbaren Befehl aufruft, tut für einen normalen Spieler nichts. Der Standard-Workaround ist ein trigger-Ziel: Die Schaltfläche führt /trigger warp set 1 aus, und eine tickende Funktion erledigt den privilegierten Teil.
Eingaben
"inputs": [
{ "type": "minecraft:text", "key": "name", "label": { "text": "Your name" }, "max_length": 16 },
{ "type": "minecraft:boolean", "key": "pvp", "label": { "text": "Enable PvP" } },
{ "type": "minecraft:single_option", "key": "class", "options": [
{ "id": "mage", "display": { "text": "Mage" } },
{ "id": "rogue", "display": { "text": "Rogue" } } ] }
]
Werte kommen als Makro-Argumente an die Funktion, die die Schaltfläche aufruft, daher ist die empfangende Funktion ein Makro:
$say Welcome $(name), you chose $(class)
Das $-Präfix in der Zeile und $(key) für die Substitution. Das ist der gesamte Bindungsmechanismus, und er macht Dialoge wirklich nützlich statt nur dekorativ.
Warum das den Buch-Hack schlägt
- Es ist ein Bildschirm, daher pausiert es die Eingabe, anstatt im Chatverlauf zu sitzen.
- Eingaben existieren tatsächlich. Ein Buch konnte nur Links anbieten.
- Kein Gegenstand erforderlich. Nichts zu verlieren, fallen zu lassen oder zu duplizieren.
- Es schließt sauber und kann nicht zurückgescrollt werden.
Das Einzige, was Bücher immer noch besser können, ist das Lesen langer Texte – ein Dialogkörper ist kein guter Ort für drei Seiten Lore.
Wegpunkt-Stile
Dasselbe Tool deckt Locator-Bar-Wegpunkte ab, die ein separates Datapack-Register sind, das die Markierungsfarbe und das Sprite steuert, die für einen verfolgten Spieler oder eine Position angezeigt werden. Nützlich für Team-Markierungen, wo eine Bossbar zu aufdringlich wäre.
Erstelle Dialogbildschirme mit Eingaben und Schaltflächen und passe Wegpunkt-Stile an im Dialog Input & Waypoint Style Builder.