Testo JSON per /tellraw: clickEvent, hoverEvent e perché il tuo messaggio non mostra nulla
Basta una singola parentesi errata per far fallire tellraw silenziosamente. Ecco la struttura del componente, le azioni di clic e passaggio del mouse che funzionano davvero in chat e la regola di escape che molti dimenticano.
/tellraw takes a JSON text component, and the failure mode is unhelpful: a malformed component produces nessun messaggio e nessun errore. Tutto ciò che segue serve a ottenere la struttura corretta al primo colpo.
Le tre forme valide
"plain string"
{"text":"one component"}
["joined ",{"text":"list","color":"gold"}]
La forma a elenco è quella da usare per qualsiasi cosa interessante, poiché ogni elemento può avere la propria formattazione. La formattazione del primo elemento viene ereditata dal resto a meno che non venga sovrascritta — motivo per cui spesso l'intero messaggio diventa inaspettatamente dorato. Inizia un elenco con una stringa vuota per evitarlo:
/tellraw @a ["",{"text":"Warning: ","color":"red"},{"text":"low health"}]
Azioni al clic
clickEvent takes an action and a value:
| Azione | Valore | Note |
|---|---|---|
run_command | /spawn | Esegue come il giocatore, con il suo livello di permessi |
suggest_command | /msg Steve | Riempie la barra della chat, senza inviare |
open_url | https://… | Chiede conferma prima di aprire |
copy_to_clipboard | qualsiasi testo | Il più pratico per condividere le coordinate |
change_page | numero di pagina | Solo libri |
run_command is the one with a trap: it executes with del giocatore che clicca permessi, non di quelli del blocco comandi. Un menu che richiama /gamemode creative does nothing for a normal player.
Azioni al passaggio del mouse
"hoverEvent":{"action":"show_text","contents":["Click to teleport"]}
show_text, show_item and show_entity. Note contents — older guides use value, which was replaced and now fails silently. That single rename accounts for a lot of dead hover tooltips copied from tutorials.
I problemi nascono con l'escape
L'intero componente è un unico argomento del comando, quindi le virgolette interne devono superare il parser del comando. In un blocco comandi, digitalo direttamente. In un file di funzione, l'escape con backslash non è necessario. In un /give written book, the JSON is a string inside a string and è invece necessario l'escape — questo è il caso che genera muri illeggibili di \".
Regola empirica: se stai annidando componenti di testo all'interno di un componente di un oggetto, crealo con uno strumento anziché a mano.
Selettori nel testo
{"selector":"@p","separator":{"text":", "}}
si risolve nei nomi dei giocatori al momento dell'invio. {"score":{"name":"@s","objective":"Kills"}} pulls a scoreboard value. Both beat trying to concatenate values yourself.
Le chiavi di traduzione funzionano tra le lingue
{"translate":"block.minecraft.crafting_table"}
viene visualizzato nella lingua di ciascun giocatore — 제작대 per un client coreano, 作業台 per uno giapponese. Per un server multilingue questo è decisamente migliore rispetto a inserire l'inglese come testo fisso.
Crea visivamente il componente, con le azioni di clic e passaggio del mouse nella loro forma attuale, nel Generatore di comandi Testo e Display.