Brauchen Sie Hilfe mit einem bestimmten Befehl!

Ich brauche Hilfe mit einem bestimmten Befehl, den ich in einem neuen Spiel verwende, das ich innerhalb von Minecraft schaffe. Der Befehl ist:

/give @p sign 1 0 {BlockEntityTag:{Text1:"{"text":" [MF2]","color":"gold","clickEvent": {"action":"run_command","value":"tellraw @a [""{"text":"[MF2] ","color":"gold"},{"selector":"@p","color":"dark_aqua"},{"text":" is now an admin of the server!","color":"white"}]"}}",Text3:"{"text":"Click to join Admin","color":"dark_aqua","clickEvent": {"action":"run_command","value":"scoreboard teams join admin @p"}}"},display: {Name:"Custom Sign"}} 

Wenn ich den Befehl / tellraw herausnehme, dann funktioniert der Befehl gut, aber ich brauche den Befehl dort, um dem Spiel bekannt zu geben, dass ein neuer Admin beigetreten ist.

Mit dem Befehl tellraw ist die Fehlermeldung folgende:

 Data tag parsing failed: Unexpected token 't' at: text":" [MF2]","color":"gold","clickEvent":{"action":"run_command","value":"tellraw @a [""{"text":"[MF2] ","color":"gold"}, {"selector":"@p","color":"dark_aqua"},{"text":" is now an admin of the server!","color":"white"}]"}}",Text3:"{"text":"Click to join Admin","color":"dark_aqua","clickEvent": {"action":"run_command","value":"scoreboard teams join admin @p"}}" 

Wenn jemand weiß, wie man das repariert, lass es mich wissen.

-Dyl

Schau dir diesen Teil an, der den ersten Fehler verursacht:

 Text1:"{"text 
  1. Minecraft liest Text: und erwartet einen String (umgeben von Anführungszeichen) zu folgen
  2. Minecraft liest " , so beginnt das Lesen der Zeichenfolge mit Text1 (der Schlüssel)
  3. Minecraft liest { als String
  4. Minecraft liest " , hört also auf, den String zu lesen und erwartet nun ein Komma, um das nächste Key-Value-Paar zu starten, zB: Text1:"Hello",Text2:"World"
  5. Minecraft findet t stattdessen, also wirft der unerwartete Tokenfehler auf

Um dies zu beheben, müssen Sie entkommen (setzen Sie einen Backslash vor) Anführungszeichen, die Teil des JSON sind. \" Sagt Minecraft zu lesen " wie ein anderes Zeichen in der Zeichenfolge, anstatt zu stoppen Lesen der Zeichenfolge, da die " ist ein Teil der JSON anstatt der Top-Level-NBTData.

Noch mehr verwirrend ist, wenn du einen tellraw-Befehl hast, der JSON benötigt, im Zeichen des Textes JSON. Sie müssen nun dem Backslash selbst ( \\ ) vor dem Anführungszeichen ( \" ) entgehen, damit es nicht als NBTData gelesen wird, noch als Zeichen des Textes JSON, sondern als Teil eines Strings im Zeichen des Textes JSON.

Vollständig fester Befehl:

 /give @p sign 1 0 {BlockEntityTag:{Text1:"{\"text\":\"[MF2]\",\"color\":\"gold\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"tellraw @a [{\\\"text\\\":\\\"[MF2] \\\",\\\"color\\\":\\\"gold\\\"},{\\\"selector\\\":\\\"@p\\\",\\\"color\\\":\\\"dark_aqua\\\"},{\\\"text\\\":\\\" is now an admin of the server!\\\",\\\"color\\\":\\\"white\\\"}]\"}}",Text3:"{\"text\":\"Click to join Admin\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"scoreboard teams join admin @p\"}}"},display:{Name:"Custom Sign"}} 

In der Zukunft, verwenden Sie einen Generator, oder verwenden Sie einen trigger / scoreboard Befehl, um die tellraw Befehl, da dies kann ziemlich verwirrend und ärgerlich, um Fehler zu finden.