| Vollversion | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1.7 (13w37a) | |||||||||||
| 1.8 |
|
||||||||||
| 1.9 (15w31a) |
|
||||||||||
| 1.12 (17w16a) |
|
||||||||||
| 1.13 |
|
||||||||||
| 1.14 |
|
||||||||||
| 1.15 |
|
||||||||||
| 1.16 (20w17a) |
|
||||||||||
| 1.17 (21w15a) |
|
||||||||||
| 1.19.1 |
|
||||||||||
| 1.19.4 (23w03a) |
|
||||||||||
| 1.20.3 |
|
||||||||||
| 1.21.2 (24w33a) |
|
||||||||||
| 1.21.4 (24w44a) |
|
||||||||||
| 1.21.5 |
|
||||||||||
| 1.21.6 |
|
||||||||||
| 1.21.9 |
|
||||||||||
| 26.1 (26.1-snap-8) |
|
||||||||||
Textkomponenten
click_event-action open_url
Textkomponenten sind ein Text im SNBT-Format. Von Minecraft wird dieses Format verwendet, um Schrift zu formatieren oder ihr besondere Eigenschaften zu geben, z.B. eine Aktion auszuführen, wenn auf die Schrift geklickt wird.
Verwendung
[Bearbeiten | Quelltext bearbeiten]Im Spiel gibt es mehrere Möglichkeiten für die Verwendung solcher Texte:
- Befehl
/tellraw - Befehl
/title - Befehl
/scoreboard - Befehl
/team - Befehl
/bossbar messages-Komponente von Schildern und Hängeschildern.pages- undtitle-Komponente in dem beschriebenen Buch.text-Komponente von Textdarstellern.CustomName-Komponente in Objektdaten, Kreaturdaten und Blockobjektdaten.minecraft:custom_name- undminecraft:lore-Komponente in Gegenstandsdaten.<eigene-textkomponente>in Objekten unterdataund Datenspeichern mit dem Befehl/data.name-Komponente in der Zielauswahl greift auf die Textkomponenteminecraft:custom_name.textzu.- Dialogdefinition
Eigenschaften
[Bearbeiten | Quelltext bearbeiten]Eine Textkomponente kann folgende Eigenschaften haben:
- Formatierungen: einzelne Textteile können unterschiedliche Farben, Textschatten und Schriftformatierungen haben wie z.B. Fettschrift.
- Maus-Sensitivität: einzelne Textteile können einen Schnellinfo-Text anzeigen, wenn man mit der Maus darüber fährt (mit
hover_event). - Maus-Klick-Sensitivität: einzelne Textteile können angeklickt werden (mit
click_event) und...- ... einen Befehl vorschlagen, indem er in die Chat-Konsole des Empfängers gestellt wird,
- ... einen Befehl ausführen in der Chat-Konsole des Empfängers,
- ... eine Web-Adresse aufrufen (mit Rückfrage, wenn in den Einstellungen aktiviert),
- ... eine Buchseite aufrufen.
- Shift-Maus-Klick-Sensitivität: einzelne Textteile können mit ⇧ Umschalttaste angeklickt werden und schreiben dann einen Text in den Chat (mit
insertion). - Systemtexte: aus der Sprachendatei können beliebige Texte übernommen werden (mit
translate). - Spieler und Kreaturen: in den Text können beliebige Zielauswahlen integriert werden (mit
selector). - NBT-Daten: in den Text können NBT-Daten integriert werden (mit
nbt). - Anzeigetafel: in den Text können Punktestände der Anzeigetafel integriert werden (mit
score).
Wenn der Text einen Befehl enthält, wird dieser immer in die Chat-Konsole des Empfängers eingetragen und dort ausgeführt. Das führt zu folgenden Effekten:
- Wenn der Empfänger keine Berechtigung zur Ausführung des Befehls hat, erhält er die entsprechende Fehlermeldung. Der Befehl
/trigger, für dessen Ausführung jeder Spieler berechtigt ist, ist speziell für die Anwendung in Textkomponenten gedacht, um Punkte für Punkte-Ziele zu verändern. - Wenn der Befehl länger als die Chat-Konsole ist (256 Zeichen), wird er abgeschnitten, was meist zu einer Fehlermeldung führt.
- Wenn der Befehl den Selektor
@penthält, wird dort immer der Empfänger der Textkomponenten eingesetzt, denn er ist selbst die Befehlsquelle und gleichzeitig der Befehlsquelle am nächsten. - Der Befehl ist nach der Ausführung - ob mit oder ohne Fehlermeldung - in der Chat-Historie des Empfängers zu sehen.
Der Text kann Unicode 7-Zeichen enthalten im Format \u1234. Beispiel: /tellraw @p "\u00A9 Copyright" ergibt "© Copyright". Unter Windows erhält man den Unicode eines Zeichens, indem man bei "Start" das Wort "Zeichentabelle" eingibt und auswählt. Klickt man in dieser Tabelle ein Zeichen an, steht unten links der Unicode, z.B. "U+00A9 Copyright-Zeichen".
Java Edition
[Bearbeiten | Quelltext bearbeiten]Das Format besteht aus Textkomponenten. Es gibt eine einzelne Wurzelkomponente, die untergeordnete Komponenten haben kann, die wiederum ihre eigenen untergeordneten Komponenten haben können usw. Komponenten können auch Formatierung und Interaktivität hinzugefügt werden, die von ihren untergeordneten Komponenten übernommen werden.
Eine Komponente kann ein -Zeichenkette, eine -Liste oder ein -Verbundtyp sein. Zeichenketten (Strings) und Listen (Arrays) sind beide Abkürzungen für längere Objektstrukturen, wie nachfolgend beschrieben.
- : Eine Zeichenkette mit reinem Text, die direkt angezeigt werden soll. Dies ist dasselbe wie ein Verbundtyp, das nur eine text-Komponente hat. Beispielsweise sind
"A"und{text: "A"}gleichwertig. - : Eine Liste von Komponenten. Dasselbe, als würden alle Komponenten nach der ersten an die extra-Liste der ersten angehängt. Beispielsweise ist
["A", "B", "C"]gleichbedeutend mit{text: "A", extra: ["B", "C"]}. Beachte, dass die späteren Komponenten eigentlich untergeordnete Elemente der ersten Komponente sind und daher jede auf die erste Komponente angewendete Formatierung von den späteren übernommen wird. Beispielsweise zeigt[{text: "A", color: "red"}, "B", "C"]alle drei Buchstaben in rotem Text an. - : Ein Textkomponenten-Verbundtyp. Alle Komponenten die nicht unter Inhalt stehen, sind optional.
- Inhalt
- type: Optional. Gibt den Inhaltstyp an. Einer von
text,translatable,score,selector,keybind,nbtoderobject. - Wenn type nicht vorhanden ist, einen ungültigen Wert hat oder wenn die erforderlichen Komponenten für den angegebenen Typ nicht vorhanden sind, wird der Typ automatisch bestimmt, indem das Objekt auf die folgenden Komponenten überprüft wird: text, translate, score, selector, keybind, nbt und schließlich object. Wenn mehrere vorhanden sind, wird derjenige verwendet, der in dieser Liste zuerst steht.
- Für jeden Inhaltstyp spezifische Werte werden unten beschrieben.
- type: Optional. Gibt den Inhaltstyp an. Einer von
- Kindkomponenten
- extra: Eine Liste zusätzlicher Komponenten, die nach dieser angezeigt werden sollen.
- Eine untergeordnete Textkomponente. Untergeordnete Textkomponenten erben alle Formatierungen und Interaktivität von der übergeordneten Komponente, sofern sie diese nicht ausdrücklich überschreiben.
- extra: Eine Liste zusätzlicher Komponenten, die nach dieser angezeigt werden sollen.
- Formatierung
- color: Optional. Ändert die Farbe, um den Inhalt im Textkomponentenobjekt und seinen untergeordneten Objekten darzustellen. Wenn nicht vorhanden, wird stattdessen die übergeordnete Farbe verwendet. Die Farbe wird als Farbcode oder als Farbname angegeben.
"#<hex>", wobei<hex>eine 6-stellige hexadezimale Farbe ist, ändert die Farbe in #<hex>"black"ändert die Farbe in
#000000"dark_blue"ändert die Farbe in
#0000AA"dark_green"ändert die Farbe in
#00AA00"dark_aqua"ändert die Farbe in
#00AAAA"dark_red"ändert die Farbe in
#AA0000"dark_purple"ändert die Farbe in
#AA00AA"gold"ändert die Farbe in
#FFAA00"gray"ändert die Farbe in
#AAAAAA"dark_gray"ändert die Farbe in
#555555"blue"ändert die Farbe in
#5555FF"green"ändert die Farbe in
#55FF55"aqua"ändert die Farbe in
#55FFFF"red"ändert die Farbe in
#FF5555"light_purple"ändert die Farbe in
#FF55FF"yellow"ändert die Farbe in
#FFFF55"white"ändert die Farbe in
#FFFFFF
- font: Optional. Der Ressourcenspeicherort der Schriftart für diese Komponente im Ressourcenpaket innerhalb von
assets/<namensraum>/font. Standardmäßig"minecraft:default". - bold: Optional. Ob der Inhalt fett dargestellt werden soll.
- italic: Optional. Ob der Inhalt kursiv dargestellt werden soll. Beachte, dass standardmäßig kursiver Text, wie z. B. benutzerdefinierte Gegenstandsnamen, durch Setzen auf
falsein nicht kursiv gesetzt werden kann. - underlined: Optional. Ob der Inhalt unterstrichen werden soll.
- strikethrough: Optional. Ob der Inhalt durchgestrichen werden soll.
- obfuscated: Optional. Gibt an, ob der Inhalt verschleiert dargestellt werden soll.
- shadow_color: Optional. Farbe und Deckkraft des Schattens. Wird dieser Wert weggelassen, hat der Schatten 25 % der Helligkeit und 100 % der Deckkraft der Textfarbe. Farbcodes entsprechen dem ARGB-Hexadezimalcode der Farbe, umgewandelt in eine Dezimalzahl, oder können anhand der Deckkraft sowie der Rot-, Grün- und Blauanteile mit folgender Formel berechnet werden:
Alpha<<24 + Rot<<16 + Grün<<8 + Blau - shadow_color: Optional. Eine vier-elementige Liste. Nach dem Schema RGBA. Beispiel:
{text:"Roter Schatten",shadow_color:[1,0,0,1]}- : Ganzzahl für Rot
- : Ganzzahl für Gelb
- : Ganzzahl für Blau
- : Ganzzahl für Alpha-Kanal der Transparenz
- color: Optional. Ändert die Farbe, um den Inhalt im Textkomponentenobjekt und seinen untergeordneten Objekten darzustellen. Wenn nicht vorhanden, wird stattdessen die übergeordnete Farbe verwendet. Die Farbe wird als Farbcode oder als Farbname angegeben.
- Interaktivität
- insertion: Optional. Wenn ein Spieler den Text mit gedrückter Umschalttaste anklickt, wird diese Zeichenkette in seine Chat-Eingabe eingefügt. Er überschreibt keinen vorhandenen Text, den der Spieler geschrieben hat. Dies funktioniert nur in Chat-Nachrichten.
- click_event: Optional. Ermöglicht das Auslösen von Ereignissen, wenn der Spieler auf Text klickt. Siehe Klickereignisse.
- hover_event: Optional. Ermöglicht die Anzeige einer Schnellinfo, wenn der Spieler mit der Maus über den Text fährt. Siehe Hover-Ereignisse.
- Inhalt
Aufgrund der extra-Komponente kann das obige Format rekursiv verschachtelt werden, um komplexe und funktionale Textzeichenfolgen zu erzeugen. Eine Textkomponente muss jedoch überhaupt nicht kompliziert sein: Nahezu alle Eigenschaften sind optional und können weggelassen werden.
Inhaltstypen
[Bearbeiten | Quelltext bearbeiten]Textkomponenten können mehrere Inhaltstypen anzeigen. Diese Textkomponenten sollten direkt in das Textkomponentenobjekt eingefügt werden.
Klartext
[Bearbeiten | Quelltext bearbeiten]Zeigt Klartext an.
- : Die Textkomponente.
- type: Optional. Auf
"text"setzen. - text: Eine Zeichenfolge mit Klartext zur direkten Anzeige.
- type: Optional. Auf
Übersetzter Text
[Bearbeiten | Quelltext bearbeiten]Zeigt einen übersetzten Textabschnitt aus der aktuell ausgewählten Sprache an. Dabei wird die ausgewählte Sprache des Clients verwendet. Wenn also Spieler, deren Spiele auf unterschiedliche Sprachen eingestellt sind, am selben Server angemeldet sind, wird jeder die Textkomponente in seiner eigenen Sprache sehen.
Übersetzungen werden in Sprachdateien in Ressourcenpaketen definiert, einschließlich des integrierten Ressourcenpakets.
Übersetzungen können Slots für Text enthalten, der im Voraus nicht bekannt ist, wie z. B. Spielernamen. Beim Anzeigen des übersetzten Textes werden die Slots aus einer bereitgestellten Liste von Textkomponenten gefüllt. Die Slots werden in der Sprachdatei definiert und haben im Allgemeinen die Form %s (zeigt die nächste Textkomponente in der Liste an) oder %3$s (zeigt die dritte Komponente in der Liste an; ersetze 3 durch den gewünschten Index).[Hinweis 1] Die integrierte englische Sprachdatei enthält beispielsweise die Übersetzung "chat.type.advancement.task": "%s hat den Fortschritt %s erreicht",.
- : Die Textkomponente.
- type: Optional. Auf
"translatable"eingestellt. - translate: Eine Übersetzungskennung, die den in geladenen Sprachdateien gefundenen Kennungen entspricht. Wird als entsprechender Text in der vom Spieler ausgewählten Sprache angezeigt. Wenn keine entsprechende Übersetzung gefunden werden kann, wird die Kennung selbst als übersetzter Text verwendet.
- fallback: Optional. Wenn keine entsprechende Übersetzung gefunden werden kann, wird dies als übersetzter Text verwendet. Wird ignoriert, wenn translate nicht vorhanden ist. Beispiel:
{translate:"diese.textid.ist.falsch",fallback:"Konnte Text-ID nicht finden"} - with: Optional. (nur in Verbindung mit
translate):- Liste von Ersetzungstexten. Einige
translate-Texte enthalten (immer in allen Sprachen) den Platzhalter%s. Beispiel: der Text zum Parameter"multiplayer.player.joined"lautet in Deutsch:"%s hat das Spiel betreten". Der Platzhalter wird in diesem Fall normalerweise durch den Spielernamen ersetzt.
In einem Text kann man alle Platzhalter beliebig ersetzen. Die Anzahl der Ersetzungen in derwith-Liste muss jedoch immer mit der Anzahl der%s-Platzhalter im Text übereinstimmen. Interessanterweise istwithkeine Unter-Eigenschaft vontranslate, sondern parallel zu dieser einzutragen. Die Einträge inwithsind auch in Textkomponenten, wodurch z.B.with:[{selector:"@p",color:"green"}]den nächsten Spieler in grüner Schrift einfügen würde.
Statt dem Platzhalter%skann in den Sprachdateien auch%n$sverwendet werden, um den n-ten Ersetzungstext einzufügen. Dies ist nützlich, wenn die Ersetzungstexte in verschiedenen Sprachen in unterschiedlicher Reihenfolge stehen.
- Liste von Ersetzungstexten. Einige
- type: Optional. Auf
Punktestand
[Bearbeiten | Quelltext bearbeiten]Zeigt einen Punktestand vom Punkte-Ziel an.
| Erfordert Komponentenauflösung. |
|---|
| Diese Textkomponente wird in eine text-Komponente aufgelöst, die den Punktestands-Wert enthält. |
- : Die Textkomponente.
- type: Optional. Auf
"score"setzen. - score: Zeigt den aktuellen Punktestand eines Punkteinhabers in einem Ziel an. Zeigt nichts an, wenn der angegebene Punkteinhaber oder das angegebene Ziel nicht existieren oder wenn der Punkteinhaber im Ziel nicht verfolgt wird.
- name: Der Name des Punkteinhabers, dessen Punktestand angezeigt werden soll. Dies kann ein Selektor wie
@poder ein expliziter Name sein. Wenn der Text ein Selektor ist, muss sichergestellt werden, dass der Selektor nie mehr als eine Kreatur auswählt, möglicherweise durch Hinzufügen vonlimit=1. Wenn der Text"*"ist, zeigt er die eigene Punktzahl des Lesers an (zum Beispiel zeigt/tellraw @a {score:{name:"*",objective:"obj"} }jedem Online-Spieler seine eigene Punktzahl im Punkte-Ziel"obj"an).[Hinweis 2] - objective: Der interne Name des Ziels, in dem die Punktzahl des Spielers angezeigt wird.
- name: Der Name des Punkteinhabers, dessen Punktestand angezeigt werden soll. Dies kann ein Selektor wie
- type: Optional. Auf
Objektname
[Bearbeiten | Quelltext bearbeiten]Zeigt den Namen einer oder mehrerer Objekte an, die von einer Zielauswahl gefunden wurden.
Wenn genau eine Kreatur gefunden wird, wird der Name der Kreatur allein angezeigt. Wenn mehrere gefunden werden, werden ihre Namen in der Form „Name1, Name2, Name3“ mit grauen Kommas angezeigt. Wenn keine gefunden werden, wird die Komponente als kein Text angezeigt.
Wenn man mit der Maus über einen Namen fährt, wird eine Schnellinfo mit dem Namen, dem Typ und der UUID des Ziels angezeigt. Wenn man auf den Namen eines Spielers klickt, wird ein Befehl vorgeschlagen, der diesem Spieler zugeflüstert werden soll. Wenn man bei gedrückter Umschalttaste auf den Namen eines Spielers klickt, wird dieser Name in den Chat eingefügt. Wenn man bei gedrückter Umschalttaste auf den Namen eines Objekts klickt, wird deren UUID in den Chat eingefügt.
| Erfordert Komponentenauflösung. |
|---|
|
- : Die Textkomponente.
- type: Optional. Auf
"selector"eingestellt. - selector: Eine Zeichenfolge, die einen Selektor enthält.
- separator: Optional, standardmäßig
{color: "gray", text: ", "}. Eine Textkomponente. Wird als Trennzeichen zwischen verschiedenen Namen verwendet, wenn die Komponente mehrere Kreaturen auswählt. Beispiele:{selector:"@e[type=minecraft:chicken]",separator:"_"}und{entity:"@e[type=minecraft:chicken]",nbt:"CustomName",interpret:true,separator:{text:"*",color:"red"} }.
- type: Optional. Auf
Tastenkombination
[Bearbeiten | Quelltext bearbeiten]Zeigt den Namen der Taste an, die derzeit mit einer bestimmten konfigurierbaren Steuerung verknüpft ist. Dabei wird das eigene Steuerungsschema des Clients verwendet. Wenn also Spieler mit unterschiedlichen Steuerungsschemata am selben Server angemeldet sind, wird jedem seine eigene Tastenkombination angezeigt.
- : Die Textkomponente.
- type: Optional. Auf
"keybind"einstellen. - keybind: Eine Tastenkombinationskennung, die als Name der Taste angezeigt wird, die derzeit mit dieser Aktion verknüpft ist. Beispielsweise zeigt
{keybind: "key.inventory"}"e" an, wenn der Spieler das Standardsteuerungsschema verwendet.
- type: Optional. Auf
NBT-Daten
[Bearbeiten | Quelltext bearbeiten]Zeigt NBT-Werte von Objekten, Blockobjekten oder Datenspeichern an.
NBT-Zeichenketten zeigen ihren Inhalt an. Andere NBT-Daten werden als SNBT ohne Leerzeichen zwischen den Symbolen dargestellt. Ist interpret auf "true" gesetzt, versucht das Spiel, den Text zu parsen und als eigene Textkomponente anzuzeigen. Dies funktioniert nur bei Verbundtypen und Listen mit Einträgen, die die korrekten Schlüsselnamen enthalten. Schlägt das Parsen fehl, wird die Komponente ohne Text angezeigt oder, falls sie auf eine Zeichenkette verweist, diese selbst. Werden mehrere NBT-Daten gefunden (entweder durch Auswahl mehrerer Kreaturen oder durch Verwendung eines Pfades mit mehreren Werten), werden diese der Reihe nach mit dem separator-Wert dazwischen angezeigt.
| Erfordert Komponentenauflösung. |
|---|
|
- : Die Textkomponente.
- type: Optional. Auf
"nbt"einstellen. - source: Optional. Erlaubte Werte sind
"block","entity"und"storage", entsprechend der Quelle der NBT-Daten. - nbt: Der NBT-Pfad, der zum Nachschlagen von NBT-Werten aus einer Kreatur, Blockobjekt oder einem Datenspeicher verwendet wird. Erfordert einen von block, entity oder storage. Mehr als einer ist zulässig, aber nur einer wird verwendet.[Hinweis 3]
- interpret: Optional, standardmäßig "false". Wenn "true", versucht das Spiel, den Text jedes NBT-Werts als Textkomponente zu analysieren. Wird ignoriert, wenn nbt nicht vorhanden ist.
- separator: Optional, standardmäßig
{text: ", "}. Eine Textkomponente. Wird als Trennzeichen zwischen verschiedenen Daten verwendet, wenn die Komponente mehrere Daten auswählt. Beispiel:{nbt:"Liste[]",storage:"minecraft:wiki",interpret:true,separator:"+"} - block: Eine Zeichenfolge, die die Koordinaten des Blockobjekts angibt, aus der der NBT-Wert bezogen wird. Die Koordinaten können absolut, relativ (
~) oder lokal (^) sein. Wird ignoriert, wenn nbt nicht vorhanden ist. - entity: Eine Zeichenfolge, die die Zielauswahl für das Objekt oder Kreatur angibt, aus denen der NBT-Wert bezogen wird. Wird ignoriert, wenn nbt nicht vorhanden ist.
- storage: Eine Zeichenfolge, die den Namensraum des Datenspeichers angibt, aus dem der NBT-Wert bezogen wird. Wird ignoriert, wenn nbt nicht vorhanden ist.
- type: Optional. Auf
Objekt
[Bearbeiten | Quelltext bearbeiten]Atlasobjekttyp
[Bearbeiten | Quelltext bearbeiten]Wenn object als "atlas" angegeben wird, wird ein einzelner Sprite aus einem Texturen-Atlas als Symbol angezeigt. Sprites werden als 8x8 Pixel große Quadrate gerendert.
- : Die Textkomponente.
- type: Optional. Eingestellt auf
"object". - object:
"atlas"(Optional, da standardmäßig"atlas"verwendet wird, falls nicht anders angegeben). - atlas: Optional. Der Name des Texturatlas. Standardwert ist
"minecraft:blocks". - sprite: Der Sprite-Name (z. B.
"item/emerald").
- type: Optional. Eingestellt auf
Spielerobjekttyp
[Bearbeiten | Quelltext bearbeiten]Wenn object als "player" angegeben wird, wird der Kopf eines Spielers als Charakter angezeigt.
- : Die Textkomponente.
- type: Optional. Standardmäßig
"object", wenn objektspezifische Schlüssel erkannt werden. - object:
"player" - player: Die
minecraft:profile-Gegenstandskomponente, für die der Spielerkopf angezeigt werden soll.- name: Optional. Der Spielername.
- id: Optional. Spieler-UUID.
- texture: Namensraum-ID der zu verwendenden Skin-Textur. Die Skin wird relativ zum Ordner
texturesund mit der Endung.pngangegeben. - cape: Optionale Namensraum-ID der zu verwendenden Umhangtextur. Falls angegeben, wird dasselbe Format wie im Feld
textureverwendet. - model: Optionaler Modelltyp, entweder
wideoderslim. Falls weggelassen, wirdwideverwendet. - properties: Eigenschaften des Kopfes.
- : Einzelne Verbundtyp-Eigenschaft
- name: Der Name der Eigenschaft, kann zum Beispiel
texturessein. - signature: Nur wenn angefordert, der private Schlüssel des Mojang-Servers "Yggdrasil" als Base64-String.
- value: Die Texturen (Skin und ggf. Umhang) als JSON-Objekt in einer Base64-Zeichenkette. Für Base64 gibt es Online-Decodierungen, z.B. diese. Der Inhalt des JSON-Objektes ist unter Mojang API#Skin und Cape beschrieben.
- name: Der Name der Eigenschaft, kann zum Beispiel
- : Einzelne Verbundtyp-Eigenschaft
- hat: Gibt an, ob die Hut-Ebene angezeigt werden soll. (Standardwert:
true)
- type: Optional. Standardmäßig
Komponentenauflösung
[Bearbeiten | Quelltext bearbeiten]Die Auflösung von Textkomponenten ist der Prozess, bei dem serverseitige Textkomponenten in clientseitige Textkomponenten umgewandelt werden, damit sie dem Benutzer angezeigt werden können.
Bestimmte Textkomponententypen, wie z. B. text, translate, keybind und object, können direkt vom Client angezeigt werden, da dieser keine zusätzlichen Informationen zur Interpretation benötigt. Diese werden als clientseitige oder einfache Textkomponenten bezeichnet.
Andere Typen, wie z. B. score, selector und nbt, erfordern zusätzliche Verarbeitungsschritte vom Server, bevor sie vom Client angezeigt werden können. Diese werden als serverseitige oder erweiterte Textkomponenten bezeichnet. Da der Client keinen Zugriff auf die Informationen hat, die diese Textkomponenten anzeigen sollen, müssen sie vom Server aufgelöst werden. Dies beinhaltet das Abrufen der entsprechenden Daten aus der Spielwelt und das Ersetzen der serverseitigen Textkomponenten durch clientseitige, die der Client darstellen kann.
Erhält der Client nicht aufgelöste serverseitige Textkomponenten, werden score und nbt als leerer Text angezeigt, während selector den Selektor selbst anzeigt.
Die Auflösung von Textkomponenten legt zudem einen festen Wert basierend auf den zum Zeitpunkt der Auflösung verfügbaren Daten fest. Daher sind diese Inhaltstypen nicht dynamisch und werden nicht aktualisiert, um spätere Änderungen widerzuspiegeln. Beispielsweise kann {score:{name:"@p",objective:"wiki"}} zu "100" aufgelöst werden und bleibt so, selbst wenn sich die Punktzahl des Spielers (wiki) erhöht oder verringert.
Die Auflösung von Textkomponenten kann auf verschiedene Arten erfolgen:
- Anzeige von Text in Chat- oder Titelfeldern mit Befehlen wie Befehl
/tellrawund Befehl/title. - Schreiben einer Textkomponente in eine beliebige Zeile eines Schilds.
- Schreiben einer Textkomponente in die
text-Eigenschaft eines Textdarstellers. - Verwendung der Gegenstandsmodifizierer mit den Befehlen set_name und set_lore, jedoch nur, wenn deren entity-Feld gesetzt ist und der entsprechende Kreaturkontext existiert.
- Eine Textkomponente in einem geschriebenen Buch wird aufgelöst, sobald sie von einem Operator geöffnet oder in ein Lesepult gelegt wird. Ist die resultierende Textkomponente jedoch zu groß, kann sie nicht aufgelöst werden.
- Festlegen des Namens einer Bossleiste mit Befehl
/bossbar set <id> name, während der Befehl als Kreatur ausgeführt wird. - Festlegen des Anzeigenamens eines Punkte-Ziel mit Befehl
/scoreboard objectives modify <Punkte-Ziel> displayname, während der Befehl als Kreatur ausgeführt wird. - Festlegen des Anzeigenamens eines Punktehalter mit Befehl
/scoreboard players display name, während der Befehl als Kreatur ausgeführt wird. - Festlegen des Zahlenformats eines Punktehalters oder Punkte-Ziels auf eine
fixed-Textkomponente mit Befehl/scoreboard players display numberformatoder Befehl/scoreboard objectives modify <Punkte-Ziel> numberformat fixed, während der Befehl als Kreatur ausgeführt wird.
Es gibt mehrere Stellen, an denen Textkomponenten nicht automatisch aufgelöst werden, z. B.:
- Direktes Schreiben in Datenkomponenten wie
custom_name,item_name,loreundwritten_book_content. Die zuvor genannten Elementmodifikatoren können verwendet werden, um Textkomponenten beim Schreiben in diese Datenkomponenten aufzulösen. - Direktes Schreiben in die
CustomName-Eigenschaft von Kreaturen. - Sämtlicher Text in Dialogen.
- Die meisten JSON-Dateien in Datenpaketen, wie z. B. Fortschritte-Namen, Chat-Typen, Autoren/Titel von Malvarianten usw.
Klickereignisse
[Bearbeiten | Quelltext bearbeiten]Klickereignisse steuern, was passiert, wenn der Spieler auf den Text klickt. Folgende Ereignisse können auftreten:
open_url
[Bearbeiten | Quelltext bearbeiten]Öffnet die angegebene URL im Standard-Webbrowser des Benutzers.
- click_event:
- action:
"open_url" - url: Die zu öffnende URL.
- action:
open_file
[Bearbeiten | Quelltext bearbeiten]Öffnet die angegebene Datei auf dem Computer des Benutzers. Dies wird in automatisch vom Spiel generierten Nachrichten verwendet (z. B. beim Erstellen eines Screenshots) und kann aus Sicherheitsgründen nicht von Servern gesendet werden.
- click_event:
- action:
"open_file" - path: Die zu öffnende Datei.
- action:
run_command
[Bearbeiten | Quelltext bearbeiten]Führt den angegebenen Befehl aus. Dies geschieht so, als hätte der Spieler den Befehl im Chat eingegeben und die Eingabetaste gedrückt. Dies kann jedoch nur für Befehle verwendet werden, die keine direkten Chatnachrichten senden (wie Befehl /say, Befehl /tell und Befehl /teammsg). Da sie über den Chat ausgeführt werden, benötigt der Spieler die erforderlichen Berechtigungen. Vorgesehen ist der Befehl /trigger um keine Dialogfenster zu öffnen.
Bei Schildern wird der Befehl vom Server am Standort des Schildes ausgeführt. Der Spieler, der das Schild rechtsgeklickt hat, fungiert dabei als Befehlsausführer (d. h. die Kreatur, die von @s ausgewählt wurde). Da Schildbefehle vom Server ausgeführt werden, haben sie dieselbe Berechtigungsstufe wie ein Befehlsblock und nicht die Berechtigungsstufe des Spielers. Außerdem unterliegen sie keiner Beschränkung der Chatlänge.
- click_event:
- action:
"run_command" - command: Der auszuführende Befehl. Muss nicht mit einem Schrägstrich (
/) beginnen.
- action:
suggest_command
[Bearbeiten | Quelltext bearbeiten]Öffnet den Chat und fügt den angegebenen Text oder Befehl ein. Falls bereits eine Chatnachricht verfasst wird, wird diese überschrieben. Dies funktioniert nicht in Büchern.[1]
- click_event:
- action:
"suggest_command" - command: Der Befehl zum Ausfüllen des Chats. Funktioniert auch mit normalen Texten.
- action:
change_page
[Bearbeiten | Quelltext bearbeiten]Kann nur in geschriebenen Büchern verwendet werden. Wechselt zur angegebenen Seite, falls diese existiert.
- click_event:
- action:
"change_page" - page: Die Seite, zu der gewechselt werden soll.
- action:
copy_to_clipboard
[Bearbeiten | Quelltext bearbeiten]Kopiert den angegebenen Text in die Zwischenablage.
- click_event:
- action:
"copy_to_clipboard" - value: Der zu kopierende Text.
- action:
show_dialog
[Bearbeiten | Quelltext bearbeiten]Öffnet den angegebenen Dialog.
- click_event:
- action:
"show_dialog" - dialog: Ein Dialog (eine [String]-ID oder eine neue [NBT-Object]-Dialogdefinition) zum Anzeigen.
- action:
custom
[Bearbeiten | Quelltext bearbeiten]Sendet ein benutzerdefiniertes Ereignis an den Server; hat keine Auswirkung auf Standardserver.
- click_event:
- action:
"custom" - id: Beliebige ID zur Identifizierung des Ereignisses.
- payload: Optionale Nutzdaten des Ereignisses.
- action:
Hover-Ereignisse
[Bearbeiten | Quelltext bearbeiten]Hover-Ereignisse steuern, was passiert, wenn der Spieler mit der Maus über den Text fährt. Folgende Ereignisse sind möglich:
show_text
[Bearbeiten | Quelltext bearbeiten]Zeigt eine Textkomponente an.
- hover_event:
- action:
"show_text" - value: Eine weitere Textkomponente. Kann ein beliebiger gültiger Textkomponententyp sein: Zeichenkette, Liste oder Objekt. Beachte, dass click_event und hover_event innerhalb des Tooltips nicht funktionieren.
- action:
show_item
[Bearbeiten | Quelltext bearbeiten]Zeigt die Schnellinfo eines Gegenstands an, als ob man mit der Maus darüber im Inventar fahren würde.
- hover_event:
- action:
"show_item" - id: Der Namensraum des Gegenstands. Standardmäßig wird
minecraft:airverwendet, falls ungültig. - count: Optional. Größe des Gegenstandsstapels. Dies ändert normalerweise nicht den Inhaltstooltip.
- components: Optional. Zusätzliche Informationen zum Gegenstand. Siehe Gegenstandskomponenten.
- action:
show_entity
[Bearbeiten | Quelltext bearbeiten]Zeigt den Namen, den Typ und die UUID einer Kreatur an. Wird von selector verwendet.
- hover_event:
- action:
"show_entity" - name: Optional. Wird ausgeblendet, falls nicht vorhanden. Ein Text, der als Name der Kreatur angezeigt wird.
- id: Eine Zeichenkette, die den Typ der Kreatur als Namensraum enthält.
- uuid: Die UUID der Kreatur. Entweder:
- Eine Zeichenkette, die die UUID im hexadezimalen Format mit Bindestrichen darstellt. Muss eine gültige UUID sein.
- Eine Liste aus vier Zahlen, die die UUID im Integer-Array- oder Listenformat darstellt. Z. B.
[I;1,1,1,1]oder[1,1,1,1].
- action:
Bedrock Edition
[Bearbeiten | Quelltext bearbeiten]- : Die Wurzelkomponente.
- rawtext: Eine Liste enthält alle Textobjekte.
- : Um gültig zu sein, muss ein Objekt eine Inhalts--Textkomponente enthalten: text, translate, score oder selector. Es sind mehrere zulässig, aber nur eines wird verwendet.[Hinweis 4]
- Inhalt: Klartext
- text: Eine Zeichenfolge mit Klartext zur direkten Anzeige.
- Inhalt: Übersetzter Text
- translate: Eine Übersetzungskennung, die als entsprechender Text in der vom Spieler ausgewählten Sprache angezeigt wird. Wenn keine entsprechende Übersetzung gefunden werden kann, wird die Kennung selbst als Übersetzungstext verwendet. Diese Kennung ist dieselbe wie die Kennungen, die in lang-Dateien von Assets oder Ressourcenpaketen zu finden sind.
- with: Optional. Eine Liste von Textkomponentenargumenten, die in Slots im Übersetzungstext eingefügt werden sollen. Wird ignoriert, wenn translate nicht vorhanden ist.
- Übersetzungen können Slots für Text enthalten, der im Voraus nicht bekannt ist, wie z. B. Spielernamen. Diese Slots werden im Übersetzungstext selbst definiert, nicht in der Textkomponente, und haben im Allgemeinen die Form
%%1(zeigt das erste Argument an; ersetze1durch den gewünschten Index). Wenn für einen Slot kein Argument angegeben ist, wird der Slot nicht angezeigt.
- Übersetzungen können Slots für Text enthalten, der im Voraus nicht bekannt ist, wie z. B. Spielernamen. Diese Slots werden im Übersetzungstext selbst definiert, nicht in der Textkomponente, und haben im Allgemeinen die Form
- Inhalt: Punktestands-Wert (erfordert Auflösung)
- score: Zeigt den aktuellen Punktestand eines Punkteinhabers in einem Ziel an. Zeigt nichts an, wenn der angegebene Punkteinhaber oder das angegebene Ziel nicht existieren oder wenn der Punkteinhaber im Ziel nicht verfolgt wird.
- name: Der Name des Punkteinhabers, dessen Punktestand angezeigt werden soll. Dies kann ein Selektor wie @p oder ein expliziter Name sein. Wenn der Text
"*"ist, wird die Punktzahl des Lesers angezeigt (zum Beispiel zeigt/tellraw @a { "rawtext" : [ { "score" : { "name" : "*" , "objective" : "obj"} } ] }jedem Online-Spieler seine eigene Punktzahl im Ziel "obj" an).[Hinweis 5] - objective: Der interne Name des Ziels, in dem die Punktzahl des Spielers angezeigt wird.
- name: Der Name des Punkteinhabers, dessen Punktestand angezeigt werden soll. Dies kann ein Selektor wie @p oder ein expliziter Name sein. Wenn der Text
- Inhalt: Objektnamen (erfordert Auflösung)
- selector: Eine Zeichenfolge, die einen Selektor enthält. Wird als Name des Spielers oder der Kreatur angezeigt, die vom Selektor gefunden wurde. Wenn vom Selektor mehr als ein Spieler oder eine Kreatur gefunden wird, werden ihre Namen entweder in der Form „Name1 und Name2“ oder in der Form „Name1, Name2, Name3 und Name4“ angezeigt. Wenn man mit der Maus über einen Namen fährt, wird eine Schnellinfo mit dem Namen, dem Typ und der UUID des Ziels angezeigt. Wenn man auf den Namen eines Spielers klickt, wird ein Befehl vorgeschlagen, der diesem Spieler zugeflüstert werden soll. Wenn man bei gedrückter Umschalttaste auf den Namen eines Spielers klickt, wird dieser Name in den Chat eingefügt. Wenn man bei gedrückter Umschalttaste auf den Namen einer Nicht-Spieler-Kreatur klickt, wird deren UUID in den Chat eingefügt.
- : Um gültig zu sein, muss ein Objekt eine Inhalts--Textkomponente enthalten: text, translate, score oder selector. Es sind mehrere zulässig, aber nur eines wird verwendet.[Hinweis 4]
- rawtext: Eine Liste enthält alle Textobjekte.
Escaping
[Bearbeiten | Quelltext bearbeiten]Bei verschachtelten Parametern mit einem Text innerhalb eines Textes, ergibt sich ein Anführungszeichenproblem: Der Beginn des inneren Textes wird fälschlich als das Ende des äußeren Textes interpretiert. Um diesem Problem zu entkommen (engl. escape), markiert man die inneren Anführungszeichen mit einem besonderen Zeichen, dem Rückwärtsschrägstrich \ (Backslash). Ganz allgemein wird vor jedes Zeichen, das der Interpretation durch das Programm entkommen soll, ein Backslash geschrieben.
Das wird Escaping genannt und in Textkomponenten dient es dazu, Sonderzeichen wie " (Anführungszeichen) korrekt darzustellen, ohne dass sie als Ende oder Anfang eines Strings interpretiert werden. Da Textkomponenten von Anführungszeichen umschlossen wird, müssen innerhalb dieses Textes Anführungszeichen mit einem Backslash (\) "escaped" werden, um klarzustellen, dass sie Teil des Inhalts sind und nicht die Struktur der Textkomponenten beeinflussen.
- Grundlegendes zu Escaping
- Ein normales
"wird durch\"dargestellt. - Der Backslash selbst (
\) muss als\\geschrieben werden, wenn er Teil des Textes sein soll. - Escaping ist besonders wichtig, wenn Textkomponenten in Befehlen wie Befehl
/tellraw, Befehl/title, oder Befehl/dataverwendet wird.
/tellraw @a {text:"Steve sagt: \"Willkommen in der Welt!\""}
- Hier wurde Escaping angewendet um die
"-Zeichen im Chat anzuzeigen.
/tellraw @a {text:"Klicke hier",color:"blue",click_event:{action:"run_command",command:"/tellraw @s {text:\"Hallo Alex\",color:\"green\"}"}}
- Escaping ist hier zwingend notwendig, da andernfalls der angeklickte Befehl
/tellrawnicht in das Klick-Ereignis integriert werden könnte.
Beispiele
[Bearbeiten | Quelltext bearbeiten]Java Edition
[Bearbeiten | Quelltext bearbeiten]| Befehl | Beispiel |
|---|---|
text
|
/tellraw @p {text: "Dieser Text ist grün", color: "green"}
|
/tellraw @p
[
{text: "Nur ein "},
{text: "Wort", color: "green"},
{text: " ist grün"}
]
| |
/tellraw @p
[
{text: "Fettgrün ", color: "green", bold:true},
{text: "überall ", italic:true},
{text: "bis hier", underlined:true}
]
| |
/tellraw @p
[
"",
{text:"Fettgrün ", color:"green", bold:true},
{text:"hier nicht ", italic:true},
{text:"hier auch nicht", underlined:true}
]
| |
extra
|
/tellraw @p
[
"",
{text:"Grün ", color:"green"},
{text:"Gelbkursiv", color:"yellow",
extra:
[
{text:" auch im"},
{text:" extra", italic:true},
{text:"-Teil"}
]
},
{text:" Standard-Weiß"}
]
|
selector
|
/tellraw @p
[
"",
{text:"Wir begrüßen ", color:"yellow", bold:true},
{selector:"@a[distance=..10]", color:"green", underlined:true}
]
|
score
|
/tellraw @p
[
{ text:"Ergebnis: Es wurden " },
{ score:
{
name:"Gesamt",
objective:"SpinneKill"
}
},
{ text:" Spinnen getötet" }
]
|
nbt
|
/tellraw @p
[
{ text: "Name des nächsten Rüstungsständers: " },
{
nbt: "CustomName",
entity: "@n[type=minecraft:armor_stand]"
},
{ "text":"\n\n" },
{ text: "Anzahl der Gegenstände im ersten Inventarplatz des Blocks an den Koordinaten 0, 62, 0: " },
{
nbt: "Items[{Slot:0b}].count",
block: "0 62 0"
}
]
|
translate
|
/tellraw @p
[
{
translate:"advancements.story.mine_diamond.title",
color:"green"
},
{ "text":"\n" },
{ "translate":"advancements.story.mine_diamond.description" }
]
|
/tellraw @p
[
{ text:"Das ist unglaublich: " },
{
translate:"chat.type.advancement.goal",
with:
[
"Ein >Schneegolem<",
"Diamantenkönig"
]
}
]
| |
click_event
|
/tellraw @p
{
text: "Klick mich",
click_event:
{
action: "suggest_command",
command: "/teleport @p 100 15 -50"
}
}
|
/tellraw @p
{
text: "Klick mich",
click_event:
{
action: "open_url",
url: "https://minecraft.net"
}
}
| |
/tellraw @p
{
text: "Klick mich",
click_event:
{
action: "run_command",
command: "/give @p minecraft:pumpkin"
}
}
| |
hover_event
|
/tellraw @p
{
text: "Hover mich",
hover_event:
{
action: "show_text",
value:
[
{text:"weiß ",color:"white"},
{text:"gold ",color:"gold"},
{text:"weiß\nneue Zeile"}
]
}
}
|
/tellraw @p
{
text: "Hover mich",
hover_event:
{
action: "show_item",
id: "minecraft:pumpkin"
}
}
| |
/tellraw @p
{
text: "Hover mich",
hover_event:
{
action: "show_item",
id: "minecraft:iron_pickaxe",
components: {"minecraft:enchantments":{"minecraft:sharpness":1}, "minecraft:lore":["Zauberaxt"] }
}
}
| |
/tellraw @p
{
text: "Hover mich",
hover_event:
{
action: "show_entity",
name: "DAS Huhn",
id: "minecraft:chicken",
uuid: "00000000-0000-0000-0000-000000000000"
}
}
| |
sprite
|
/tellraw @s
[
{
atlas:"minecraft:blocks",
sprite:"block/emerald_block"
}
]
|
Bedrock Edition
[Bearbeiten | Quelltext bearbeiten]| Befehl | Beispiel |
|---|---|
rawtext
|
/tellraw @a { "rawtext" : [ { "text" : "Hallo Welt" } ] }
|
/tellraw @a { "rawtext" : [ { "text":"Hallo" }, { "text" : " Welt" } ] }
| |
/tellraw @a { "rawtext" : [ { "text" : "Hallo\nNeue Zeile" } ] }
| |
translate
|
/tellraw @a { "rawtext": [ { "translate" : "commands.op.success" } ] }
|
/tellraw @a { "rawtext" : [ { "text":"Hallo World", "translate":"commands.op.success" } ] }
| |
translate with
|
/tellraw @a { "rawtext": [ { "translate" : "commands.op.success", "with": [ "Steve" ] } ] }
|
/tellraw @a { "rawtext": [ { "translate" : "commands.op.success", "with": { "rawtext": [ { "translate" : "item.apple.name" } ] } } ] }
| |
/tellraw @a { "rawtext": [ { "translate" : "Hallo %%s", "with": [ "Steve" ] } ] }
| |
/tellraw @a { "rawtext": [ { "translate" : "Hallo %%s und %%s", "with": [ "Steve", "Alex" ] } ] }
| |
/tellraw @a { "rawtext": [ { "translate" : "Hallo %%s und %%s", "with": { "rawtext" : [ { "text" : "Steve" }, { "translate" : "item.apple.name" } ] } } ] }
| |
/tellraw @a { "rawtext" : [ {"translate" : "Hallo %%2 und %%1", "with": [ "Steve", "Alex"] } ] }
|
Hinweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Wenn das Argument „next“ ausgewählt wird, werden Slots ignoriert, die explizit einen Index angeben. Wenn also der Übersetzungstext
"Hallo %s, %2$s und %s."lautet, wird der nächste Text in der Liste angezeigt. die Komponenten „John“ und „Becky“ erhalten, würde „Hallo John, Becky und Becky“ angezeigt. - ↑ Die Anzeige der eigenen Punktzahl des Lesers funktioniert nur in Situationen, in denen eine Nachricht nur einen einzigen Leser hat. Das sind Chat-Nachrichten, Befehl
/titleund beschriebene Bücher. Funktioniert nicht für Bossleisten-Anzeigenamen oder -blöcke wie Schilder. - ↑ Wenn source nicht angegeben wird, werden NBT-Quellen in der Reihenfolge entity, block, storage geprüft. Wenn mehrere vorhanden sind, wird derjenige verwendet, der in dieser Liste zuerst steht.
- ↑ Inhalts-Textkomponente werden in der Reihenfolge translate, text, selector, score überprüft. Wenn mehrere vorhanden sind, wird das erste in der Liste verwendet.
- ↑ Die Anzeige der Punktzahl des Lesers funktioniert nur in Situationen, in denen eine Nachricht nur einen einzigen Leser hat. Das sind Chatnachrichten, Befehl
/titlerawund beschriebene Bücher. Funktioniert nicht für Dinge wie Schilder, die mehr als einen „Leser“ haben können.
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]Geschichte
[Bearbeiten | Quelltext bearbeiten]Textkomponenten vor Vollversion 1.21.5
[Bearbeiten | Quelltext bearbeiten]| Versionen der Java Edition |
|---|