Schermate di dialogo: creare veri menu senza mod
I dialoghi dei data pack offrono una vera finestra con input e pulsanti. Ecco la struttura JSON, come un pulsante esegue un comando e come si confronta con l'escamotage del libro-menu.
I menu dei server un tempo erano libri scritti con pagine cliccabili o una GUI di baule simulata con cornici. I dialoghi hanno sostituito entrambi con una vera schermata.
Cos'è un dialogo
Un file JSON in un data pack che descrive una finestra:
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" } }
}
Poi /dialog show @p my_pack:welcome.
I tipi
| Tipo | Forma |
|---|---|
notice | testo più un pulsante di chiusura |
confirmation | sì / no, ciascuno con la propria azione |
multi_action | una griglia di pulsanti |
server_links | l'elenco di link integrato |
dialog_list | un menu che apre altri dialoghi |
multi_action is the workhorse — it is the class-picker, the shop, the warp list.
I pulsanti eseguono comandi
{ "label": { "text": "Warp to spawn" },
"action": { "type": "minecraft:run_command", "command": "/spawn" } }
Come clickEvent in chat, this runs come giocatore che clicca, al loro livello di permessi. Un pulsante che richiama un comando solo per op non fa nulla per un giocatore normale. L'escamotage standard è un trigger objective: the button runs /trigger warp set 1 and a ticking function does the privileged part.
Input
"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" } } ] }
]
I valori arrivano come argomenti di macro alla funzione chiamata dal pulsante, quindi la funzione ricevente è una macro:
$say Welcome $(name), you chose $(class)
Il $ 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.
Perché questo supera il trucco del libro
- È una schermata, quindi mette in pausa l'input anziché rimanere nella cronologia della chat.
- Gli input esistono davvero. Un libro poteva solo offrire link.
- Nessun oggetto richiesto. Niente da perdere, gettare o duplicare.
- Si chiude in modo pulito e non è possibile scorrerlo all'indietro.
L'unica cosa che i libri fanno ancora meglio è la lettura prolungata: il corpo di un dialogo non è il posto adatto per tre pagine di lore.
Stili dei waypoint
Lo stesso strumento copre i waypoint della barra di localizzazione, che sono un registro separato del data pack che controlla il colore dell'indicatore e lo sprite mostrato per una posizione o un giocatore tracciato. Utile per gli indicatori di squadra dove una bossbar sarebbe troppo invasiva.
Crea schermate di dialogo con input e pulsanti e personalizza gli stili dei waypoint nel Costruttore di input di dialogo e stili di waypoint.