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

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

Both formatting schemes use the codes found at the Minecraft Wiki. It is important to note that the Minecraft Wiki only displays the use of the section character (§), but the same codes work with the ampersand (&) as well.

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

При сериализации текста с использованием кода форматирования, 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 в качестве единственного аргумента.