Textkomponenten

Aus Minecraft Wiki
Zur Navigation springen Zur Suche springen
Rückfrage bei click_event-action open_url
Formatierte Textausgaben, hier über die Konsole

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.

Im Spiel gibt es mehrere Möglichkeiten für die Verwendung solcher Texte:

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 @p enthä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".

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, nbt oder object.
      • 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.
    • 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.
    • 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 false in 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]}
    • 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.

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.

Textkomponenten können mehrere Inhaltstypen anzeigen. Diese Textkomponenten sollten direkt in das Textkomponentenobjekt eingefügt werden.

Zeigt Klartext an.

  • : Die Textkomponente.
    • type: Optional. Auf "text" setzen.
    • text: Eine Zeichenfolge mit Klartext zur direkten Anzeige.

Ü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 der with-Liste muss jedoch immer mit der Anzahl der %s-Platzhalter im Text übereinstimmen. Interessanterweise ist with keine Unter-Eigenschaft von translate, sondern parallel zu dieser einzutragen. Die Einträge in with sind 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 %s kann in den Sprachdateien auch %n$s verwendet werden, um den n-ten Ersetzungstext einzufügen. Dies ist nützlich, wenn die Ersetzungstexte in verschiedenen Sprachen in unterschiedlicher Reihenfolge stehen.

Zeigt einen Punktestand vom Punkte-Ziel an.

  • : 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 @p oder 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 von limit=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.

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.

  • : 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"} }.

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.

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.

  • : 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.

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").
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 textures und mit der Endung .png angegeben.
      • cape: Optionale Namensraum-ID der zu verwendenden Umhangtextur. Falls angegeben, wird dasselbe Format wie im Feld texture verwendet.
      • model: Optionaler Modelltyp, entweder wide oder slim. Falls weggelassen, wird wide verwendet.
      • properties: Eigenschaften des Kopfes.
        • : Einzelne Verbundtyp-Eigenschaft
          • name: Der Name der Eigenschaft, kann zum Beispiel textures sein.
          • 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.
    • hat: Gibt an, ob die Hut-Ebene angezeigt werden soll. (Standardwert: true)

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 /tellraw und 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 numberformat oder 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, lore und written_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:

Öffnet die angegebene URL im Standard-Webbrowser des Benutzers.

  • click_event:
    • action: "open_url"
    • url: Die zu öffnende URL.

Ö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.

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.

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.

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.

copy_to_clipboard

[Bearbeiten | Quelltext bearbeiten]

Kopiert den angegebenen Text in die Zwischenablage.

  • click_event:
    • action: "copy_to_clipboard"
    • value: Der zu kopierende Text.

Öffnet den angegebenen Dialog.

  • click_event:
    • action: "show_dialog"
    • dialog: Ein Dialog (eine [String]-ID oder eine neue [NBT-Object]-Dialogdefinition) zum Anzeigen.

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.

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:

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.

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:air verwendet, falls ungültig.
    • count: Optional. Größe des Gegenstandsstapels. Dies ändert normalerweise nicht den Inhaltstooltip.
    • components: Optional. Zusätzliche Informationen zum Gegenstand. Siehe Gegenstandskomponenten.

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].

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; ersetze 1 durch den gewünschten Index). Wenn für einen Slot kein Argument angegeben ist, wird der Slot nicht angezeigt.
        • 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.
        • 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.

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 /data verwendet 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 /tellraw nicht in das Klick-Ereignis integriert werden könnte.
Befehl Beispiel
text /tellraw @p {text: "Dieser Text ist grün", color: "green"}
Kompletter Text gleichbleibend formatiert (grün).
/tellraw @p
 [
   {text: "Nur ein "},
   {text: "Wort", color: "green"},
   {text: " ist grün"}
 ]
Einzelne Textteile unterschiedlich formatiert in einer Liste.
/tellraw @p
 [
   {text: "Fettgrün ", color: "green", bold:true},
   {text: "überall ", italic:true},
   {text: "bis hier", underlined:true}
 ]
