Componentes de texto de /tellraw: click_event, hover_event y por qué tu mensaje no muestra nada
Un solo corchete mal puesto hace que tellraw no envíe nada a sus destinatarios. Aquí tienes la forma del componente, las acciones de clic y hover que realmente funcionan en el chat, y la regla de escape que todos pasan por alto.
/tellraw acepta un componente de texto, y su modo de fallo no ayuda en nada: un componente mal formado no produce ningún mensaje para nadie a quien va dirigido — el único error llega a quien ejecutó el comando, o a la salida de un bloque de comandos, donde nadie está mirando. Todo lo que sigue trata de acertar con la forma a la primera.
Las tres formas válidas
"plain string"
{"text":"one component"}
["joined ",{"text":"list","color":"gold"}]
La forma de lista es la que conviene usar para cualquier cosa interesante, porque cada elemento puede llevar su propio formato. El formato del primer elemento lo heredan los demás salvo que lo sobrescriban — por eso la gente acaba con un mensaje entero en dorado sin esperarlo. Empieza la lista con una cadena vacía para evitarlo:
/tellraw @a ["",{"text":"Warning: ","color":"red"},{"text":"low health"}]
Acciones de clic
click_event acepta una acción más el campo propio de esa acción — no hay un value compartido:
| Acción | Campo | Nota |
|---|---|---|
run_command | command: "/spawn" | Se ejecuta como el jugador, con su nivel de permisos |
suggest_command | command: "/msg Steve " | Rellena la caja de chat, no lo envía |
open_url | url: "https://…" | Pregunta antes de abrir |
copy_to_clipboard | value: "any text" | La más cómoda para compartir coordenadas |
change_page | page: 2 | Solo para libros |
run_command es la que esconde una trampa: se ejecuta con los permisos de el jugador que hace clic, no los del bloque de comandos. Un menú que llama a /gamemode creative no hace nada para un jugador normal.
Acciones de hover
"hover_event":{"action":"show_text","value":["Click to teleport"]}
show_text, show_item y show_entity. Fíjate en los nombres — las guías antiguas usan hoverEvent, clickEvent y contents, que la 1.21.5 sustituyó por hover_event, click_event y, para show_text, value. Ese cambio de nombre explica gran parte de los tooltips de hover muertos copiados de tutoriales.
El escape es donde se rompe
El componente entero es un solo argumento del comando, así que las comillas que haya dentro tienen que sobrevivir al analizador de comandos. En un bloque de comandos, escríbelo directamente. En un archivo de función, no hace falta escapar con barra invertida. En un libro escrito de /give, las páginas también son componentes de texto, escritas como SNBT — sin escape de cadena dentro de cadena desde la 1.21.5, y una página que siga escrita como cadena JSON escapada ahora aparece como texto literal con sus comillas.
Regla práctica: si estás anidando componentes de texto dentro de un componente de objeto, constrúyelo con una herramienta en lugar de a mano.
Selectores dentro del texto
{"selector":"@p","separator":{"text":", "}}
se resuelve a nombres de jugadores en el momento del envío. {"score":{"name":"@s","objective":"Kills"}} extrae un valor de la tabla de puntuaciones. Ambas opciones son mejores que intentar concatenar los valores tú mismo.
Las claves de traducción viajan entre idiomas
{"translate":"block.minecraft.crafting_table"}
se muestra en el idioma de cada jugador — 제작대 para un cliente coreano, 作業台 para uno japonés. Para un servidor multilingüe esto es claramente mejor que dejar el inglés fijo.
Crea y previsualiza comandos de texto y de visualización en el Generador de comandos de texto y visualización.