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

Text can be represented by using a special character indicating a formatting of some kind followed by a unique character indicating the specific formatting to be used. In SpongeAPI, there are two different characters that are supported by default: the ampersand (&) and the section character (§).

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

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

Text serialization using any kind of formatting code is limited to representing only some of the capabilities of a Text, namely formatting. It cannot represent any kind of click or hover actions. If brevity is not an issue (as it is in Minecraft chat), it is recommended to use the Формат 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 в качестве единственного аргумента.