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));