🇩🇪 Deutsch (German)
🇩🇪 Deutsch (German)
Erscheinungsbild
🇩🇪 Deutsch (German)
🇩🇪 Deutsch (German)
Erscheinungsbild
This page is written for:
1.21
This page is written for:
1.21
Wann immer Minecraft Text im Spiel anzeigt, wird dieser wahrscheinlich mit einem Text
-Objekt definiert. Dieser benutzerdefinierte Typ wird anstelle eines String
verwendet, um eine erweiterte Formatierung zu ermöglichen, einschließlich Farben, Fettdruck, Verschleierung und Klickereignisse. Sie ermöglichen auch einen einfachen Zugriff auf das Übersetzungssystem, so dass beliebige Elemente der Benutzeroberfläche problemlos in verschiedene Sprachen übersetzt werden können.
Wenn du schon einmal mit Datapacks oder Funktionen gearbeitet hast, siehst du vielleicht Parallelen zum JSON-Textformat, das unter anderem für Displaynamen, Bücher und Schilder verwendet wird. Wie du vermutlich denken kannst, handelt es sich dabei um eine Json-Darstellung eines Text
-Objekts, welche mit Hilfe eines Text.Serializer
umgewandelt werden kann.
Bei der Erstellung eines Mods ist es im Allgemeinen vorzuziehen, die Text
-Objekte direkt im Code zu konstruieren und dabei nach Möglichkeit Übersetzungen zu verwenden.
Der einfachste Weg, ein Text
-Objekt zu erzeugen, ist die Erstellung eines Literals. Dies ist nur eine Zeichenkette, die standardmäßig ohne Formatierung angezeigt wird.
Diese werden mit den Methoden Text.of
oder Text.literal
erstellt, die beide leicht unterschiedlich funktionieren. Text.of
akzeptiert null als Eingabe, und wird eine Text
Instanz zurückgeben. Im Gegensatz dazu sollte Text.literal
keine Nulleingabe erhalten, sondern einen MutableText
zurückgeben, der eine Unterklasse von Text
ist, die leicht gestylt und verkettet werden kann. Mehr darüber später.
Text literal = Text.of("Hello, world!");
MutableText mutable = Text.literal("Hello, world!");
// Keep in mind that a MutableText can be used as a Text, making this valid:
Text mutableAsText = mutable;
Wenn du mehrere Übersetzungen für dieselbe Textzeichenfolge bereitstellen willst, kannst du die Methode Text.translatable
verwenden, um auf einen Übersetzungsschlüssel in einer beliebigen Sprachdatei zu verweisen. Wenn der Schlüssel nicht existiert, wird der Übersetzungsschlüssel in ein Literal umgewandelt.
Text translatable = Text.translatable("my_mod.text.hello");
// Similarly to literals, translatable text can be easily made mutable.
MutableText mutable = Text.translatable("my_mod.text.bye");
Die Sprachdatei en_us.json
sieht wie folgt aus:
{
"my_mod.text.hello": "Hello!",
"my_mod.text.bye": "Goodbye :("
}
Wie bereits erwähnt, kann Text mit dem Text Codec in JSON serialisiert werden. Weitere Informationen über Codecs findest du auf der Seite Codec.
Gson gson = new Gson();
MutableText mutable = Text.translatable("my_mod.text.bye");
String json = gson.toJson(TextCodecs.CODEC.encodeStart(JsonOps.INSTANCE, mutable).getOrThrow());
Dadurch wird JSON erzeugt, das in Datenpaketen, Befehlen und an anderen Stellen verwendet werden kann, die das JSON-Format von Text anstelle von literalen oder übersetzbarem Text akzeptieren.
Um ein JSON-Textobjekt in eine tatsächliche Text
-Klasse zu deserialisieren, ist ebenfalls der Codec zu verwenden.
String jsonString = "...";
Text deserialized = TextCodecs.CODEC
.decode(JsonOps.INSTANCE, gson.fromJson(jsonString, JsonElement.class))
.getOrThrow()
.getFirst();
Du bist vielleicht mit den Formatierungsstandards von Minecraft vertraut:
Du kannst diese Formatierungen mit Hilfe des Enum Formatting
auf die Klasse MutableText
anwenden:
MutableText result = Text.literal("Hello World!")
.formatted(Formatting.AQUA, Formatting.BOLD, Formatting.UNDERLINE);
Farbe | Name | Chat Code | MOTD Code | Hec Code |
---|---|---|---|---|
Schwarz (black) | §0 | \u00A70 | #000000 | |
Dunkelblau (dark_blue) | §1 | \u00A71 | #0000AA | |
Dunkengrün (dark_green) | §2 | \u00A72 | #00AA00 | |
Dunkles Aquamarin (dark_aqua) | §3 | \u00A73 | #00AAAA | |
Dunkelrot (dark_red) | §4 | \u00A74 | #AA0000 | |
Dunkelviolett (dark_purple) | §5 | \u00A75 | #AA00AA | |
Gold (gold) | §6 | \u00A76 | #FFAA00 | |
Grau (gray) | §7 | \u00A77 | #AAAAAA | |
Dunkelgrau (dark_gray) | §8 | \u00A78 | #555555 | |
Blau (blue) | §9 | \u00A79 | #5555FF | |
Grün (green) | §a | \u00A7a | #55FF55 | |
Aquamarin (aqua) | §b | \u00A7b | #55FFFF | |
Rot (red) | §c | \u00A7c | #FF5555 | |
Hellviolett (light_purple) | §d | \u00A7d | #FF55FF | |
Gelb (yellow) | §e | \u00A7e | #FFFF55 | |
Weiß (white) | §f | \u00A7f | #FFFFFF | |
Zurücksetzen | §r | |||
Fett | §l | |||
§m | ||||
Unterstrichen | §n | |||
Kursiv | §o | |||
Verschleiert | §k |