Das erste Listenelement vererbt seine Formatierung, die weiteren nicht.
/tellraw @p
 [
   "",
   {text:"Fettgrün ", color:"green", bold:true},
   {text:"hier nicht ", italic:true},
   {text:"hier auch nicht", underlined:true}
 ]
Das erste Listenelement wird leer gelassen, wenn die Vererbung stört.
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ß"}
 ]
Vererbung der gelben Farbe mit extra-Eigenschaft. Es gibt keine Schlüsselwörter, um Farbe oder Formatierung zurückzusetzen. Die Verwendung von Wörtern wie "reset", "null" oder "none" bewirken nichts. Für Boolean-Werte (z.B. "bold" oder "underlined") ist der Standardwert false.
selector
/tellraw @p
 [
   "",
   {text:"Wir begrüßen ", color:"yellow", bold:true},
   {selector:"@a[distance=..10]", color:"green", underlined:true}
 ]
Die obige Nachricht hat drei Textteile: Der erste ist leer, damit keine Formatierung vererbt wird. Der zweite ist gelb und fett, der dritte ist grün und unterstrichen. Der selector-Textteil gibt alle Spielernamen im Umkreis von 10 Metern um die Befehlsquelle aus. Wenn das die Spieler oyo123 und yoyo sind, lautet die Nachricht: "Wir begrüßen oyo123 and yoyo". Das "and" wird automatisch generiert.
score
/tellraw @p
 [
   { text:"Ergebnis: Es wurden " },
   { score:
     {
       name:"Gesamt",
       objective:"SpinneKill"
     }
   },
   { text:" Spinnen getötet" }
 ]
Wenn in der Anzeigetafel ein Punkte-Ziel "SpinneKill" definiert (/scoreboard objectives add SpinneKill dummy) wurde und der Punktehalter "#Gesamt" bei diesem Ziel einen Punktestand von 35 hat (/scoreboard players set Gesamt SpinneKill 35), lautet die Nachricht: Ergebnis: Es wurden 35 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"
   }
 ]
Benutzung der nbt-Eigenschaft: Wenn einen benannten Rüstungsständer in der Nähe hat (mit dem Befehl /summon minecraft:armor_stand ~ ~ ~ {CustomName:{text:"Wiki"} }) und eine Truhe an den Koordinaten 0,62,0 steht (mit dem Befehl /setblock 0 62 0 minecraft:chest{Items:[{id:"minecraft:emerald",count:42}]}), wird im Chat der Name und die Anzahl ausgegeben.
translate
/tellraw @p
 [
   {
     translate:"advancements.story.mine_diamond.title",
     color:"green"
   },
   { "text":"\n" },
   { "translate":"advancements.story.mine_diamond.description" }
 ]
Der Text "Diamanten! Beschaffe Diamanten" wird angezeigt.
/tellraw @p
 [
   { text:"Das ist unglaublich: " },
   {
     translate:"chat.type.advancement.goal",
     with:
       [
         "Ein >Schneegolem<",
         "Diamantenkönig"
       ]
   }
 ]
Wenn die Sprache "Deutsch" eingestellt ist, lautet der Textteil: "%s hat den Erfolg %s erzielt". Durch die with-Eigenschaft werden die beiden %s-Platzhalter durch "ein >Schneegolem<" und "Diamantenkönig" ersetzt.
click_event
/tellraw @p
 {
   text: "Klick mich",
   click_event:
     {
       action: "suggest_command",
       command: "/teleport @p 100 15 -50"
     }
 }
Wenn man "Klick mich" anklickt, wird der Befehl /teleport @p 100 15 -50 zur Teleportation in die Chat-Konsole kopiert, aber nicht ausgeführt.
/tellraw @p
 {
   text: "Klick mich",
   click_event:
     {
       action: "open_url",
       url: "https://minecraft.net"
     }
 }
