Text Display Dialogue
Visão geral
O Text Display Dialogue substitui a caixa de chat dos diálogos do TypeWriter por entidades text_display do Minecraft. O nome do falante e as linhas de texto flutuam ao lado do NPC (ou em uma posição que você escolher), se escrevem sozinhos e entram e saem com uma breve animação de escala. Tudo é enviado por pacotes ao jogador que está no diálogo: nada é gerado no mundo e os outros jogadores não veem nada.
A extensão adiciona três entries de diálogo e uma entry de cinemática. Elas se comportam como as entries de diálogo normais do TypeWriter (speaker, criteria, modifiers, triggers, duration de digitação, sound), então você pode trocá-las em uma conversa existente sem alterar o restante da sua page.
Recursos
- Diálogo falado flutuante — o nome do falante e o texto aparecem acima do falante com efeito de digitação e uma animação de entrada.
- Menu de escolha no mundo — cada opção é uma linha flutuante; o jogador rola a hotbar para mudar a opção destacada e clica com o botão direito para confirmar.
- Menu relativo ao jogador — uma variante que segue o jogador com um deslocamento configurável, para falantes sem posição no mundo.
- Legendas de cinemática — exiba segmentos de texto em uma linha do tempo de cinemática com atraso e animação de digitação.
- Estilização completa —
scale,textOpacity,viewRange,billboarde cores de fundo separadas para o falante, o texto e as opções. - Timer de opções — cancele automaticamente uma escolha após um atraso e dispare
cancelTriggers, com um placeholder de contagem regressiva ao vivo. - Lógica por opção — cada opção tem seus próprios
criteria,modifiersetriggers, e uma posição opcional. - Bloqueio de inventário — o jogador não pode abrir um inventário, soltar um item nem trocar de mão enquanto um diálogo é exibido.
Instalação
- Instale o PlaceholderAPI se quiser usar
%placeholders%no texto dos diálogos (opcional). - Obtenha a extensão nas lojas (veja os botões acima) e coloque o JAR em
plugins/Typewriter/extensions/. - Reinicie o servidor.
A extensão não precisa de nenhum outro plugin: as entidades text display são enviadas com a biblioteca de pacotes incluída no TypeWriter. Funciona somente no Paper: o Folia não é suportado.
Primeiros passos
Transforme uma saudação simples em um diálogo flutuante com uma escolha:
- No painel web do TypeWriter, abra uma page sequence que já tenha um NPC (um speaker) e um trigger de interação, ou crie uma.
- Adicione uma entry Spoken dialogue with Text Display. Defina
speakercomo seu NPC e escreva otext, por exemploWelcome, traveller!. Definadurationcomo2spara obter um efeito de digitação (zero exibe o texto de uma vez). - Adicione uma entry Option dialogue with Text Display, defina o mesmo
speaker, escreva a pergunta emtexte adicione duas ou trêsoptions. Dê a cada opção os seus própriostriggers. - Ligue os
triggersda entry falada à entry de opções para que a conversa continue. - Opcionalmente, defina
timerna entry de opções como15se liguecancelTriggersa uma entry de despedida. O texto pode mostrar a contagem regressiva com%typewriter_textdisplaydialogue_timer%. - Publique a page e fale com o NPC. Clique com o botão direito no texto flutuante (ou no ar) para continuar; em uma escolha, role a hotbar e clique com o botão direito para confirmar.
Por padrão, o texto é colocado um bloco acima da posição do falante. Se o falante não for uma entidade NPC com posição, ou se você quiser um local fixo, defina position com a ferramenta de captura de posição. Use a variante player option quando o menu deve seguir o jogador.
Como funciona
Cada entry de diálogo divide o texto em um text_display por linha, de modo que mensagens longas se empilham para baixo. O efeito de typing usa o modo de digitação padrão do TypeWriter. As opções aparecem uma após a outra (com 100 ms de intervalo) depois que o texto termina e só podem ser confirmadas quando todas estiverem visíveis.
Controles
| Diálogo | Continuar ou confirmar | Mudar de opção |
|---|---|---|
| Spoken | A tecla de confirmação do TypeWriter, ou clique direito em um dos textos flutuantes. Um primeiro toque completa a digitação, um segundo fecha o diálogo. | Não se aplica |
| Option e Player option | Clique direito no ar ou em um dos textos flutuantes, depois que todas as opções forem exibidas. | Role a hotbar (o slot segurado nunca muda). A seleção dá a volta. |
Configuração
Os diálogos não têm arquivo de configuração. Cada texto exibido é um snippet, editável em plugins/Typewriter/snippets; os valores padrão reproduzem a exibição padrão. Um <token> em um snippet é substituído pelo seu valor, e as outras <tags> continuam sendo MiniMessage. Em um snippet de layout (*.format), o interlocutor e a dica só são exibidos quando o token deles está presente, enquanto o texto e as opções são sempre exibidos. Um snippet de dica vazio não exibe nenhuma dica.
| Snippet | Usado por | Função | Tokens |
|---|---|---|---|
textdisplay.option.format | Option, Player option | Layout | <speaker_name> <text> <options> <instruction> |
textdisplay.speaker.format | Option, Player option | Nome do interlocutor | <speaker_name> |
textdisplay.option.prefix.selected | Option, Player option | Prefixo da opção selecionada | - |
textdisplay.option.prefix.unselected | Option, Player option | Prefixo das outras opções | - |
textdisplay.option.selected | Option, Player option | Linha da opção selecionada | <prefix> <option_number> <option_text> |
textdisplay.option.unselected | Option, Player option | Linhas das outras opções | <prefix> <option_number> <option_text> |
textdisplay.instruction | Option, Player option | Dica | - |
textdisplay.spoken.format | Spoken | Layout | <speaker_name> <text> <instruction> |
textdisplay.spoken.speaker.format | Spoken | Nome do interlocutor | <speaker_name> |
textdisplay.spoken.text.format | Spoken | Linha de texto | <text> |
textdisplay.spoken.instruction | Spoken | Dica | - |
textdisplay.spoken.continue | Spoken | Dica para continuar (tecla de confirmação) | <key> |
textdisplay.cinematic.spoken.format | Cinemática | Layout | <speaker_name> <text> <instruction> |
textdisplay.cinematic.spoken.speaker.format | Cinemática | Nome do interlocutor | <speaker_name> |
textdisplay.cinematic.spoken.instruction | Cinemática | Dica | - |
textdisplay.inventory.blocked | Todos os diálogos | Mensagem quando um jogador tenta abrir um inventário (vazio: sem mensagem) | - |
textdisplay.error.init | Todos os diálogos | Mensagem quando a exibição não consegue iniciar (vazio: sem mensagem) | - |
O diálogo Player option usa os mesmos snippets que o diálogo Option.
Placeholders
| Placeholder | Retorna |
|---|---|
%typewriter_textdisplaydialogue_timer% | Segundos restantes no timer do diálogo de opções atual, 0 quando nenhum timer está em execução. |
O placeholder está registrado no PlaceholderAPI (expansão do Typewriter), então também funciona em outros lugares (scoreboards, chat, outros plugins) e retorna 0 quando nenhum temporizador está ativo. A extensão também o substitui por conta própria no text dos diálogos de opções, no texto de cada opção e no nome do interlocutor, onde ele funciona sem o PlaceholderAPI. Os outros placeholders do PlaceholderAPI funcionam nesses textos quando o PlaceholderAPI está instalado.
Entries
4 entradas, geradas a partir do código-fonte da extensão.
Diálogos3
- Textdisplay OptionOption dialogue with Text Display
- Textdisplay Player OptionPlayer Option dialogue with Text Display(relative position)
- Textdisplay SpokenSpoken dialogue with Text Display
Cinemáticas1
- Textdisplay Spoken CinematicDisplay a spoken dialogue using TextDisplay during a cinematic
Solução de problemas
Nada aparece e o jogador vê um "Dialog initialization error" em vermelho. A extensão capturou um erro ao gerar os displays. Leia no log do servidor a linha que começa com TextDisplay initialization error para saber a causa e verifique se position, quando definida, é uma posição válida em um mundo existente.
O texto aparece nos pés do jogador ou no lugar errado. O texto é ancorado à posição da entidade do falante. Se speaker estiver vazio, ou não for uma instância de NPC visível para o jogador, usa-se a localização do jogador (mais um bloco para cima). Defina position para posicioná-lo exatamente.
O menu de opções não pode ser confirmado. O clique direito só é aceito depois que a digitação terminou e todas as opções apareceram. Com uma duration longa e muitas opções, espere o menu completo. As opções cujos criteria não correspondem não são exibidas; se nenhuma corresponder, nada pode ser selecionado.
A rolagem não muda a opção. Os eventos de rolagem são limitados a um a cada 150 ms, então rolagens muito rápidas são ignoradas. O slot da hotbar segurado nunca muda durante o diálogo; isso é esperado.
A contagem regressiva mostra %typewriter_textdisplaydialogue_timer% do jeito que está. Sem o PlaceholderAPI, o placeholder só é substituído nos diálogos de opções, e apenas quando timer é maior que zero. Instale o PlaceholderAPI para usá-lo em um diálogo falado ou em outro lugar.
O jogador reclama que o inventário está bloqueado. Enquanto um diálogo é exibido, abrir um inventário, clicar nele, soltar itens e trocar de mão são cancelados. É proposital e termina com o diálogo.
Extensões relacionadas
- BetterModel — NPCs com modelos animados que podem ser o falante de um diálogo flutuante.