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.