Wenn man "Klick mich" anklickt, wird das Rückfrage-Fenster zum Öffnen der Webseite "http://minecraft.net" angezeigt.
/tellraw @p
 {
   text: "Klick mich",
   click_event:
     {
       action: "run_command",
       command: "/give @p minecraft:pumpkin"
     }
 }
Wenn man "Klick mich" anklickt, wird der Befehl /give @p minecraft:pumpkin in die Chat-Konsole kopiert und ausgeführt. Man erhält dann einen Kürbis in sein Inventar.
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"}
         ]
     }
 }
Hoverevent mit formatiertem Text.
/tellraw @p
 {
   text: "Hover mich",
   hover_event:
     {
       action: "show_item",
       id: "minecraft:pumpkin"
     }
 }
Hoverevent mit einfachem Gegenstand.
/tellraw @p
 {
   text: "Hover mich",
   hover_event:
     {
       action: "show_item",
       id: "minecraft:iron_pickaxe",
       components: {"minecraft:enchantments":{"minecraft:sharpness":1}, "minecraft:lore":["Zauberaxt"] }
     }
 }
Hoverevent mit einem Gegenstand mit mehr Eigenschaften.
/tellraw @p
 {
   text: "Hover mich",
   hover_event:
     {
       action: "show_entity",
       name: "DAS Huhn",
       id: "minecraft:chicken",
       uuid: "00000000-0000-0000-0000-000000000000"
     }
 }
Hoverevent mit einem Objekt (wobei angenommen wird, dass 00000000-0000-0000-0000-000000000000 die UUID eines Huhns ist). Tipp: Wird ein Objekt mit dem Befehl /summon erschaffen, so kann die UUID des Objekts durch Umschalt-Klick auf den Objekt-Namen in der Ausgabe des Befehls in die Chat-Eingabe eingefügt werden, während man den Befehl eintippt. Das funktioniert auch mit der Ausgabe einiger anderer Befehle, zum Beispiel /say @e[distance=..10,type=minecraft:cow].
sprite
/tellraw @s
 [
   {
     atlas:"minecraft:blocks",
     sprite:"block/emerald_block"
   }
 ]
Zeigt einen Sprite eines Smaragdblocks im Chat an.

Bedrock Edition

