Befehl/data

Aus Minecraft Wiki
Zur Navigation springen Zur Suche springen
Dieser Inhalt ist nur für die Java Edition.
/data
Operator-Level
benötigt

2

Einschränkungen

Keine

/data verändert oder zeigt die Eigenschaften von Kreaturen, Blöcken und Datenspeichern an.

/data ...
... get ...
... (block <Position>|entity <Objekt>|storage <Datenspeicher>) [<Pfad>] [<Skalierung>]
... merge ...
... (block <Position>|entity <Objekt>|storage <Datenspeicher>) <NBT-Daten>
... modify (block <Position>|entity <Objekt>|storage <Datenspeicher>) <Pfad> ...
... append ...
... insert <Index> ...
... merge ...
... prepend ...
... set ...
... compute (block <Position>|entity <Objekt>|default) (float|integer) <Zahlenanbieter>
... from (block <Position>|entity <Objekt>|storage <Datenspeicher>) [<Pfad>]
... string (block <Position>|entity <Objekt>|storage <Datenspeicher>) [<Pfad>] [<Anfang>] [<Ende>]
... value <Wert>
... remove ...
... (block <Position>|entity <Objekt>|storage <Datenspeicher>) <Pfad>
/data ...
... get ...
... block <Position> ...
... entity <Objekt> ...
... storage <Datenspeicher> ...

... [<Pfad>] [<Skalierung>]

... merge ...

... <NBT-Daten>

... modify ...

... <Pfad> ...

... append ...
... compute ...
... block <Position> ...
... entity <Objekt> ...
... default ...
... float ...
... <Zahlenanbieter>
... integer ...
... from ...
... block <Position> ...
... entity <Objekt> ...
... storage <Datenspeicher> ...
... [<Pfad>]
... string ... ... [<Pfad>] [<Anfang>] [<Ende>]
... value <Wert>
... insert <Index> ...
... merge ...
... prepend ...
... set ...
... remove ...

... <Pfad>

Parameter-Argumente

[Bearbeiten | Quelltext bearbeiten]

<Position>

Die Position des Ziel-Blockobjekts, deren NBT gelesen oder geschrieben werden soll.
Muss eine Blockposition sein, die aus den Koordinaten <X>, <Y> und <Z> besteht, die jeweils eine Ganzzahl oder eine Tilde- (~) oder Zirkumflex-Notation (^) sein muss.

<Objekt>

Gibt ein Objekt an, auf deren NBT zugegriffen werden soll.
Muss ein Spieler, eine Zielauswahl oder eine UUID sein.

<Datenspeicher>

Gibt den Namen eines zu Datenspeichers an, auf dessen NBT zugegriffen werden soll.
Der Datenspeicher ist unabhängig von der Dimension in der man sich befindet und ist immer zugreifbar.

<Pfad>

Gib den abzurufenden oder zu entfernenden NBT-Pfad an.
Der NBT-Pfad zeigt an, auf welche NBT-Eigenschaft zugegriffen werden soll.

<Skalierung>

Sagt aus, um welchen Faktor der NBT-Wert multipliziert werden soll.
Die Sakalierung ist für Kommazahl-Eigenschaften (wie float und double) gedacht, deren Nachkommastellen bei der Übertragung ansonsten verloren gehen würden.

<NBT-Daten>

Gib eine Verbundtyp-Eigenschaft an, das an beliebiger Stelle zusammengeführt werden soll.
Die NBT-Daten sind die Eigenschaften des Objektes, Blockes oder Datenspeichers, die geändert werden sollen.

<Index>

Gib den Index eines Elements innerhalb einer Liste an.
Der Index muss eine Ganzzahl sein. Er darf auf negativ sein, um vom Ende aus auf die Liste zugreifen zu können.

<Anfang>

