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.