Tworzenie Tekstu
Text API jest używane do tworzenia uformatowanego tekstu, który może zostać wysłany do graczy jako wiadomość na czacie lub zostać użyty w książkach lub na tabliczkach.
Niesformatowany tekst
Przeważnie, wszystko czego potrzebujesz to nie niesformatowany tekst. Niesformatowany tekst nie wymaga użycia „text buildera” i jest najłatwiejszą formą tekstu do stworzenia.
Przykład:
import org.spongepowered.api.text.Text;
Text unformattedText = Text.of("Hey! This is unformatted text!");
Fragmnet kodu zaprezentowany powyżej zwróci niepokolorwany i niesforamtowany tekst bez skonfigurowanych text actions.
Text Builder
Interfejs „text builder” pozwala na tworzenie sformatowanego tekstu w stylu „building-block”.
Wskazówka
Dla lepsze zrozumienia czym jest wzorzec projektowy „Builder pattern” przeczytaj artykuł na Wikipedii <https://en.wikipedia.org/wiki/Builder_pattern>.
Kolory
Jednym z możliwych użyć text buildera jest dodawanie kolorów do tekstu, jak przedstawiono to niżej.
Przykład: Kolorowy tekst
import org.spongepowered.api.text.format.TextColors;
Text coloredText = Text.builder("Woot! Golden text is golden.").color(TextColors.GOLD).build();
Każdy wymieniony kolor w klasie TextColors może być użyty podczas kolorowania tekstu. Wiele kolorów może zostać użytych w jednym tekście poprzez dodawanie kolejnych tekstów z różnymi kolorami:
Przykład: Tekst z kilkoma kolorami
Text multiColoredText = Text.builder("Sponges are ").color(TextColors.YELLOW).append(
Text.builder("invincible!").color(TextColors.RED).build()).build();
Styl
Text Builder może zostać użyty również do stylowania tekstu, włączając w to podkreślanie, kursywę, itp.
Przykład: Stylowy tekst
import org.spongepowered.api.text.format.TextStyles;
Text styledText = Text.builder("Yay! Styled text!").style(TextStyles.ITALIC).build();
Tak jak w przypadku kolorów, wielostylowy tekst może być również utworzony poprzez dodawanie do siebie kolejno utworzonych tekstów posiadających własny styl.
Przykład: Wielostylowy tekst
Text multiStyledText = Text.builder("I'm italicized! ").style(TextStyles.ITALIC)
.append(Text.builder("I'm bold!").style(TextStyles.BOLD).build()).build();
Kolorowanie i Stylowanie - Skrót
Metoda Text#of(Object…) pozwala w szybki sposób dodać kolor i stylowanie do tekstu.
Przykład: Skrót koloru i stylu
Text colorAndStyleText = Text.of(TextColors.RED, TextStyles.ITALIC, "Shortcuts for the win!");
Działania na tekście
Text builder oferuje również możliwość tworzenia akcji do tekstów. Każda akcja znajdująca się w klasie TextActions może zostać użyta podczas tworzenia akcji do tekstu. Metoda poniżej jest małym przykładem pokazującym co możemy zrobić przy pomocy «TextActions» .
Przykład: Tekst z Akcją
import org.spongepowered.api.text.action.TextActions;
Text clickableText = Text.builder("Click here!").onClick(TextActions.runCommand("tell Spongesquad I'm ready!")).build();
W powyższej metodzie, gracz może nacisnąć na text „Click here!” aby uruchomić jakąś funkcje.
Informacja
Niektóre akcje tekstowe, takie jak TextActions#changePage(int), mogą zostać użyte jedynie podczas pracy z tekstem znajdującym się w książkach.
Wskazówka
Tak jak w przypadku kolorów, wiele akcji może zostać przypisanych do textu. Akcje tekstów mogą być nawet użyte w połączeniu z kolorami dzięki interfejsowi wzorca „Builder Pattern”.
Selektory
Target selectors are used to target players or entities that meet a specific criteria. Target selectors are particularly useful when creating minigame plugins, but have a broad range of applications.
Wskazówka
Read this Minecraft wiki article for help understanding what target selectors are in Minecraft, and how to use them.
To use selectors in text, you must use the Selector.Builder interface. This is illustrated in the example below.
Przykład: Tekst wygenerowany przez selektor
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();
In this example, the target selector @a[m=2]
is targeting every online player who is in adventure mode. When the
method is called, a Text will be returned containing the usernames of every online player who is in adventure mode.