The Best Resource for Minecraft
The Best Resource for Minecraft

Dialoogschermen: echte menu's bouwen zonder mod

Dialoogschermen: echte menu's bouwen zonder mod

Datapack-dialogen geven je een echt venster met invoervelden en knoppen. Hier zie je de JSON-structuur, hoe een knop een commando uitvoert en hoe dit zich verhoudt tot de boek-menu-hack.

Servermenu's waren vroeger beschreven boeken met klikbare pagina's, of een kist-GUI nagemaakt met itemlijsten. Dialogen hebben beide vervangen door een echt scherm.

Wat een dialoog is

Een JSON-bestand in een datapack dat een venster beschrijft:

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" } }
}

Dan /dialog show @p my_pack:welcome.

De typen

TypeStructuur
noticetekst plus één sluitknop
confirmationja / nee, elk met een eigen actie
multi_actioneen raster van knoppen
server_linksde ingebouwde lijst met links
dialog_listeen menu dat andere dialogen opent

multi_action is the workhorse — it is the class-picker, the shop, the warp list.

Knoppen voeren commando's uit

{ "label": { "text": "Warp to spawn" },
  "action": { "type": "minecraft:run_command", "command": "/spawn" } }

Zoals clickEvent in chat, this runs , als de klikkende speler, op hun machtigingsniveau. Een knop die een commando aanroept dat alleen voor operators is, doet niets voor een normale speler. De standaardoplossing is een trigger objective: the button runs /trigger warp set 1 and a ticking function does the privileged part.

Invoer

"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" } } ] }
]

Waarden komen binnen als macro-argumenten voor de functie die de knop aanroept, dus de ontvangende functie is een macro:

$say Welcome $(name), you chose $(class)

De $ prefix on the line and $(key) for substitution. That is the whole binding mechanism, and it is what makes dialogs genuinely useful rather than decorative.

Waarom dit beter is dan de boeken-hack

  • Het is een scherm, dus het pauzeert de invoer in plaats van in de chatgeschiedenis te blijven staan.
  • Invoervelden bestaan echt. Een boek kon alleen links bieden.
  • Geen item vereist. Niets om te verliezen, laten vallen of dupliceren.
  • Het sluit netjes en er kan niet naar worden teruggescrold.

Het enige wat boeken nog steeds beter doen is lange teksten lezen — de hoofdtekst van een dialoog is geen goede plek voor drie pagina's achtergrondverhaal.

Waypoint-stijlen

Hetzelfde hulpmiddel behandelt locator-bar waypoints, wat een apart datapack-register is dat de markeringskleur en sprite bepaalt voor een gevolgde speler of positie. Handig voor teammarkeringen waarbij een bossbar te opdringerig zou zijn.

Bouw dialoogschermen met invoervelden en knoppen en pas waypoint-stijlen aan in de Dialooginvoer- & waypoint-stijlbouwer.

Probeer de tool: Dialog Input & Waypoint Style Builder →