JSON-Text

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

Ein JSON-Text ist ein Text im JSON-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:

Eigenschaften[Bearbeiten | Quelltext bearbeiten]

Ein JSON-Text kann folgende Eigenschaften haben:

  • Formatierungen: einzelne Textteile können unterschiedliche Farben und Schriftformatierungen haben wie z.B. Fettschrift.
  • Maus-Sensitivität: einzelne Textteile können einen Tooltip-Text anzeigen, wenn man mit der Maus darüber fährt (mit hoverEvent).
  • Maus-Klick-Sensitivität: einzelne Textteile können angeklickt werden (mit clickEvent) 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 JSON-Texten gedacht, um Punkte für Punkte-Ziele zu erhöhen.
  • 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 die Zielauswahl @p enthält, wird dort immer der Empfänger des JSON-Textes 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 {"text":"\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".

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. Das Escaping wird notwendig, wenn man geschachtelte JSON-Texte konstruiert, z.B. bei einem Schild, das auf dem Befehlsblock stehen soll, der es erzeugt. Zuerst der normale JSON-Schildtext:

/setblock ~ ~1 ~ minecraft:oak_sign{front_text:{messages:["{\"text\":\"Zeile 1\"}","\"\"","\"\"","\"\""]},is_waxed:true} replace

Jetzt ein JSON-Schildtext als Liste mit verschiedenen Formatierungen:

/setblock ~ ~1 ~ minecraft:oak_sign{front_text:{messages:["[{\"text\":\"Blau \",\"color\":\"blue\"},{\"text\":\" Rot\",\"color\":\"red\"}]","\"\"","\"\"","\"\""]},is_waxed:true} replace

Benötigt man eine weitere Verschachtelung, muss man sowohl das Anführungszeichen als auch den davorstehenden Backslash escapen. Aus den zwei Zeichen \" werden dann vier: \\\".

/setblock ~ ~1 ~ minecraft:oak_sign{
  front_text:
     {messages:[
        "{
           \"text\":\"Hier klicken\",
           \"clickEvent\":
           {
             \"action\":\"run_command\",
             \"value\":\"/tellraw @p {
                      \\\"text\\\":\\\"Du hast mich angeklickt!\\\"
                      }\"
           }
        }","\"\"","\"\"","\"\""]
     },
   is_waxed:true
} replace

In der nächsten Verschachtelungstiefe muss man wieder vor jedes Zeichen einen Backslash schreiben. Aus den vier Zeichen \\\" werden dann acht: \\\\\\\". Hier erzeugt das Schild beim Anklicken ein zweites Schild mit rotem Text genau da, wo der Spieler steht.

/setblock ~ ~1 ~ minecraft:oak_sign{
  front_text:
     {messages:[
        "{
           \"text\":\"Hier klicken\",
           \"clickEvent\":
           {
             \"action\":\"run_command\",
             \"value\":\"/execute at @p run setblock ~ ~ ~ minecraft:oak_sign{
                           front_text:
                              {messages:[
                                 \\\"{
                                       \\\\\\\"text\\\\\\\":\\\\\\\"Roter Text\\\\\\\",
                                       \\\\\\\"color\\\\\\\":\\\\\\\"red\\\\\\\"
                                 }\\\",\\\"\\\\\\\"\\\\\\\"\\\",\\\"\\\\\\\"\\\\\\\"\\\",\\\"\\\\\\\"\\\\\\\"\\\"]
                                       },
                                     is_waxed:true
                         } replace\"
           }
        }","\"\"","\"\"","\"\""]
     },
   is_waxed:true
} replace

