Создание текста
Text API используется для создания форматированного текста, который может быть отправлен игрокам в чат, а также может использоваться в таких местах, как книги и таблички.
Неформатированный текст
Зачастую, все что вам нужно — это неформатированный текст. Неформатированный текст не требует использования текст билдера и является самой простой формой для создания текста.
Пример:
import org.spongepowered.api.text.Text;
Text unformattedText = Text.of("Hey! This is unformatted text!");
Вышеприведенный код вернет неокрашенный, неформатированный текст без действий.
Text Builder
Text builder позволяет создавать форматированный текст в виде «строительных блоков».
Совет
Прочтите эту вики-статью для справки, и понимания работы шаблонного проектирования в разработке программного обеспечения.
Цвета
Одним из способов применения Text Builder - это применение цвета к тексту, как показано ниже.
Пример: Цветной текст
import org.spongepowered.api.text.format.TextColors;
Text coloredText = Text.builder("Woot! Golden text is golden.").color(TextColors.GOLD).build();
Любой цвет, указанный в классе TextColors, может использоваться при раскраске текста. Добавляя дополнительные тексты разного цвета, можно использовать в тексте несколько цветов:
Пример: Разноцветный текст
Text multiColoredText = Text.builder("Sponges are ").color(TextColors.YELLOW).append(
Text.builder("invincible!").color(TextColors.RED).build()).build();
Стилизация
Builder также может использоваться для стилизации текста, включая подчеркивание, выделение курсивом и т.д.
Пример: Стилизованный текст
import org.spongepowered.api.text.format.TextStyles;
Text styledText = Text.builder("Yay! Styled text!").style(TextStyles.ITALIC).build();
Так же, как и с цветами, можно использовать несколько стилей, путем объединения отдельно стилизованные тексты.
Пример: Много-стилизованный текст
Text multiStyledText = Text.builder("I'm italicized! ").style(TextStyles.ITALIC)
.append(Text.builder("I'm bold!").style(TextStyles.BOLD).build()).build();
Сокращение цветов и стилей
Метод Text#of(Object…) представляет собой простой способ добавить цвет и стиль в текст гораздо более сжатым способом.
Пример: Сокращение Цветов и Стилей
Text colorAndStyleText = Text.of(TextColors.RED, TextStyles.ITALIC, "Shortcuts for the win!");
Текстовые действия
Text Builder также предлагает возможность создания действий для текста. Любое действие, указанное в классе TextActions, может использоваться при создании текстовых действий для текста. Нижеприведенный метод является небольшим примером того, что могут делать текстовые действия.
Пример: Текст с действием
import org.spongepowered.api.text.action.TextActions;
Text clickableText = Text.builder("Click here!").onClick(TextActions.runCommand("tell Spongesquad I'm ready!")).build();
В этом примере игроки могут нажать на текст «Click here!» для выполнения назначенной команды.
Примечание
Некоторые действия, такие как TextActions#changePage(int), могут использоваться только в книге.
Совет
Так же, как с цветом, в тексте можно добавить несколько действий. Действия могут быть использованы вместе с цветом.
Селекторы
Селекторы используются, чтобы указать сущностей (в том числе и игроков), которые отвечают определённым условиям. Селекторы особенно полезны при создании плагинов для мини-игр, но имеют широкий спектр применения.
Совет
Прочитайте вики-статью, чтобы понять, что такое селекторы и как их использовать.
Чтобы использовать селекторы в тексте, вы должны применить интерфейс Selector.Builder. Это показано в примере ниже.
Пример: Текст с селектором
import org.spongepowered.api.text.selector.Selector;
Text adventurers = Text.builder("These players are in adventure mode: ").append(
Text.of(Selector.parse("@a[m=2]"))
).build();
В этом примере селектор @a[m=2]
указывает на всех игроков в сети, имеющих приключенческий режим игры. При вызове метода будет возвращён Text, содержащий имена всех игроков в сети находящихся в приключенческом режиме.