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
Przeczytaj artykuł na wiki Minecrafta aby lepiej zrozumieć czym są selektory i jak ich używać.
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.