[Bearbeiten | Quelltext bearbeiten]
Befehl Beispiel
rawtext /tellraw @a { "rawtext" : [ { "text" : "Hallo Welt" } ] }
Dadurch wird eine Nachricht mit "Hallo Welt" an alle Spieler gesendet, die nur auf Englisch ist. Informationen zum Senden lokalisierter Texte finden sich unter Übersetzen.
/tellraw @a { "rawtext" : [ { "text":"Hallo" }, { "text" : " Welt" } ] }
Rohtext nimmt eine Reihe von Textobjekten auf. Jede Komponente in der Liste wird an die vorherige Komponente angehängt. Das Beispiel gibt das gleiche „Hallo Welt“ aus wie das erste Beispiel. Das Anhängen von Text kann nützlich sein, um 2 verschiedene lokalisierte Texte zu kombinieren oder jedem Wort eine andere Farbe zuzuweisen usw.
/tellraw @a { "rawtext" : [ { "text" : "Hallo\nNeue Zeile" } ] }
Mit „\n“ kann man eine Zeile nach unten gehen.
translate /tellraw @a { "rawtext": [ { "translate" : "commands.op.success" } ] }
Die Zeichenfolge, die für „translate“ bereitgestellt werden muss, ist der Name der Zeichenfolge in den Sprachdateien. In Standard-Minecraft ist beispielsweise „commands.op.success“ die Zeichenfolge, die angezeigt wird, wenn /op erfolgreich für einen Spieler verwendet wurde.
/tellraw @a { "rawtext" : [ { "text":"Hallo World", "translate":"commands.op.success" } ] }
Wenn „translate“ zusammen mit „rawtext“ angegeben wird, überschreibt „translate“ das Textobjekt. Dies gibt „Operator - Status erteilt: %s“ an alle Spieler aus. Beachte, dass das folgende Beispiel denselben Text ausgibt, da „text“ ignoriert wird, wenn „translate“ angegeben ist.
translate with /tellraw @a { "rawtext": [ { "translate" : "commands.op.success", "with": [ "Steve" ] } ] }
Im obigen Übersetzungsbeispiel wird „Operator - Status erteilt: %s“ ausgegeben. Um anstelle von %s einen Namen oder anderen Text anzuzeigen, muss auch „mit“ angegeben werden. Beachten Sie, dass „mit“ nur mit „übersetzen“ funktioniert und auch ein Array [] anstelle von geschweiften Klammern {} erfordert.
/tellraw @a { "rawtext": [ { "translate" : "commands.op.success", "with": { "rawtext": [ { "translate" : "item.apple.name" } ] } } ] }
Wenn man einen übersetzten Text innerhalb der „with“-Komponente verwenden möchte, muss es sich anstelle eines Arrays um eine andere rawtext-Komponente handeln (die aus einem Array von Textkomponenten besteht). Das folgende Beispiel gibt „Operator - Status erteilt: Apfel“ aus.
/tellraw @a { "rawtext": [ { "translate" : "Hallo %%s", "with": [ "Steve" ] } ] }
"translate" und "%s" können verwendet werden, ohne dass eine entsprechende Zeichenfolge in den Lokalisierungsdateien erforderlich ist. Dies gibt "Hallo Steve" an alle Spieler aus.
/tellraw @a { "rawtext": [ { "translate" : "Hallo %%s und %%s", "with": [ "Steve", "Alex" ] } ] }
%%s können mehrfach verwendet werden. Sie werden in der angegebenen Reihenfolge ausgefüllt. Es wird ausgegeben: "Hallo Steve und Alex"
/tellraw @a { "rawtext": [ { "translate" : "Hallo %%s und %%s", "with": { "rawtext" : [ { "text" : "Steve" }, { "translate" : "item.apple.name" } ] } } ] }
Man kann wieder eine rawtext-Komponente verwenden, um das einfache String-Array zu ersetzen. Es wird ausgegeben: "Hallo Steve und Apfel"
/tellraw @a { "rawtext" : [ {"translate" : "Hallo %%2 und %%1", "with": [ "Steve", "Alex"] } ] }
Die Reihenfolge, in der %s ausgefüllt werden soll, kann geändert werden, indem man sie stattdessen mit %%# gibt, wobei # durch eine tatsächliche Zahl ersetzt wird. Um beispielsweise die Position von Steve und Alex im obigen Beispiel zu vertauschen, führe stattdessen das Beispiel aus. Es wird ausgegeben: "Hallo Alex und Steve"
  1. 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.
  2. 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 /title und beschriebene Bücher. Funktioniert nicht für Bossleisten-Anzeigenamen oder -blöcke wie Schilder.
  3. 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.
  4. Inhalts-Textkomponente werden in der Reihenfolge translate, text, selector, score überprüft. Wenn mehrere vorhanden sind, wird das erste in der Liste verwendet.
  5. Die Anzeige der Punktzahl des Lesers funktioniert nur in Situationen, in denen eine Nachricht nur einen einzigen Leser hat. Das sind Chatnachrichten, Befehl /titleraw und beschriebene Bücher. Funktioniert nicht für Dinge wie Schilder, die mehr als einen „Leser“ haben können.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
Versionen der Java Edition
Vollversion
1.7 (13w37a)
1.8
14w02a
  • Neue Textkomponente insertion hinzugefügt.
14w07a
  • Neue Textkomponente score hinzugefügt.
14w20a
  • Der neue Befehl /title verwendet JSON-Text.
  • Neue Textkomponente selector hinzugefügt.
14w25a
1.9 (15w31a)
  • Es wird nur noch das strikte JSON-Format verwendet.
1.12 (17w16a)
  • Neue keybind-Textkomponente wird hinzugefügt, um sich auf die Tastatureinstellungen der Spieler beziehen zu können.
