Tworzenie Tekstu

Sformatowany tekst można utworzyć za pomocą fabryk Component zgodnie z opisem w tej sekcji. Solidne tekstowe API może być używane na różne sposoby do łączenia stylizacji, kolorów i akcji.

Niesformatowany tekst

Zazwyczaj, jedyne czego potrzebujesz to niesformatowany tekst. Niesformatowany tekst jest najprostszą formą tekstu do utworzenia.

Przykład:

import net.kyori.adventure.text.Component;

Component unformattedText = Component.text("Hey! This is unformatted text!");

Fragmnet kodu zaprezentowany powyżej zwróci niepokolorwany i niesforamtowany tekst bez skonfigurowanych text actions.

Sformatowany Tekst

Interfejs Component pozwala na tworzenie sformatowanego tekstu w stylu „building-block”. Komponenty w Adventure działają jak buildery, gdzie każdy komponent może być zmieniony kolorami, dekoracjami itp. Komponenty są niemutowalne, więc używając builder-owych metod będzie za każdym razem tworzyć ich kopię. Nie ma potrzeby używania .build() na końcu, jak było to konieczne w poprzednim tekstowym API Sponge z wersji API 7 i wcześniejszych.

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 użyć tekstowego API jest dodawanie kolorów do tekstu, jak przedstawiono poniżej.

Przykład: Kolorowy tekst

import net.kyori.adventure.text.format.NamedTextColor;

Component coloredText = Component.text("Woot! Golden text is golden.", NamedTextColor.GOLD);

Każdy Minecraft-owy kolor wymieniony wewnątrz klasy NamedTextColor może zostać użyty podczas kolorowania tekstu, jak również pełne kolory RGB używając TextColor. W tekście może być użytych wiele kolorów poprzez dodawanie kolejnych tekstów z różnymi kolorami.

Przykład: Tekst z kilkoma kolorami

import net.kyori.adventure.text.format.TextColor;

Component multiColoredText = Component.text("Sponges are ", NamedTextColor.YELLOW).append(
        Component.text("invincible!", TextColor.color(0x5fb0ff)));

Styl

API może być również użyte do stylowania tekstu, w tym podkreślania, dodawania kursywy, itp. W bibliotece Adventure nazywa się to „dekorowaniem”.

Przykład: Stylowy tekst

import net.kyori.adventure.text.format.TextDecoration;

Component styledText = Component.text("Yay! Styled text!").decorate(TextDecoration.ITALIC);
Component shortcutText = Component.text("Shortcut for both!", NamedTextColor.GRAY, TextDecoration.UNDERLINE);

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

Component multiStyledText = Component.text("I'm italicized! ").decorate(TextDecoration.ITALIC)
        .append(Component.text("I'm bold!").decorate(TextDecoration.BOLD));

Wydarzenia Tekstowe

Komponenty dają również możliwość tworzenia akcji dla tekstu. Każda akcja wewnątrz klas HoverEvent lub ClickEvent może być użyta podczas tworzenia akcji dla tekstu. Sponge dostarcza dodatkowe akcje w SpongeComponents. Metoda poniżej to mały przykład co potarfią akcje.

Przykład: Tekst z Eventem

import net.kyori.adventure.text.event.ClickEvent;

Component clickableText = Component.text("Click here!")
    .clickEvent(ClickEvent.runCommand("tell Spongesquad I'm ready!"));

Component callbackText = Component.text("Click here too!")
    .clickEvent(SpongeComponents.executeCallback(
        cause -> cause.audience().sendMessage(Component.text("You clicked!"))));

W powyższej metodzie, gracz może nacisnąć na text „Click here!” aby uruchomić jakąś funkcje.

Informacja

Niektóre akcje tekstowe, takie jak ClickEvent#changePage(int), mogą być użyte tylko z książkami.

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.

Do używania selektorów w tekście istnieje fabryka komponentów dla Selektorów. Jest to przedstawione w poniższym przykładzie.

Przykład: Tekst wygenerowany przez selektor

Component adventurers = Component.text("These players are in adventure mode: ")
        .append(Component.selector("@a[m=2]"));

W tym przykładzie, selektor celu @a[m=2] celuje w każdego obecnie połączonego gracza, który ma tryb przygodowy. Kiedy metoda jest wywołana, zostanie zwrócony Component z listą nazw graczy będących obecnie online i mających tryb przygodowy. Aby wysłać ten selektor do graczy, musi on być rozszerzony o prawdziwe nazwy graczy używając SpongeComponents#resolve.

Text Buildery

Mutowalne klasy builder-ów istnieją dla każdego typu Component. Są one dostępne, jeśli potrzebowałbyś mutowalnej reprezentacji i mogą być również wykorzystane w kilku przydatnych metodach w bibliotece w celu wystawienia części komponentu do edycji.

Przykład: Text Component builder

Component weBuiltThisText = Component.text()
        .content("with Sponge and Flard")
        .color(NamedTextColor.YELLOW)
        .decorate(TextDecoration.ITALIC, TextDecoration.BOLD)
        .build()

Przykład: Edytowanie tekstu StyleBuilder-em

Component limitedEdition = weBuiltThisText.style(
        styleBuilder -> styleBuilder.decorate(TextDecoration.UNDERLINE));