The Best Resource for Minecraft
The Best Resource for Minecraft

/tellraw JSON-текст: clickEvent, hoverEvent та чому ваше повідомлення нічого не показує

/tellraw JSON-текст: clickEvent, hoverEvent та чому ваше повідомлення нічого не показує

Лише одна неправильна дужка призводить до мовчазного збою tellraw. Ось структура компонента, дії натискання та наведення, які дійсно працюють у чаті, та правило екранування, яке часто забувають.

/tellraw takes a JSON text component, and the failure mode is unhelpful: a malformed component produces жодного повідомлення та жодної помилки. Усе нижче допоможе скласти правильну структуру з першого разу.

Три дійсні структури

"plain string"
{"text":"one component"}
["joined ",{"text":"list","color":"gold"}]

Форма списку — це те, що слід використовувати для чогось цікавого, оскільки кожен елемент може мати власне форматування. Форматування першого елемента успадковується рештою якщо вони його не перевизначають — саме тому все повідомлення може несподівано стати золотим. Почніть список із порожнього рядка, щоб уникнути цього:

/tellraw @a ["",{"text":"Warning: ","color":"red"},{"text":"low health"}]

Дії натискання

clickEvent takes an action and a value:

ДіяЗначенняПримітка
run_command/spawnВиконує від імені гравця, з його рівнем дозволів
suggest_command/msg Steve Заповнює поле чату, не надсилає
open_urlhttps://…Запитує перед відкриттям
copy_to_clipboardбудь-який текстНайзручніший для ділення координатами
change_pageномер сторінкиТільки для книг

run_command is the one with a trap: it executes with гравця, який натискає, дозволи, а не командного блока. Меню, що викликає /gamemode creative does nothing for a normal player.

Дії наведення

"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.

Екранування — ось де все ламається

Весь компонент є одним аргументом команди, тому лапки всередині мають пережити синтаксичний аналіз команди. У командному блоці вводьте його безпосередньо. У файлі функції, екранування зворотним слешем не потрібне. У /give written book, the JSON is a string inside a string and дійсно потребує екранування — саме це породжує нечитабельні стіни з \".

Корисне правило: якщо ви вкладаєте текстові компоненти всередину компонента предмета, створюйте його за допомогою інструмента, а не вручну.

Селектори всередині тексту

{"selector":"@p","separator":{"text":", "}}

перетворюється на імена гравців під час надсилання. {"score":{"name":"@s","objective":"Kills"}} pulls a scoreboard value. Both beat trying to concatenate values yourself.

Ключі перекладу адаптуються до різних мов

{"translate":"block.minecraft.crafting_table"}

відображається рідною мовою кожного гравця — 제작대 для корейського клієнта, 作業台 для японського. Для багатомовного сервера це значно краще, ніж прописувати англійську вручну.

Створіть компонент візуально з діями натискання та наведення в їхньому поточному вигляді у Конструктор команд тексту та дисплеїв.

Спробувати інструмент: Text & Display Command Builder →