Pular para o conteúdo principal

Dialog Menu

Telas de diálogo nativas do Minecraft controladas pelo TypeWriter: botões, entradas, confirmações.

Gratuitasv0.7Menus e visuais
RequerTypeWriter0.9Paper1.21.6+Basic extensionPlaceholderAPIopcional

Visão geral​

O Dialog Menu abre as telas de diálogo nativas do Minecraft 1.21.6 e posterior, por meio da API de diálogos do Paper. Um diálogo é uma janela no meio da tela com um título, um corpo de texto, um item opcional, botões e campos de entrada. Ele não precisa de resource pack nem de inventário personalizado.

Você monta o diálogo inteiro em uma única entry de ação, Paper Dialog. Cada botão executa um comando como o jogador ou dispara outras entries do TypeWriter. Os campos de entrada (texto, alternador, escolha, controle deslizante) são lidos quando o jogador confirma, e seus valores são inseridos no comando com $(key).

Recursos​

  • Diálogos nativos — a janela de diálogo vanilla, aberta com a API de diálogos do Paper.
  • Três layouts — uma grade de botões, uma confirmação sim/não ou um aviso com um único botão.
  • Botões de ação — executam um comando como o jogador, opcionalmente como OP.
  • Botões de trigger — disparam entries do TypeWriter diretamente, sem comando.
  • Entradas — campo de texto (inclusive de várias linhas), alternador, múltipla escolha e controle deslizante numérico.
  • Valores de entrada em comandos — use $(key) em um comando para inserir o que o jogador digitou ou escolheu.
  • Texto dinâmico — títulos, mensagens e rótulos aceitam MiniMessage e placeholders do PlaceholderAPI.
  • Item no corpo — exiba um item no corpo do diálogo.
  • Comportamento pós-ação — feche o diálogo, mantenha-o aberto ou aguarde uma resposta do servidor.
  • Placeholder — verifique se um jogador está com um diálogo aberto no momento.

Instalação​

  1. Execute o Paper (ou um fork como o Folia) 1.21.6 ou posterior: versões mais antigas não têm a API de diálogos.
  2. Certifique-se de que a extensão Basic do TypeWriter está instalada (veja a documentação do TypeWriter).
  3. Opcional: instale o PlaceholderAPI para usar placeholders nos textos.
  4. Coloque o JAR do Dialog Menu em plugins/Typewriter/extensions/ e reinicie o servidor.

Primeiros passos​

Exiba uma janela de confirmação antes de teletransportar um jogador:

  1. No painel web do TypeWriter, abra uma page sequence e adicione uma entry Paper Dialog.
  2. Defina displayName como <gold>Travel to the spawn? e message como o texto do corpo do diálogo.
  3. Defina dialogType como CONFIRMATION.
  4. Em buttons, adicione um botão de ação. Defina seu label como Yes e seu command como spawn.
  5. Em exitButton, defina label como No. Deixe command vazio: o botão então apenas fecha o diálogo.
  6. Ligue a entry ao que deve abri-la: uma interação com NPC, um comando ou uma opção de diálogo.
  7. Publique e dispare a entry no jogo.

Para coletar um valor, adicione uma entrada de texto a buttons: defina key como name, buttonLabel como Send e command como rename $(name). Quando o jogador clica no botão, o texto é inserido no lugar de $(name).

aviso

asOp executa o comando com direitos temporários de operador. Use-o apenas para comandos que você controla totalmente e nunca insira texto livre de um jogador em um comando desse tipo.

Como funciona​

Quando a ação é executada, o diálogo é construído a partir da entry e exibido ao jogador que a disparou. Um botão é de uso único: após um clique, sua ação é executada uma vez para aquele diálogo. O diálogo é fechado ou mantido aberto de acordo com afterAction.

Todos os campos de texto aceitam MiniMessage e placeholders. displayName usa o nome da entry quando está vazio.

O layout do diálogo depende de dialogType:

TipoLayout
MULTI_ACTIONUma grade de botões com columns colunas, mais o botão de saída quando showExitButton está ativado.
CONFIRMATIONA janela vanilla sim/não: o primeiro botão confirma, o botão de saída recusa. O botão de saída é sempre criado neste modo.
NOTICEUma janela com um único botão, que usa o primeiro botão ou o botão de saída se não houver nenhum.

Os tipos de botão que você pode adicionar a buttons:

TipoCamposMacro de comando
Botão de açãolabel, command, asOpnenhuma
Botão de triggerlabel, triggersnenhuma
Entrada de textolabel, key (padrão input), buttonLabel, command, asOp, width, labelVisible, initial, maxLength, maxLines, height$(input)
Alternador booleanolabel, key (padrão boolean), initial, onTrue, onFalse, buttonLabel, command, asOp$(boolean), substituído por onTrue ou onFalse
Múltipla escolhalabel, key (padrão choice), options, buttonLabel, command, asOp$(choice)
Intervalo numéricolabel, key (padrão value), start, end, initial, step, buttonLabel, command, asOp$(value), arredondado para um número inteiro

Os campos de entrada são exibidos acima dos botões. Cada botão de entrada também adiciona seu próprio botão de confirmação, com buttonLabel como texto; um comando pode usar o $(key) de qualquer entrada do mesmo diálogo. O botão de saída é configurado separadamente em exitButton.

Em uma múltipla escolha, escreva options como uma lista separada por vírgulas e adicione * depois da opção que deve vir selecionada inicialmente, por exemplo Easy,Normal*,Hard.

Placeholders​

Placeholders do PlaceholderAPI, fornecidos pela expansão typewriter.

PlaceholderRetorna
%typewriter_inmenudialog%1 se o jogador tem um diálogo desta extensão aberto, caso contrário 0.
%typewriter_inmenudialog_<name>%1 se o diálogo aberto é a entry Paper Dialog com este nome de entry. %typewriter_inmenudialog:<name>% também funciona.

O estado é limpo quando um botão é clicado, quando o jogador sai e quando o TypeWriter recarrega. Ele não é limpo quando o jogador fecha o diálogo com a tecla Esc.

Entries​

1 entradas, geradas a partir do código-fonte da extensão.

Ações1

Solução de problemas​

Nada é exibido quando a ação é executada. Os diálogos exigem o Paper 1.21.6 ou posterior. Em um servidor mais antigo, a API de diálogos não existe e a ação falha. Verifique também se os criteria da entry passam.

Um botão não faz nada. Botões de comando com command vazio apenas fecham o diálogo. Caso contrário, o comando é executado como o jogador: se o jogador não tiver a permissão para ele, falha silenciosamente para ele, e a falha é registrada como Dialog command '…' failed. Teste o comando no chat primeiro.

$(key) aparece no comando ou é substituído por nada. A key da entrada e a macro devem corresponder exatamente. Uma macro que não corresponde a nenhuma entrada é substituída por um texto vazio. Nos alternadores, a macro fornece o valor onTrue ou onFalse, e não true ou false.

Os botões param de funcionar após o primeiro clique. Cada botão é de uso único por diálogo aberto. Com afterAction definido como NONE ou WAIT_FOR_RESPONSE, a janela pode permanecer na tela, mas seus botões deixam de reagir. Dispare a ação novamente para abrir um diálogo novo.

%typewriter_inmenudialog% continua em 1. O jogador fechou o diálogo com Esc, o que não redefine o estado. Ele é redefinido no próximo clique em um botão, quando o jogador sai ou ao recarregar.

Extensões relacionadas​

  • Companion — abra um diálogo quando o jogador clicar em seu companion.