Formatierungs-Codes & Legacy-Formatierung

Text kann durch die Verwendung von speziellen Zeichen, die irgendeine Art von Formatierung markieren, und gefolgt von einem einzigartigen Zeichen, dass die Art der Formatierung angibt, dargestellt werden. In der SpongeAPI gibt es zwei verschiedene Zeichen die Standardmäßig unterstützt werden: Das Und-Zeichen (&) und das Paragraph-Zeichen (§).

Beide Formatierungszeichen verwenden die Formatierungscodes, die im Minecraft Wiki <http://minecraft.gamepedia.com/Formatting_codes> beschrieben werden. Es ist wichtig anzumerken, dass das Minecraft Wiki nur die Verwendung des Paragraph-Zeichens (§) zeigt, aber die gleichen Codes funktionieren auch mit dem Und-Zeichen (&).

Warnung

Die Text-Serialisierung durch die Verwendung von Formatierungs-Zeichen beschränkt die Funktionen von Text-Objekten auf Formatierungen. Es kann keine Art von Klick- oder Hover-Aktionen darstellen. Wenn die Kürze nicht relevant ist (wie sie es im Minecraft Chat ist), wird die Verwendung von TextXML Format oder JSON Format empfohlen.

Formatierung mit dem Und-Zeichen

Standardmäßig unterstützt Sponge das Formatierungs-Zeichen & (Und-Zeichen). Die Verwendung des Und-Zeichens ermöglicht die schnellere Eingabe von Text-Formatierung und ist in praktisch, wenn man sich kurz fassen muss wie es in Minecraft’s Chat-Fenster der Fall ist.

Um diese Formatierung zu verwenden, musst du den dazugehörigen TextSerializer in TextSerializers#FORMATTING_CODE benutzen. Auf diesem kannst du dann wie gewohnt die serialize bzw.``deserialize`` Methode verwenden:

import org.spongepowered.api.text.Text;
import org.spongepowered.api.text.format.TextColors;
import org.spongepowered.api.text.format.TextStyles;
import org.spongepowered.api.text.serializer.TextSerializers;

Text text = Text.of(TextColors.RED, TextStyles.UNDERLINE, "Hello World!");
String ampersandFormattedText = TextSerializers.FORMATTING_CODE.serialize(text);

Zum Beispiel der unterstrichene und rot formatierte Text „Hello World!“ hätte mit dem Und-Zeichen Formatierungs-Code die folgende Darstellung: &c&nHello World!

Legacy-Formatierung

Die Legacy Textdarstellung ist das Format war besonders in älteren Versionen von Minecraft weit verbreitet. Es wird mit dem Paragraph-Zeichen (§) dargestellt. Sponge bietet die Serialisierungs- und Deserialisierungsunterstützung für das Legacy Format nur aus Kompatibilitätsgründen an. Falls möglich sollte es aber nicht verwenden werden, es sei denn es ist unbedingt nötig. Im Gegenteil, es wird empfohlen die Formatierung über das Und-Zeichen (&) wie oben beschrieben zu verwenden. Die Legacy-Formattierung hat ein paar Beschränkungen, die die Und-Zeichen Variante nicht hat. Die offensichtlichste davon ist, dass Benutzer nicht so einfach das Paragraph Zeichen in den Chat eingeben können.

Um diese Formatierung zu verwenden, musst du den dazugehörigen TextSerializer in TextSerializers#LEGACY_FORMATTING_CODE benutzen. Auf diesem kannst du dann wie gewohnt die serialize bzw.``deserialize`` Methode verwenden:

Text text = Text.of(TextColors.RED, TextStyles.UNDERLINE, "Hello World!");
String legacyText = TextSerializers.LEGACY_FORMATTING_CODE.serialize(text);

Zum Beispiel der unterstrichene und rot formatierte Text „Hello World!“ hätte mit dem Legacy Formatierungs-Code die folgende Darstellung: §c§nHello World!

Tipp

Auch wenn es nicht empfohlen wird, so kannst du dennoch einen FormattingCodeTextSerializer mit einem von dir frei wählbaren Formatierungssymbol erstellen, indem du die TextSerializers#formattingCode(char) Methode mit deinem char (Zeichen) als Parameter aufrufst.