1.13
18w01a
  • Die Zielauswahl-Eigenschaft name erlaubt JSON-Texte.
  • Die Eigenschaft CustomName (bzw. Name bei Gegenstandsdaten) erfordert einen JSON-Text.
18w05a
18w20a
  • Die beiden Parameter prefix und suffix vom Befehl /team verwenden JSON-Text.
1.13-pre8
1.14
18w43a
  • Die Eigenschaft Lore (bei Gegenstandsdaten) erfordert einen JSON-Text.
  • Neue Chat-Komponenten nbt, block und entity.
19w44a
  • Neue Chat-Komponente interpret.
  • Die Chat-Komponente block verlangt die Koordinaten-Angaben in einem String und nicht in drei separaten Ganzzahlen.
19w08a
  • Das Escaping wird mit einer zusätzlichen Möglichkeit vereinfacht.
  • Alternativ von "{\"text\":\"JSON-Text\"}" kann auch '{"text":"JSON-Text"}' verwendet werden.
1.15
19w39a
  • Neue Chat-Komponente storage für das Anzeigen von NBT-Daten aus dem Datenspeicher im Chat.
19w41a
  • Neue Klick-Komponente copy_to_clipboard für die Textkomponente clickEvent.
1.16 (20w17a)
  • Neue Textkomponente font.
  • Neues Argument contents für hoverEvent, es ersetzt value jedoch ist das weiterhin nutzbar.
  • Die color-Komponente kann Hexadezimale RGB-Werte enthalten, in dem man ein # voranstellt. (Beispiel: "color":"#ff0088")
1.17 (21w15a)
  • Neue Chat-Textkomponente separator für das Ändern von Kommas in Auflistungen.
1.19.1
1.19.1-rc1
  • Das run_command Klick-Ereignis für Textkomponenten unterstützt nicht mehr das direkte Senden von Chat-Nachrichten.
    • Es werden nur noch Befehle unterstützt, daher sollte stattdessen ein Befehl wie Befehl /say verwendet werden.
    • Das bedeutet, dass Werte immer mit einem '/'-Vorsatz versehen werden müssen.
1.19.1-pre6
  • Das run_command-Klick-Ereignis für Textkomponenten unterstützt keine Befehle mehr, die Chat-Nachrichten senden.
1.19.4 (23w03a)
  • Ein optionales fallback-Feld wird zu der translate-Textkomponenten hinzugefügt.
    • Das neue Feld ist ein String, der anstelle der Übersetzung verwendet wird, wenn es fehlt.
1.20.3
23w40a
  • type-Textkomponenten hinzugefügt.
  • Das Feld contents.id in show_entity kann die UUID als Array von ints darstellen.
  • Zahlen und Boolesche Werte werden nicht mehr automatisch in Zeichenfolgen umgewandelt und sind daher für die Textkomponente ungültig.
  • Einige Fehler, die zuvor ignoriert wurden, sind schwerwiegende Fehler.
23w42a
  • Änderungen an der Serialisierung der Chat-Komponente: Komponenten des Typs nbt haben das Feld source mit zulässigen Werten: entity, block und storage.
1.21.2 (24w33a)
  • Ungültige selector-Angaben in Chatkomponenten führen dazu, dass Befehle nicht analysiert werden können, anstatt in eine leere Zeichenfolge aufgelöst zu werden.
1.21.4 (24w44a)
  • Optionales shadow_color-Stilfeld zu Textkomponenten hinzugefügt, das die Schatteneigenschaften des Textes überschreibt.
