/tellraw JSON-tekst: clickEvent, hoverEvent en waarom je bericht niets toont
Eén verkeerd haakje zorgt ervoor dat tellraw geruisloos faalt. Hier is de componentstructuur, de klik- en hoveracties die daadwerkelijk werken in chat, en de escape-regel die mensen over het hoofd zien.
/tellraw takes a JSON text component, and the failure mode is unhelpful: a malformed component produces geen bericht en geen foutmelding. Alles hieronder gaat over het meteen goed krijgen van de structuur.
De drie geldige vormen
"plain string"
{"text":"one component"}
["joined ",{"text":"list","color":"gold"}]
De lijstvorm is degene die je gebruikt voor alles wat interessant is, omdat elk element zijn eigen opmaak kan bevatten. De opmaak van het eerste element wordt overgenomen door de rest tenzij ze deze overschrijven — daarom kleurt een heel bericht soms onverwacht goud. Begin een lijst met een lege string om dat te voorkomen:
/tellraw @a ["",{"text":"Warning: ","color":"red"},{"text":"low health"}]
Klikacties
clickEvent takes an action and a value:
| Actie | Waarde | Opmerking |
|---|---|---|
run_command | /spawn | Voert uit als de speler, op hun machtigingsniveau |
suggest_command | /msg Steve | Vult het chatvak, verzendt niet |
open_url | https://… | Vraagt om bevestiging voor het openen |
copy_to_clipboard | elke tekst | De handigste manier om coördinaten te delen |
change_page | paginanummer | Alleen boeken |
run_command is the one with a trap: it executes with van de klikkende speler machtigingen, niet die van het opdrachtblok. Een menu dat /gamemode creative does nothing for a normal player.
Hoveracties
"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.
Escapen is waar het misgaat
Het hele component is één opdrachtargument, dus aanhalingstekens erin moeten de commando-parser overleven. Typ het in een opdrachtblok rechtstreeks. In een functiebestand, is backslash-escaping niet nodig. In een /give written book, the JSON is a string inside a string and is wel escaping nodig — dat is het geval dat onleesbare muren genereert van \".
Vuistregel: als je tekstcomponenten nest in een itemcomponent, bouw het dan met een tool in plaats van met de hand.
Selectors in tekst
{"selector":"@p","separator":{"text":", "}}
wordt tijdens het verzenden omgezet naar spelersnamen. {"score":{"name":"@s","objective":"Kills"}} pulls a scoreboard value. Both beat trying to concatenate values yourself.
Vertaalsleutels werken in alle talen
{"translate":"block.minecraft.crafting_table"}
wordt weergegeven in de eigen taal van elke speler — 제작대 voor een Koreaanse client, 作業台 voor een Japanse. Voor een meertalige server is dit absoluut beter dan Engels hardcoden.
Bouw het component visueel, met de klik- en hoveracties in hun huidige vorm, in de Text & Display Command Builder.