Elemente eines formatierten JSON-Textes[Bearbeiten | Quelltext bearbeiten]

  • : Ein Text kann aus mehreren Textteile bestehen, die in einer Liste zusammengefasst werden. Jeder Textteil kann individuell formatiert werden. Wenn die Formatierung für den gesamten Text gleich ist, ist nur ein einziger Textteil nötig. Dann können die Listenklammern weggelassen werden. Falls man eine Liste verwendet, vererbt der erste Textteil seine Formatierung an die weiteren. Wenn man das vermeiden möchte, nimmt man als ersten Textteil einen Leertext. Ein einfacher Freitext kann auch einfach als JSON-Zeichenkette angegeben werden, zum Beispiel "Test" oder ein Leertext als "".
    • : Ein Textteil.
      • text: Der Textteil ist ein Freitext. Eine Zielauswahl in diesem Text hat keine Wirkung und wird wie ein Text behandelt. Es werden jedoch bestimmte Zeichenfolgen interpretiert: \n erzeugt einen Zeilenumbruch und die Verwendung von Formatierungscodes ist möglich, indem das Paragrafenzeichen als Unicode-Zeichen \u00a7 eingegeben wird.
      • selector: Der Textteil ist eine Zielauswahl. Als Text werden die im Augenblick der Texterzeugung durch die Zielauswahl bestimmten Spielernamen angezeigt. Sollte es keinen passenden Spieler geben, wird dieser Eintrag zu einem Leertext. Ein "selector"-Textteil ermöglicht die Integration von Spielernamen im Text, bestimmt aber nicht, wer den Text erhält. Das wird außerhalb des Textes festgelegt.
      • keybind: Der Textteil ist eine Variable, die für eine Aktion steht. Die für diese Aktion im Steuerungsmenü eingestellte Taste wird in den Text eingefügt. Beispielsweise wird für den Wert key.inventory standardmäßig E eingefügt. Die einzelnen Variablen sind in der Datei options.txt zu finden. Dabei ist das Präfix key_ der Aktionsnamen wegzulassen (zum Beispiel key.use).
        Es können auch die Tastennamen wie key.mouse.right verwendet werden, dann wird aber immer die gleiche Taste angezeigt, unabhängig davon, was im Steuerungsmenü eingestellt ist.
      • translate: Der Textteil ist eine Variable aus einer Minecraft-Sprachdatei. Die Standard-Sprachdateien stehen im Ordner .minecraft/assets. Die Variablen sind in allen Sprachdateien identisch. Bei der Verwendung von "translate" wird der in der aktuell eingestellten Sprache hinter der Variable stehende Text zum Textteil. "translate" wird von Minecraft selbst z.B. im Zusammenhang mit dem "hoverEvent" "show_item" verwendet, d.h. wenn man mit der Maus über einen Gegenstand im Inventar fährt, wird der Name in der aktuell eingestellten Sprache angezeigt. Man kann auch einen Freitext verwenden, der, wenn er nicht in den Sprachdateien vorhanden ist, als Freitext dargestellt wird. Das könnte man genauso mit der "text"-Eigenschaft lösen, aber bei "translate" kann man zusätzlich die "with"-Einfügungen verwenden, die man auch formatieren kann.
      • with (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 im JSON-Format, 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.
      • fallback: (nur in Verbindung mit "translate"): Das Feld ist ein String, der anstelle der Übersetzung verwendet wird, wenn es fehlt. Beispiel: {"translate":"diese.textid.ist.falsch","fallback": "Konnte Text-ID nicht finden"}
      • nbt: NBT-Pfad zu NBT-Daten: Zusätzlich zum NBT-Pfad muss genau einer der Parameter block, entity oder storage angegeben werden, um festzulegen, wo die anzuzeigenden NBT-Daten herkommen.
      • block (nur in Verbindung mit "nbt"): Die Koordinaten eines Blocks, dessen NBT-Daten angezeigt werden sollen, im Format x y z.
      • entity (nur in Verbindung mit "nbt"): Zielauswahl für ein Objekt, dessen NBT-Daten angezeigt werden sollen.
      • storage (nur in Verbindung mit "nbt"): Datenspeicher, dessen NBT-Daten angezeigt werden sollen.
      • interpret (nur in Verbindung mit "nbt"): Bei true werden die NBT-Daten als Textteil interpretiert und können somit wiederum JSON-Text-Formatierungen enthalten.
      • separator (in Verbindung mit "selector" oder "nbt"): Ersetzt das Komma in Auflistungen durch den hier angegebenen Text. Beispiele: {"selector":"@e[type=chicken]","separator":"_"} und {"nbt":"CustomName","entity":"@e[type=chicken]","interpret":true,"separator":{"text":"*","color":"red"}}.
      • score: Der Textteil ist ein Anzeigetafel-Punktestand. Dabei wird im Augenblick der Texterzeugung der momentane Punktestand im Text gespeichert. Dieser Wert wird dann auch weiterhin angezeigt, wenn sich der Punktestand ändert. "score" funktioniert nicht in "hoverEvents".
        • objective: der Name eines Anzeigetafel-Ziels. Der Name wird nicht angezeigt, sondern dient ebenfalls zur Identifizierung des richtigen Punktestandes.
        • name: der Name eines Spielers, eines Anzeigetafel-Zählers (das ist ein Spielername, der mit # beginnt) oder einer Zielauswahl. Der Name wird nicht angezeigt, sondern dient zur Identifizierung des richtigen Punktestandes. Wenn der Spieler (oder Zähler) mit dem Namen noch keinen Punktestand hat (auch nicht 0 Punkte), wird der Textteil zu einem Leertext. Daher empfiehlt es sich, allen infrage kommenden Spielern initial 0 Punkte zu geben, damit zumindest dies angezeigt wird. Wenn eine Zielauswahl verwendet wird, die nicht genau ein Ergebnis liefert (also keins oder mehr als eines z.B. bei "@a"), wird der tellraw-Befehl nicht erfolgreich durchgeführt. Die Fehlermeldung lautet dann: "Dieses Objekt kann nicht gefunden werden".
        • value (optional): speichert den anzuzeigenden Wert: Nach der Ausführung des Befehls ermittelt Minecraft den Punktestand des Spielers bzw. Objektes anhand der "name"- und "objective"-Eigenschaften und fügt eine "value"-Eigenschaft hinzu, die den Punktestand angibt.
          Sollte diese Eigenschaft bereits vorhanden sein, wird sie nicht ersetzt, wodurch der Punktestand immer auf dem einmal ermittelten Stand bleibt, auch wenn man den JSON-Text mehrfach zu unterschiedlichen Zeitpunkten liest. Gibt man diese Eigenschaft jedoch beim Ausführen eines Befehls mit an, ignoriert Minecraft sie und fügt den tatsächlichen Punktestand ein.
      • font: der interne Name der für den Textteil zu verwendenden Schriftart: Standardmäßig wird minecraft:default verwendet. Die Schriftart minecraft:uniform ist die kleinere, für die Option "Unicode erzwingen" (im Sprachmenü) verwendete Schriftart. Ist diese Option eingeschaltet, ist das gleichbedeutend mit minecraft:default. Außerdem kann die Schriftart minecraft:alt für Beschriftungen im Standard Galactic Alphabet verwendet werden, dabei werden jedoch nur Buchstaben (und Leerzeichen) unterstützt, andere Zeichen erscheinen als Rechteck.
      • color: einer der folgenden 16 Farbnamen zum Einfärben des Textteils: "white", "black", "yellow", "gold", "aqua", "dark_aqua", "blue", "dark_blue", "light_purple", "dark_purple", "red", "dark_red", "green", "dark_green", "gray", "dark_gray".
        Man kann als Farbe auch einige Textformatierungen wie "bold" angeben, die auch zu fett gedruckter, weißer Schrift führt. Interessanterweise funktioniert dies bei underlined nicht. Wegen der Übersichtlichkeit ist es jedoch ratsam, stets die dafür vorgesehene "bold"-Eigenschaft zu verwenden.
      • bold: Bei true wird der Textteil fett formatiert.
      • italic: Bei true wird der Textteil kursiv formatiert.
      • underlined: Bei true wird der Textteil unterstrichen formatiert.
      • strikethrough: Bei true wird der Textteil durchgestrichen formatiert.
      • obfuscated: Bei true wird der Textteil verschleiert formatiert, d.h. er wird unlesbar, weil sich die Buchstaben ständig ändern.
      • hoverEvent: zusätzlicher Text, der beim Darüberfahren mit der Maus über diesen Textteil anzeigt wird: Für Schilder und den Befehl /title ist das Darüberfahren nicht möglich und bleibt dort funktionslos.
        • action: eine der Aktionen "show_text", "show_item" oder "show_entity":
          "show_text" zeigt einen JSON-Text an.
        • contents: der anzuzeigende JSON-Text
          "show_item" zeigt die Beschreibung eines Gegenstands an (wie wenn man im Inventar mit der Maus über den Gegenstand fährt).
        • contents: ID-Name des anzuzeigenden Gegenstands
        • contents: alternativ Gegenstandsdaten des anzuzeigenden Gegenstands, dabei sind die einzelnen Einträge SNBT-Zeichenketten
          "show_entity" zeigt die Beschreibung eines Objektes an, wenn die erweiterten Schnellinfos mit F3 + H aktiviert wurden (sonst wird nichts angezeigt).
        • contents
          • id: UUID des Objektes im hexadezimalen Format mit Bindestrichen
          • type: ID-Name des Objektes
          • name (optional): Hier kann für den anzuzeigenden Namen des Objektes ein beliebiger Freitext eingegeben werden; das Objekt hat muss nicht tatsächlich diesen Namen haben.
      • clickEvent: Lässt den Textteil auf das Anklicken mit der Maus reagieren. Für den Befehl /title ist Anklicken nicht möglich und bleibt dort funktionslos. Das Objekt hat folgende Eigenschaften:
        • action: eine der Aktionen "run_command", "suggest_command", "open_url", "change_page" und "copy_to_clipboard":
          • Bei "suggest_command" wird der Freitext (vorzugsweise ein beliebiger Minecraft-Befehl, aber es muss kein Befehl sein) beim Anklicken des JSON-Textes ins Chat-Fenster des Empfängers gestellt und nicht ausgeführt. Der Empfänger kann dann entscheiden, ob er den Befehl (wenn es einer ist) ausführt. "suggest_command" funktioniert nur für den Befehl /tellraw, nicht für Bücher oder Schilder.
          • Bei "run_command" wird der Freitext als Befehl (auch /tellraw) im Chat-Fenster des Empfängers ausgeführt. Der Schrägstrich muss eingegeben und die 256-Zeichen-Grenze beachtet werden. Außerdem muss der Spieler das Recht haben, den Befehl auszuführen.
          • Bei "open_url" wird der Freitext als Webadresse interpretiert. Beim Anklicken öffnet sich ein Rückfrage-Fenster, das die Webadresse anzeigt und ermöglicht, sie automatisch im Standard-Browser zu öffnen oder sie in die Zwischenablage des Betriebssystems zu kopieren. "open_url" funktioniert nur für den Befehl /tellraw und für Bücher, nicht für Schilder.
          • Bei "change_page" wird der Freitext als Seitenzahl interpretiert. Diese Aktion ist für Bücher gedacht und funktioniert nur bei ihnen. Beim Anklicken des so markierten Textes wird auf die angegebene Seite gewechselt. So lässt sich ein Inhaltsverzeichnis realisieren.
        • value: der Freitext für die Aktion (Befehl, URL oder Seitenzahl)
      • insertion: ein Freitext, der in der Chatzeile angehängt wird (soweit Platz ist, maximal 256 Zeichen), wenn man mit ⇧ Umschalttaste auf den Textteil klickt. "insertion" wird im Spiel verwendet, wenn man sich z.B. mit dem Befehl /say @e alle Objekte anzeigen lässt und dann mit ⇧ Umschalttaste auf eines in der Liste klickt. Dann wird die Objekt-UUID in der Chatzeile angehängt. "insertion" funktioniert nur beim Befehl /tellraw.
      • extra: eine Liste mit weiteren JSON-Textteilen, die die Formatierungen des zugehörigen Textteils erben.

Beispiele[Bearbeiten | Quelltext bearbeiten]

Verschachtelte JSON-Texte können schnell unübersichtlich werden und man übersieht fehlende Klammern und Kommata. Daher ist es sinnvoll, ab einer gewissen Komplexität den JSON-Text strukturiert aufzubauen. Der JSON-Text kann auch in dieser strukturierten Form in einen Befehlsblock kopiert werden, es ist nicht notwendig, die Leerzeichen und Zeilenumbrüche zu entfernen.

Beispiele für einfache Formatierungen[Bearbeiten | Quelltext bearbeiten]

Kompletter Text gleichbleibend formatiert (grün):

/tellraw @p {"text":"Dieser Text ist grün", "color":"green"}

Einzelne Textteile unterschiedlich formatiert in einer Liste:

/tellraw @p
 [
   {"text":"Nur ein "},
   {"text":"Wort", "color":"green"},
   {"text":" ist grün"}
 ]

Das erste Listenelement vererbt seine Formatierung, die weiteren nicht:

/tellraw @p
 [
   {"text":"Fettgrün ", "color":"green", "bold":true},
   {"text":"überall ", "italic":true},
   {"text":"bis hier", "underlined":true}
 ]

Das erste Listenelement wird leer gelassen, wenn die Vererbung stört:

/tellraw @p
 [
   "",
   {"text":"Fettgrün ", "color":"green", "bold":true},
   {"text":"hier nicht ", "italic":true},
   {"text":"hier auch nicht", "underlined":true}
 ]

Vererbung der gelben Farbe mit "extra"-Eigenschaft:

/tellraw @p
 [
   "",
   {"text":"Grün ", "color":"green"},
   {"text":"Gelbkursiv", "color":"yellow",
    "extra":
    [
      {"text":" auch im"},
      {"text":" extra", "italic":true},
      {"text":"-Teil"}
    ]
   },
   {"text":" Standard-Weiß"}
 ]

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.

komplexere Beispiele[Bearbeiten | Quelltext bearbeiten]

/tellraw @p 
[
	{"text":""},
	{"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.

/tellraw @p 
[
	{ "text":"Hier gibt's "},
	{
		"text":">MC<, ",
		"hoverEvent":
		{
			"action":"show_text",
			"contents":"die Minecraft-Webseite"
		},
		"clickEvent":
		{
			"action":"open_url",
			"value":"https://minecraft.net"
		}
	},
	{ "text":"hier " },
	{
		"text":">Diamanten< ",
		"hoverEvent":
		{
			"action":"show_text",
			"contents":
			[
				"",
				{
					"translate":"advancements.story.mine_diamond.title",
					"color":"green"
				},
				{ "text":"\n" },
				{ "translate":"advancements.story.mine_diamond.description" }
			]
		},
		"clickEvent":
		{
			"action":"suggest_command",
			"value":"/teleport @p 100 15 -50"
		}
	},
	{ "text":"und das ist unglaublich: " },
	{
		"translate":"chat.type.advancement.goal",
		"with":
		[
			"Ein >Schneegolem<",
			"Diamantenkönig"
		],
		"hoverEvent":
		{
			"action":"show_entity",
			"contents":{"name":"Eisverkäufer", "type":"minecraft:snowball", "id":"00000000-0000-0000-0000-000000000000"}
		}
	},
	{ "text":" und betrachtete seinen neuen Fortschritt durch das Drücken der Taste \"" },
	{
		"keybind":"key.advancements",
		"bold":true
	},
	{ "text":"\". Dabei verlor er einen " },
	{
		"text":">???<",
		"hoverEvent":
		{
			"action":"show_item",
			"contents":{"id":"minecraft:pumpkin", "count":1}
		},
		"clickEvent":
		{
			"action":"run_command",
			"value":"/give @p minecraft:pumpkin 1"
		}
	},
	{
		"text":" und sagte (hier Shift-Klick)",
		"insertion":"Alles prima!"
	}
]

Die obige Nachricht lautet:Hier gibt's >MC<, hier >Diamanten< und das ist unglaublich: Ein >Schneegolem< hat das Ziel Diamantenkönig erreicht und betrachtete seinen neuen Fortschritt durch das Drücken der Taste "L". Dabei verlor er einen >???< und sagte (hier Shift-Klick). Die Nachricht hat neun Textteile:

  • Der 1., 3., 5., 7. und 9. Textteil ist unformatiert und reagiert nicht auf die Maus. Nur der 8. Textteil ist formatiert, die anderen Texteile sind ebenfalls unformatiert, reagieren aber auf die Maus:
  • Wenn man mit der Maus über >MC< fährt, wird der Tooltip-Text: "die Minecraft-Webseite" angezeigt. Wenn man >MC< anklickt, wird das Rückfrage-Fenster zum Öffnen der Webseite "http://minecraft.net" angezeigt.
  • Wenn man mit der Maus über >Diamanten< fährt, wird der Tooltip-Text: "Diamanten! Beschaffe Diamanten" angezeigt. Wenn man >Diamanten< anklickt, wird der Befehl /teleport @p 100 15 -50 zur Teleportation in die Chat-Konsole kopiert, aber nicht ausgeführt.
  • Der 6. Textteil übersetzt eine Sprachvariable. 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. Wenn man F3 + H gedrückt hat und mit der Maus über den Text fährt, erscheinen in einem blauen Rahmen die drei Zeilen: "Eisverkäufer", "Type: snowball" und "Personalausweis zu Hause vergessen". Es müssen Anführungszeichen mit Escaping verwendet werden, weil sie innerhalb der Anführungszeichen des "value"-Textes stehen.
  • Als Taste ist die zum Öffnen des Fortschrittsfensters festgelegte Taste in Fettschrift angegeben. Standardmäßig ist dies die Taste L.
  • Wenn man mit der Maus über >???< fährt, wird der Tooltip-Text: "Kürbis" angezeigt. Wenn man >???< 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.
/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.

Benutzung der "nbt"-Eigenschaft:

/tellraw @p 
[
	{ "text":"Name des nächsten Rüstungsständers: " },
	{
		"nbt":"CustomName",
		"entity":"@e[type=minecraft:armor_stand,sort=random,limit=1]"
	},
	{ "text":"\n\nAnzahl der Gegenstände im ersten Inventarplatz des Blocks an den Koordinaten 0, 62, 0: " },
	{
		"nbt":"Items[{Slot:0b}].count",
		"block":"0 62 0"
	}
]

Wenn zum Beispiel eine Truhe an den Koordinaten 0,62,0 steht (oder mit dem Befehl /setblock 0 62 0 minecraft:chest{Items:[{id:"minecraft:emerald",count:42}]} erzeugt wurde), wird im Chat die Anzahl ausgegeben.

Hoverevent mit formatiertem Text:

/tellraw @p 
{
	"text":"Hover mich",
	"hoverEvent":
		{
			"action":"show_text",
			"contents":
				[
					{"text":"weiß ","color":"white"},
					{"text":"gold ","color":"gold"},
					"weiß\nneue Zeile"
				]
		}
}

Hoverevent mit einfachem Gegenstand:

/tellraw @p 
{
	"text":"Hover mich",
	"hoverEvent":
		{
			"action":"show_item",
			"contents":"minecraft:pumpkin"
		}
}

Hoverevent mit einem Gegenstand mit mehr Eigenschaften:

/tellraw @p 
{
	"text":"Hover mich",
	"hoverEvent":
		{
			"action":"show_item",
			"contents":
				{
					"id": "minecraft:iron_pickaxe",
					"components": {"minecraft:enchantments":{"minecraft:sharpness":1}, "minecraft:lore":["\"Zauberaxt\""] }
				}
		}
}

Hoverevent mit einem Objekt (wobei mit dem Befehl /summon minecraft:chicken ~ ~ ~ {UUID:[I;0,0,0,0]} sichergestellt wird, dass 00000000-0000-0000-0000-000000000000 die UUID eines Huhns ist):

/tellraw @p 
{
	"text":"Hover mich",
	"hoverEvent":
		{
			"action":"show_entity",
			"contents":
				{
					"id": "00000000-0000-0000-0000-000000000000",
					"type":"minecraft:chicken",
					"name": "DAS Huhn"
				}
		}
}

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

Geschichte[Bearbeiten | Quelltext bearbeiten]

Versionsgeschichte 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-Text-Komponente 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 Text-Komponente 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-Komponente 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 wurde zu der translate-Textkomponenten hinzugefügt.
    • Das neue Feld ist ein String, der anstelle der Übersetzung verwendet wird, wenn es fehlt.
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.