1.21.5
25w02a
  • Textkomponenten werden als NBT gespeichert und mit SNBT an Befehle übergeben.
  • Das Feld hoverEvent wird in hover_event umbenannt.
    • Das veraltete Feld value (das aus einer gerenderten Textkomponente geparst wurde) wird nicht mehr unterstützt.
    • Für die Aktion show_text:
      • Das Feld contents wird in text umbenannt.
    • Für die Aktion show_item:
      • Das Feld contents wird integriert.
      • Wurde contents nur als Gegenstands-ID angegeben, wird es durch das vollständige Format ersetzt und integriert.
    • Für die Aktion show_entity:
      • Das Feld contents wird integriert.
      • Das Feld id wird in uuid umbenannt.
      • Das Feld type wird in id umbenannt.
  • Das Feld clickEvent wird in click_event umbenannt.
    • Für die Aktion open_url:
      • Das Feld value wird in url umbenannt.
      • Das Klick-Ereignis wird nicht mehr geparst, wenn es sich nicht um eine gültige URI mit den Schemata https:// oder http:// handelt, anstatt einfach nicht zu funktionieren.
    • Für die Aktion open_file:
      • Das Feld value wird in path umbenannt.
    • Für die Aktion run_command:
      • Das Feld value wird in command umbenannt.
      • Das Klick-Ereignis wird nicht mehr geparst, wenn der Befehl unzulässige Zeichen enthält, anstatt einfach nicht zu funktionieren.
      • Es ist nicht mehr erforderlich, dass das angegebene Befehlsfeld mit einem /-Präfix beginnt.
    • Für die Aktion suggest_command:
      • Das Feld value wird in command umbenannt.
      • Das Klick-Ereignis wird nicht mehr geparst, wenn der Befehl unzulässige Zeichen enthält, anstatt einfach nicht zu funktionieren.
    • Für die Aktion change_page:
      • Das Feld value wird in page umbenannt.
      • Der Seitenwert erfordert eine positive ganze Zahl anstelle einer Zeichenkette.
25w03a
  • Das Feld text in der Aktion show_text wird in value umbenannt.
25w04a
  • SNBT (textuelle Darstellung von NBT-Daten) wird erweitert, um heterogene Listen zu akzeptieren, d. h. solche, deren Elemente nicht vom gleichen Typ sind.
25w05a
25w09a
  • Das Textformat zur Beschreibung von Textkomponenten in Befehlen wird erweitert. Unicode und Escape-Sequenzen werden wieder unterstützt.
1.21.6
25w20a
  • Klickereignisse click_event: Neue Klickaktion minecraft:custom wird hinzugefügt.
  • Dialog-Klickereignis: Neue Aktion show_dialog wird hinzugefügt.
1.21.6-pre1
  • Die vom Klickereignis "custom" gesendete Nutzlast über payload kann ein beliebiges NBT-Datenelement sein.
1.21.9
25w32a
  • Neue Chat-Komponenten atlas und sprite.
25w33a
  • run_command-Klickereignis:
    • Bisher wurde ein Befehl, der eine signierte Nachricht erforderte (Befehl /say, Befehl /me, Befehl /msg, Befehl /tell, Befehl /w, Befehl /teammsg, Befehl /tm), stillschweigend verworfen.
    • Stattdessen wird ein Bildschirm angezeigt, in dem der Benutzer den Befehl in das Chatfenster einfügen oder in die Zwischenablage kopieren kann, falls das Chatfenster nicht geöffnet werden kann.
25w34a
  • Fettdruck und Kursivschrift werden beim Zeichnen von Sprites ignoriert.
25w35a
  • Die Objekt-Textkomponente wird aktualisiert, um die Anzeige anderer Nicht-Zeichen-Objekte als Teil des Textes zu unterstützen.
26.1 (26.1-snap-8)
  • minecraft:nbt: Eigenschaften, die mit der minecraft:nbt-Textkomponente aufgelöst werden, wenn das Feld interpret auf false gesetzt ist, werden nun formatiert ausgegeben, anstatt in eine einzelne text-Komponente zusammengefasst zu werden. Inhalte der Felder nbt und block werden bei einem Parsing-Fehler nicht mehr stillschweigend verworfen. Das Feld entity akzeptiert keine nachfolgenden Daten mehr nach einem Selektor. Eine neue Option namens plain wurde hinzugefügt, um die Formatierung von formatiertem Text zu entfernen.
  • minecraft:selector: Das Feld selector akzeptiert keine nachfolgenden Daten mehr nach einem Selektor.