Создание текста

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), могут использоваться только в книге.

Совет

Так же, как с цветом, в тексте можно добавить несколько действий. Действия могут быть использованы вместе с цветом.

Селекторы

Селекторы используются, чтобы указать сущностей (в том числе и игроков), которые отвечают определённым условиям. Селекторы особенно полезны при создании плагинов для мини-игр, но имеют широкий спектр применения.

Совет

Прочитайте `эту статью<http://minecraft-ru.gamepedia.com/Команды_консоли#.D0.A1.D0.B5.D0.BB.D0.B5.D0.BA.D1.82.D0.BE.D1.80.D1.8B>`__, чтобы понять, что такое селекторы и как их использовать.

Чтобы использовать селекторы в тексте, вы должны применить интерфейс 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, содержащий имена всех игроков в сети находящихся в приключенческом режиме.