Texto JSON de /tellraw: clickEvent, hoverEvent e por que sua mensagem não aparece
Um único colchete errado faz o tellraw falhar silenciosamente. Aqui está o formato do componente, as ações de clique e de passar o mouse que realmente funcionam no chat, e a regra de escape que as pessoas esquecem.
/tellraw aceita um componente de texto JSON, e o modo de falha não ajuda: um componente malformado produz nenhuma mensagem e nenhum erro. Tudo abaixo é sobre acertar o formato na primeira vez.
Os três formatos válidos
"plain string"
{"text":"one component"}
["joined ",{"text":"list","color":"gold"}]
O formato de lista é o que deve ser usado para qualquer coisa interessante, porque cada elemento pode ter sua própria formatação. A formatação do primeiro elemento é herdada pelo resto, a menos que eles a substituam — é por isso que as pessoas recebem uma mensagem inteira inesperadamente dourada. Comece uma lista com uma Linha vazia para evitar isso:
/tellraw @a ["",{"text":"Warning: ","color":"red"},{"text":"low health"}]
Ações de clique
clickEvent aceita uma ação e um valor:
| Ação | Valor | Observação |
|---|---|---|
run_command | /spawn | Executa como o Jogador, no nível de permissão dele |
suggest_command | /msg Steve | Preenche a caixa de chat, não envia |
open_url | https://… | Solicita antes de abrir |
copy_to_clipboard | qualquer texto | O mais amigável para compartilhar coordenadas |
change_page | número da página | Apenas Livros |
run_command é o que tem uma armadilha: ele executa com as permissões do Jogador que clicou, não as do Bloco de Comando. Um menu que chama /gamemode creative não faz nada para um Jogador normal.
Ações de passar o mouse
"hoverEvent":{"action":"show_text","contents":["Click to teleport"]}
show_text, show_item e show_entity. Observe contents — guias mais antigas usam value, que foi substituído e agora falha silenciosamente. Essa única renomeação é responsável por muitas dicas de ferramentas de passar o mouse que não funcionam, copiadas de tutoriais.
O escape é onde tudo quebra
O componente inteiro é um argumento de comando, então as aspas internas devem sobreviver ao analisador de comandos. Em um Bloco de Comando, digite-o diretamente. Em um arquivo de função, o escape com barra invertida não é necessário. Em um Livro Escrito /give, o JSON é uma Linha dentro de uma Linha e precisa de escape — esse é o caso que gera paredes ilegíveis de \".
Regra geral: se você estiver aninhando componentes de texto dentro de um componente de item, construa-o com uma ferramenta em vez de manualmente.
Seletores dentro do texto
{"selector":"@p","separator":{"text":", "}}
resolve para nomes de Jogadores no momento do envio. {"score":{"name":"@s","objective":"Kills"}} extrai um valor de placar. Ambos são melhores do que tentar concatenar valores você mesmo.
Chaves de tradução viajam entre idiomas
{"translate":"block.minecraft.crafting_table"}
renderiza no idioma de cada Jogador — 제작대 para um cliente coreano, 作業台 para um japonês. Para um servidor multilíngue, isso é estritamente melhor do que codificar o inglês.
Construa o componente visualmente, com as ações de clique e de passar o mouse em sua forma atual, no Construtor de Comandos de Texto e Exibição.