Guides / Commands & Data

Telas de diálogo: criando menus reais sem mods

Diálogos de datapacks oferecem uma janela de verdade com campos de entrada e botões. Veja a estrutura JSON, como um botão executa um comando e como isso se compara ao truque do menu de Livro.

Antigamente, os menus de servidor eram feitos com Livros escritos e páginas clicáveis, ou GUIs de Baús simuladas com molduras de itens. Os diálogos substituíram ambos por uma tela de verdade.

O que é um diálogo

Um arquivo JSON em um datapack que descreve uma janela:

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

Depois /dialog show @p my_pack:welcome.

Os tipos

TipoFormato
noticetexto mais um botão de fechar
confirmationsim / não, cada um com sua própria ação
multi_actionuma grade de botões
server_linksa lista de links integrada
dialog_listum menu que abre outros diálogos

multi_action é o coringa — é o seletor de classes, a loja, a lista de teletransporte.

Botões executam comandos

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

Assim como clickEvent no chat, isso é executado como o Jogador que clicou, no nível de permissão dele. Um botão que chama um comando apenas para operadores não faz nada para um Jogador normal. A solução padrão é um objetivo trigger: o botão executa /trigger warp set 1 e uma função de tick faz a parte privilegiada.

Entradas

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

Os valores chegam como argumentos de macro para a função que o botão chama, então a função receptora é uma macro:

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

O prefixo $ na linha e $(key) para substituição. Esse é todo o mecanismo de vinculação, e é o que torna os diálogos genuinamente úteis, e não apenas decorativos.

Por que isso é melhor que o truque do Livro

  • É uma tela, então pausa a entrada em vez de ficar no histórico do chat.
  • As entradas realmente existem. Um Livro só podia oferecer links.
  • Nenhum item necessário. Nada para perder, derrubar ou duplicar.
  • Fecha de forma limpa e não pode ser rolado de volta.

A única coisa que os Livros ainda fazem melhor é a leitura de textos longos — o corpo de um diálogo não é um bom lugar para três páginas de história.

Estilos de ponto de referência

A mesma ferramenta cobre os pontos de referência da barra de localização (locator-bar waypoints), que são um registro de datapack separado que controla a cor do marcador e o sprite exibido para um Jogador ou posição rastreada. Útil para marcadores de equipe onde uma barra de chefe (bossbar) seria muito intrusiva.

Crie telas de diálogo com entradas e botões, e personalize os estilos de ponto de referência, no Construtor de Estilos de Entrada de Diálogo e Ponto de Referência.

Construtor de diálogos e estilos de waypoint →

More guides

Browse all →

Procurando mais ferramentas de Minecraft?

Um conjunto de geradores, visualizadores e conversores que rodam no navegador — tudo grátis.