Guides / Commands & Data

Текст JSON для /tellraw: clickEvent, hoverEvent и почему ваше сообщение не отображается

Одна неверная скобка приводит к молчаливому сбою tellraw. Вот структура компонента, действия click и hover, которые действительно работают в чате, и правило экранирования, которое часто упускают из виду.

/tellraw принимает текстовый компонент JSON, и режим отказа бесполезен: некорректно сформированный компонент не выдаёт ни сообщения, ни ошибки. Всё нижеизложенное посвящено тому, как правильно задать форму с первого раза.

Три допустимые формы

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

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

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

Действия по клику

clickEvent принимает действие и значение:

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

run_command — это действие с ловушкой: оно выполняется с разрешениями нажимающего Игрока, а не Командного блока. Меню, которое вызывает /gamemode creative, ничего не делает для обычного Игрока.

Действия при наведении

"hoverEvent":{"action":"show_text","contents":["Click to teleport"]}

show_text, show_item и show_entity. Обратите внимание на contents — в старых руководствах используется value, который был заменён и теперь молчаливо завершается сбоем. Это единственное переименование объясняет множество неработающих всплывающих подсказок, скопированных из учебников.

Экранирование — вот где всё ломается

Весь компонент является одним аргументом команды, поэтому кавычки внутри должны пройти через парсер команд. В Командном блоке введите его напрямую. В файле функции экранирование обратной косой чертой не требуется. В /give Завершённой книге JSON является строкой внутри строки и действительно нуждается в экранировании — это тот случай, который генерирует нечитаемые стены \".

Практическое правило: если вы вкладываете текстовые компоненты в компонент предмета, создавайте его с помощью инструмента, а не вручную.

Селекторы внутри текста

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

разрешается в имена Игроков во время отправки. {"score":{"name":"@s","objective":"Kills"}} извлекает значение таблицы результатов. Оба варианта лучше, чем попытки самостоятельно объединять значения.

Ключи перевода работают на разных языках

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

отображается на родном языке каждого Игрока — 제작대 для корейского клиента, 作業台 для японского. Для многоязычного сервера это строго лучше, чем жёсткое кодирование английского языка.

Создайте компонент визуально, с текущими действиями клика и наведения, в Text & Display Command Builder.

Конструктор команд текста и отображения →

More guides

Browse all →

Нужны другие инструменты для Minecraft?

Набор генераторов, просмотрщиков и конвертеров прямо в браузере — всё бесплатно.