MC Toolkit

Руководства / Команды и данные

Один и тот же красный текст ломается на Java и Bedrock

Цветовой код, который идеально отображается в одном плагине, в следующем превращается в буквальные амперсанды. Причина — формат, а не плагин.

Код § и тег MiniMessage могут описывать один и тот же цвет, и всё равно один и тот же сервер их отвергнет. Цветной текст на сервере — это не один формат, а как минимум пять, и плагины расходятся во мнениях, какие из них они принимают.

Пять диалектов

ДиалектКак выглядитГде выживает
Legacy section§cHelloВанильный чат, старые плагины
Ampersand legacy&cHelloФайлы конфигурации, многие плагины
BungeeCord hex&x&f&f&0&0&0&0Плагины прокси, некоторый чат
MiniMessage<red>Hello</red>Современные плагины Paper
JSON component{"text":"Hello","color":"red"}Ванильные команды, /tellraw

Форма с амперсандом вообще не является цветовым кодом, пока что-нибудь его не преобразует. Вставьте &c в плагин, который ожидает MiniMessage, — и игроки прочитают буквальные символы.

В legacy-кодах заканчиваются цвета

Система со знаком параграфа несёт фиксированный набор букв цвета плюс переключатели форматирования. Выразить в ней произвольный цвет невозможно. Hex появился позже, и форма BungeeCord кодирует его по одному символу за раз — &x, за которым следуют шесть hex-цифр с префиксом &, вот почему это выглядит так длинно.

MiniMessage принимает #ff0000 напрямую. JSON принимает тот же hex как строковое значение.

Java и Bedrock не сходятся

Bedrock тоже использует знак параграфа, но его набор цветов и обработка сбросов форматирования отличаются от Java. Строка, которая корректно отображается на сервере Java, может показывать лишние символы у клиентов Bedrock, а прокси для кросс-плея часто переводят между этими двумя форматами, а не передают текст как есть. Если ваш сервер принимает игроков Bedrock, проверяйте вывод на обеих платформах.

Ловушка вложенности

Legacy-коды хранят состояние: цветовой код сбрасывает форматирование, поэтому §c§lBold — это красный и жирный, а §l§cBold — только красный: цветовой код после жирного сбрасывает его. Сначала цвет, потом форматирование. MiniMessage — это дерево: <red><bold>text</bold></red> закрывается чисто. Преобразование вложенной строки MiniMessage в legacy-коды теряет структуру, потому что в legacy нет закрывающего тега.

Экранирование

MiniMessage воспринимает < как синтаксис. Игрок с ником <Steve> ломает любой плагин, который разбирает его имя как компонент. У legacy-форматов та же проблема с &, поэтому многие плагины требуют && или флага в конфигурации для его экранирования.

Напишите текст один раз, выберите диалект, который ваш плагин действительно разбирает, и скопируйте точную строку из Server Text Studio.

Студия серверного текста →

Другие руководства

Смотреть все →