Код форматирования и устаревший формат

В текст может быть добавлен специальный символ, обозначающий форматирование, за которым следует уникальный символ, указывающий конкретное форматирование. В SpongeAPI есть два разных символа, которые поддерживаются по умолчанию: амперсант (&) и символ раздела (§).

Примеры с использованием кода форматирования, можно посмотреть на Minecraft Wiki <https://minecraft.gamepedia.com/Formatting_codes>. Важно отметить, что на Minecraft Wiki отображается только символ раздела (§), но его можно заменить на символ амперсанта (&).

Предупреждение

При сериализации текста с использованием кода форматирования, Text предоставляет ограниченные возможности. Он не может добавить какие-либо действия по нажатию или наведению на текст. Если краткость не является проблемой (как в чате Minecraft), рекомендуется использовать TextXML формат или Формат JSON.

Форматирование амперсантом

По умолчанию Sponge поддерживает символ форматирования & (амперсант). Использование амперсанта позволяет упростить ввод форматированного текста и полезно в таких случаях, когда необходима краткость, например, в консоли Minecraft.

Чтобы использовать данное форматирование, вы можете получить доступ из TextSerializer с помощью TextSerializers#FORMATTING_CODE. Оттуда используйте методы serialize или deserialize:

import org.spongepowered.api.text.Text;
import org.spongepowered.api.text.format.TextColors;
import org.spongepowered.api.text.format.TextStyles;
import org.spongepowered.api.text.serializer.TextSerializers;

Text text = Text.of(TextColors.RED, TextStyles.UNDERLINE, "Hello World!");
String ampersandFormattedText = TextSerializers.FORMATTING_CODE.serialize(text);

Например, текст «Hello World!», красным цветом и с подчеркиванием, выглядит так: &c&nHello World!

Устаревшее форматирование

Устаревшее текстовое представление - это формат, широко используемый в старых версиях Minecraft, представленный символом раздела (§). Sponge обеспечивает сериализацию и десериализацию с использованием устаревшего формата только для совместимости. Он должен использоваться, если это крайне необходимо. Рекомендуется использовать форматирование с амперсантом (&), как описано выше. У устаревшего форматирования есть несколько ограничений, которые нет в форматировании амперсантом (&), причем наиболее очевидным из них является то, что пользователи не могут легко ввести символ раздела (§) в чат.

Чтобы использовать данное форматирование, вы можете получить доступ из TextSerializer с помощью TextSerializers#LEGACY_FORMATTING_CODE. Оттуда используйте мотоды serialize или deserialize:

Text text = Text.of(TextColors.RED, TextStyles.UNDERLINE, "Hello World!");
String legacyText = TextSerializers.LEGACY_FORMATTING_CODE.serialize(text);

Например, текст «Hello World!», красным цветом и с подчеркиванием используя старый формат, выглядит так: §c§nHello World!

Совет

Хотя его использование не рекомендуется, получить его можно в FormattingCodeTextSerializer, используя любой символ форматирования, который вам нужен, вызывая: TextSerializers#formattingCode(char), передавая char в качестве единственного аргумента.