Gibt den Index des ersten Zeichens an, das am Anfang der Zeichenkette eingefügt werden soll. Negative Werte werden als Index vom Ende der Zeichenkette aus gezählt interpretiert.
Muss eine Ganzzahl (32-Bit-Integer-Zahl) sein (von -2147483648 (-231) bis 2147483647 (231-1).

<Ende>

Gibt den Index des ersten auszuschließenden Zeichens am Ende der Zeichenkette an. Negative Werte werden als Index vom Ende der Zeichenkette aus gezählt interpretiert.
Muss eine Ganzzahl (32-Bit-Integer-Zahl) sein (von -2147483648 (-231) bis 2147483647 (231-1).

<Wert>

Der Wert mit dem die Eigenschaft überschrieben oder gesetzt werden soll.
Der Wert kann eine beliebige Eigenschaft sein, eine Zahl, ein String, ein Verbundtyp oder eine Liste.

<Zahlenanbieter>

Gibt einen Zahlenanbieter an, dessen Ergebnis für die Berechnung des Zielwertes verwendet werden soll.
Der Zahlenanbieter kann einen festen Zahlenwert enthalten oder diesen dynamisch aus der Spielwelt ermitteln.

Zur Eingabe eines Befehls siehe Befehl#Eingabehilfe.

Befehls-Argumente

[Bearbeiten | Quelltext bearbeiten]

get

Gibt die Daten von Blöcken, Objekten oder Datenspeichern als Chat-Meldung aus.

merge

Verändert die Daten von Blöcken, Objekten oder Datenspeichern.

modify

Setzt die Daten von Blöcken, Objekten oder Datenspeichern auf Daten, die von anderen Blöcken, Objekten oder Datenspeichern erhalten werden.

remove

Entfernt Daten von Blöcken, Objekten oder Datenspeichern.

modify ... append

Nur für Listen: Fügt die Daten nach allen anderen Einträgen der Liste hinzu, alte Einträge bleiben unverändert.

modify ... insert <Index>

Nur für Listen: Fügt die Daten an dieser Position der Liste hinzu, alte Einträge bis zu dieser Position bleiben unverändert, alte Einträge ab dieser Position werden nach hinten verschoben.

modify ... merge

Verändert die Daten von Blöcken, Objekten oder Datenspeichern.

modify ... prepend

Nur für Listen: Fügt die Daten vor allen anderen Einträgen der Liste hinzu, alte Einträge werden nach hinten verschoben.

modify ... set

Ersetzt den Wert.

... compute

Ersetzt den Wert durch das Ergebnis eines Zahlenanbieters. Hierbei entscheidet integer und float ob das Ergebnis eine Ganzzahl oder eine Kommazahl sein wird.

... from

Ersetzt den Wert durch die Daten eines Blockes, Objektes oder Datenspeichers.

... string

Ersetzt den Wert durch einen String oder einen Teil eines Strings aus den Daten eines Blockes, Objektes oder Datenspeichers.

... value

Ersetzt den Wert durch den angegebenen Wert.

Spielerdaten können damit nur ausgelesen werden, nicht aber verändert werden. Im Gegensatz zu dem Befehl /setblock wird bei /data block der Block nicht neu erzeugt. Daher eignet sich /data für das Abschließen oder Entsperren von gefüllten Behältern (z.B. einer Truhe). Er kann alle Eigenschaften von Blockobjekten ändern. Da die Endertruhe stets den Inhalt für den Spieler zeigt, der sie öffnet, kann diese nicht abgeschlossen werden. Mit dem Befehl /data get block x y z bei einem Block mit NBT-Daten wird die komplette Datenstruktur des Blockes im JSON-Format ausgegeben.

Die Datenspeicherung von NBT-Daten ist eine effiziente Möglichkeit für Befehle, auf NBT-Daten zuzugreifen oder sie zu speichern, ohne dass ein Overhead für Blockobjekte oder Objekte entsteht, die aus den NBT-Daten lesen oder in sie schreiben.

Jeder Datenspeicher ist ein Allzweck-Schlüsselwertspeicher, der durch einen Ressourcenort identifiziert wird, um unbeabsichtigte Konflikte zu vermeiden.

/data get und /data modify können aus dem Datenspeicher lesen, während /data merge, /data modify, /data remove und /execute store in den Datenspeicher schreiben können.

Der Datenspeicher ist auch mit JSON-Text zugänglich.

BefehleAuslöserJava Edition
Beliebigdie Argumente sind nicht korrekt angegeben Unparsbar
<ZielPosition> ist ungeladen oder außerhalb der Welt Fehlschlag
Der Block bei <ZielPosition> ist kein Blockobjekt
<Selektor> (im entity <Selektor>-Modus) kann nicht zu einem Wesen aufgelöst werden (der genannte Spieler muss online sein)
/data get ...mehr als eine Eigenschaft ist möglich
/data get ... <Pfad><Pfad> existiert nicht
/data get ... <Pfad> <Skalierung>Die erhaltene Eigenschaft ist keine numerische Eigenschaft
/data merge ...
/data remove ...
/data modify ...
Nichts wird geändert
Versuch Spielerdaten zu ändern
/data remove ...
/data modify ... set ...
<Pfad> wählt das Wurzel-Verbundtyp-Eigenschaft aus
/data modify ... (from|string) block ...<QuellPosition> ist ungeladen oder außerhalb der Welt
Der Block bei <QuellPosition> ist kein Blockobjekt
/data modify ... (from|string) entity ...<Quelle> kann nicht zu einem Wesen aufgelöst werden (benannter Spieler muss online sein)
/data modify ... (from|string) ... <QuellPfad><QuellPfad> existiert nicht
/data modify ... string ... <QuellPfad> <Anfang> <Ende>die von <QuellPfad> ausgewählten Eigenschaften sind weder vom Typ String noch numerisch (in einen String umgewandelt) Eigenschaft(en)
<Anfang> oder <Ende> ist außerhalb der gültigen Indizes der Quellzeichenfolge(n)
Das durch <Anfang> indizierte Zeichen steht hinter dem durch <Ende> indizierten Zeichen
/data modify ... append ...
/data modify ... insert <Index> ...
/data modify ... prepend ...
Die Ziel-Eigenschaft(en) sind keine Listen- oder Array-Eigenschaft(en)
Quelldaten haben nicht den richtigen Typ für die Liste(n) oder die Array(s)
/data modify ... insert <Index> ...Der Index ist für jedes Ziel ungültig
/data modify ... merge ...Der Zielpfad wählt keine Verbundtyp-Eigenschaften aus
Die Quelldaten sind keine Verbundtyp-Eigenschaften
BeliebigSonstigesErfolgreich

BefehleEditionSituationErfolgszähler/execute store success .../execute store result ...
BeliebigJava EditionBei Fehlschlag000
/data get ...Bei Erfolg111
/data get ... <Pfad>eine numerische Eigenschaft wird erhalten11der erhaltene Wert nach dem Abrunden
eine Listen- oder Array-Eigenschaft wird erhalten11Die Anzahl der Elemente in dieser Liste oder diesem Array
eine String-Eigenschaft wird erhalten11Die Länge des Strings
eine Verbundtyp-Eigenschaft wird erhalten11Die Anzahl der Eigenschaften, die direkte Kinder dieser Verbundtyp-Eigenschaft sind
/data get ... <Pfad> <Skalierung>Bei Erfolg11der erhaltene Wert multipliziert mit <Skalierung>, dann abgerundet
/data merge ...Bei Erfolg111
/data remove ...Bei Erfolg111
/data modify ... append ...
/data modify ... insert <Index> ...
/data modify ... prepend ...
Bei Erfolg11die Anzahl der Listen oder Arrays, zu denen neue Elemente hinzugefügt werden
/data modify ... set ...Bei Erfolg11die Anzahl der Ziel-Eigenschaften, die erfolgreich geändert wurden
/data modify ... merge ...Bei Erfolg11die Anzahl der erfolgreich geänderten Ziel-Verbundtyp-Eigenschaften
Befehl Beispiel
/data get /data get entity @e[type=minecraft:armor_stand,limit=1]
Liefert eine Liste aller NBT-Daten, die der nächstgelegenen Rüstungsständer besitzt.
/data get entity @s DataVersion
Um die Versions-ID des aktuellen Spielers zu erhalten.
/data get entity @p Inventory[{Slot:0b}].id
Um die Gegenstands-ID des Gegenstands im ersten Schnellleisten-Slot des nächstgelegenen Spielers zu erhalten.
/data merge /data merge entity @e[distance=..15,type=minecraft:slime,limit=1] {Size:10}
vergrößert einen Schleim im Umkreis von 15 Blöcken auf die Größe 10.
/data merge block 45 72 -10 {lock:{components:{"minecraft:custom_name":"Eisenbarts Goldzahn"} } }
verschließt den Behälter an Position (45, 72, -10), der danach nur noch geöffnet werden kann, wenn der Spieler einen Gegenstand in der Hand hält, der den Namen "Eisenbarts Goldzahn" trägt. Zum Entsperren siehe /data remove.
/data merge storage wiki:beispiel {Liste:[2,5,8,9,6,10]}
Eine Liste oder Array wird mit dem folgenden Befehl gespeichert.
/data modify /data modify entity @n[type=minecraft:item,distance=..10] PickupDelay set value -1
Der nächstgelegene Gegenstand im Umkreis von 10 Blöcken kann von dem Spieler nicht aufgenommen werden.
/data modify block 1 64 1 Items[0].id set value "minecraft:diamond_block"
Das erste Element in einer Truhe mit den Koordinaten (1, 64, 1) soll in einen Diamantblock umgewandelt werden, wobei alle NBT-Daten erhalten bleiben.
/data modify ... compute /data modify storage wiki:beispiel Ganzzahl set compute default integer {type:"constant",value:42}
Speichert die Ganzzahl 42 mithilfe eines Zahlenanbieters im Datenspeicher.
/data modify storage wiki:beispiel Kommazahl set compute default float {type:"constant",value:3.5}
Speichert die Kommazahl 3.5 mithilfe eines Zahlenanbieters im Datenspeicher.
/data modify storage wiki:beispiel Zufallszahl set compute default integer {type:"minecraft:uniform",min:1,max:6}
Erzeugt eine zufällige Ganzzahl zwischen 1 und 6 und speichert sie im Datenspeicher.
/data remove /data remove block 45 72 -10 lock
entsperrt den Behälter an Position (45, 72, -10).
/data remove entity @n[distance=..15,type=minecraft:slime] Size
entfernt die Größeneigenschaft des nächstgelegenen Schleims, somit wird er auf die kleinste Größe schrumpfen.
/execute ... data /execute if data block ~ ~-1 ~ Items[{Slot:0b}] run data modify block ~ ~-1 ~ Items[{Slot:0b}].id set value "minecraft:pottery_shard_arms_up"
wenn der erste Slot des Behälters, der sich einen Block unter dem Ausführer befindet, mit einem beliebigen Gegenstand belegt ist, wird dieser Gegenstand durch eine Töpferscherbe ausgetauscht, die NBT-Daten bleiben jedoch bestehen.
/execute as @e[distance=..5,type=minecraft:pig,nbt=!{NoAI:true}] run data merge entity @s {NoAI:true}
deaktiviert die KI aller Schweine im Umkreis von 5 Blöcken, wenn sie eine eingeschaltete KI besitzen.
/execute as @e[type=minecraft:villager] run data modify entity @s VillagerData.profession set from entity @e[type=minecraft:villager,limit=1,nbt={VillagerData:{profession:"minecraft:nitwit"}}] VillagerData.profession
Mit diesem Befehl werden alle Dorfbewohner zu Nichtsnutzen, wenn ein Nichtsnutz vorhanden ist.
Für weitere Beispiele mit NBT-Daten siehe: Anleitungen/Befehle mit NBT
Versionen der Java Edition
Vollversion
1.13
17w45b
17w47a
  • Der Befehl /blockdata wird entfernt, somit gibt es nur noch /data um Blockdaten zu ändern.
18w03a
  • Befehl /execute store in Verbindung mit /data get mit Angabe eines NBT-Pfades funktioniert auch für nicht-numerische NBT-Daten.
1.14 (18w43a)
  • Neuer Parameter modify hinzugefügt.
1.15
19w38a
  • Neuer Parameter storage hinzugefügt, ist ein Datenspeicher, der NBT-Daten speichern kann, ohne das ein Objekt oder Block notwendig ist.
19w39a
  • Für den Datenspeicher gibt es eine JSON-Text-Komponente.
1.19.4 (23w03a)
  • Neuer Parameter string, mit welchen man einen gezielten Bereich der Daten mit einem beliebigen Datentyp in einen String umwandeln kann.
1.20 (1.20-pre1)
  • Der Parameter string erlaubt für Anfang und Ende auch negative Zahlenwerte, die als Index vom Ende der Zeichenkette aus gezählt interpretiert werden.
26.3
26.3-snap-10
  • Die Unterbefehle von modify besitzen die neue Datenquelle compute.
  • Diese wertet einen Zahlenanbieter aus und verwendet das Ergebnis als Datenquelle.
26.3-pre-1
  • Die Syntax von compute wird angepasst, um die Aufteilung des Zahlenanbieters auf float und integer zu berücksichtigen.