Prädikate

Aus Minecraft Wiki
Zur Navigation springen Zur Suche springen
Dieser Inhalt ist nur für die Java Edition.

Prädikate sind Bedingungen die ein true (wahr) oder false (falsch) zurückgeben. Sie sind JSON-Strukturen, die an mehreren verschiedenen Stellen in Datenpaketen zu finden sind. Sie werden mit verschiedenen Mitteln aufgerufen, um Bedingungen innerhalb der Welt zu prüfen.

Prädikatdateien sind eigenständige Datenpaketdateien, die ein oder mehrere Prädikate enthalten. Prädikate können auch auf andere Weise definiert werden.

Dieser Artikel beschreibt, wie Prädikate definiert und aufgerufen werden, und beschreibt auch die JSON-Struktur eines Prädikats.

Definition

  • <Name des Datenpakets>
    • pack.mcmeta: Die Definitionsdatei.
    • data
      • <namensraum>
        • predicate: Eigene Prädikate.
          • <datei>.json: Eine Prädikat-Datei.

Verwendung

Prädikate und Prädikatdateien können auf verschiedene Weise von anderen Datenpaketdateien aus aufgerufen werden:

Befehle

Befehle oder Funktionen können Prädikatdateien auf zwei Arten aufrufen:

  • Zielauswahl: Das Selektorargument @e[predicate=...] prüft Prädikatdateien als Filter für die Objektauswahl. Die Prädikatdatei wird einmal pro Objekt aufgerufen, die gefiltert werden muss, und zwar jedes Mal am Standort des Objekt.
  • Befehl /execute: Ein Unterbefehl, /execute if predicate, kann eine Prädikatdatei aufrufen, um entweder ein Ergebnis zurückzugeben oder zu entscheiden, ob mit einer Unterbefehlskette fortgefahren werden soll. Die Prädikatdatei wird einmal an der aktuellen kontextuellen Ausführungsposition aufgerufen.

Andere Prädikate

Der Bedingungstyp minecraft:reference ruft eine Prädikatdatei auf und gibt das Ergebnis an den Aufrufer zurück.

Vorhandensein in anderen Dateien

Zusätzlich zu Prädikatdateien werden Prädikate selbst an anderen Stellen in anderen Datenpaketdateien verwendet, wie z. B. Fortschritte, Beutetabellen und Verzauberungen.

Datenstruktur

Prädikatbasisdaten

  • Die namenlose Wurzel-Eigenschaft.
    • condition: Die Bedingungen.
    • Teile der Bedingung, siehe unten.

Liste der Prädikate

all_of (Und-Verknüpfung)

  • all_of - Verbindet die Bedingungen der Parameter terms als ein "UND".
    • terms: Eine Liste der Bedingungen für die Teilnahme mit "UND".
      • Eine Bedingung.

any_of (Oder-Verknüpfung)

  • any_of - Verbindet die Bedingungen der Parameter terms als ein "ODER".
    • terms: Eine Liste der Bedingungen für die Teilnahme mit "ODER".
      • Eine Bedingung.

block_state_property (Blockzustandseigenschaften)

  • block_state_property - Überprüft den Blockzustand.
    • block: Eine Block-Namens-ID. Der Test wird fehlschlagen wenn der Block nicht die entsprechende Namens-ID hat.
    • properties: (Optional) Eine Zuordnung von Blockzuständen mit Variablen. Alle Variablen sind Strings. Der Test wird fehlschlagen wenn der Block nicht die entsprechenden Namens-IDs hat.
      • name: Ein Blockzustand und ein exakter Wert. Der Wert ist eine Zeichenfolge.
      • name: Ein Blockzustandsname und ein passender Bereichswert.
        • min: Der Mindestwert.
        • max: Der Höchstwert.

damage_source_properties (Schadensquelleneigenschaften)

  • damage_source_properties - Überprüft die Eigenschaften der Schadensquelle.
    • predicate: Prädikat angewendet auf die Schadensart, nutzt dieselbe Struktur wie Fortschritte.[Anzeigen]

enchantment_active_check (Verzauberungsüberprüfung)

  • enchantment_active_check - Überprüft, ob die Verzauberung aktiv war. Erfordert den aktiven Status der Verzauberung, der vom Beutekontext bereitgestellt wird, und schlägt immer fehl, wenn er nicht bereitgestellt wird. Es ist daher nur vom Beutekontext enchanted_location aus verwendbar.
    • active: Ob geprüft werden soll, ob eine aktive (true) oder inaktive (false) Verzauberung vorliegt.

entity_properties (Objekteigenschaften)

  • entity_properties - Testeigenschaften einer Kreatur oder Objekt.
    • entity: Gibt die Kreatur an, die geprüft werden soll für die Bedingung. Wenn es auf this gesetzt ist, um die Kreatur zu verwenden, die gestorben ist, oder den Spieler, der den Fortschritt erlangt hat, den Behälter geöffnet oder den Block abgebaut hat, killer für den Killer oder killer_player für einen Killer, der ein Spieler ist .
    • predicate: Prädikat angewendet auf die Kreatur, nutzt dieselbe Struktur wie Fortschritte.[Anzeigen]

entity_scores (Objekt-Punktestände)

  • entity_scores - Überprüft den Punktestand eines Objekts.
    • entity: Gibt das Objekt an, das überprüft werden soll für die Bedingung. Wenn this angegeben ist, um das Objekt zu verwenden, die gestorben ist, oder den Spieler, der den Fortschritt erlangt hat, den Behälter geöffnet oder den Block abgebaut hat, killer für den Killer oder killer_player für einen Killer, der ein Spieler ist.
    • scores: Alle Punktestände die überprüft werden sollen. Alle spezifischen Punktestände müssen für die Bedingung passen um zu bestehen.
      • Ein Punkte-Ziel: Schlüsselname ist das Punkte-Ziel (objective) solange die Variablen speziell einen Bereich von score-Variablen für die Bedingung benötigen um zu bestehen.
        • min: Mindestpunktzahl.
        • max: Höchstpunktzahl.
      • Ein Punkte-Ziel: Schlüsselname ist das Punkte-Ziel (objective) solange die Variablen im exakten Bereich liegen, wie die Bedingung es vorgibt.

inverted (Invertierung)

  • inverted - Negiert die Bedingung im Parameter term.
    • term: Die zu negierende Bedingung.

killed_by_player (Tötung durch Spieler)

  • killed_by_player - Testet ob attacking_player-Spieler verfügbar ist.

location_check (Standortüberprüfung)

  • location_check - Überprüft, ob der aktuelle Standort übereinstimmt.
    • offsetX - Optional Versatz des Standorts.
    • offsetY - Optional Versatz des Standorts.
    • offsetZ - Optional Versatz des Standorts.
    • predicate: Prädikat angewendet auf Standort, nutzt dieselbe Struktur wie Fortschritte.[Anzeigen]

match_tool (Werkzeugüberprüfung)

  • match_tool - Überprüft ein Werkzeug.
    • predicate: Prädikat wird auf einen Gegenstand angewendet, verwendet dieselbe Datenstruktur wie bei Fortschritten.[Anzeigen]

random_chance (Zufallschance)

  • random_chance - Prüft, ob eine Zufallszahl zwischen 0.0 und 1.0 kleiner als ein angegebener Wert ist.
    • chance: Erfolgsquote als Zahl 0.0–1.0.

random_chance_with_enchanted_bonus (Zufallschance mit verzauberter Beute)

  • random_chance_with_enchanted_bonus - Generiert eine Zufallszahl zwischen 0,0 und 1,0 und prüft, ob sie kleiner ist als der Wert, der anhand der Stufe einer bestimmten Verzauberung ermittelt wurde. Erfordert eine attacker-Kreatur, die durch den Beutekontext bereitgestellt wird. Wenn sie nicht bereitgestellt wird, wird die Verzauberungsstufe als 0 betrachtet.
    • unenchanted_chance: Die Erfolgsrate, die verwendet werden soll, wenn die Verzauberung nicht vorhanden ist; 0,0–1,0.
    • enchanted_chance: Stufenbasierter Wert. Die Erfolgsrate basierend auf dem Level, wenn die Verzauberung vorhanden ist; 0,0–1,0.
    • enchantment: Eine Verzauberung (eine ID). Die Verzauberung, deren Level für die Wahrscheinlichkeitsberechnung verwendet werden soll. Wenn die Verzauberung nicht vorhanden ist, wird 0 als Level verwendet.

reference (Verknüpfung)

  • reference - Überprüft ob eine andere referenzierte Bedingung (predicate) besteht.
    • name: Der Namensraum ID von der Bedingung (predicate) referenziert wurde. Zyklisch referenziert führt zu einen Fehler.

survives_explosion (Explosionsüberleben)

  • survives_explosion - Gibt true mit einer Wahrscheinlichkeit von 1/Explosionsradius zurück.

table_bonus (Beutetabellenbonus)

  • table_bonus - Besteht mit der Wahrscheinlichkeit ausgewählt aus Beutetabelle, ausgehend von Verzauberungsstufe.
    • enchantment: ID der Verzauberung.
    • chances: Liste der Wahrscheinlichkeiten für die Verzauberungsstufe, ausgehend von 0.

time_check (Zeitüberprüfung)

  • time_check - Prüft die aktuelle Uhrzeit.
    • value
      • max: Maximalwert.
      • min: Minimalwert.
    • value: Die Zeit in Ticks.
    • period: Falls vorhanden wird die Zeit durch Modulo-Division (%= , Rest der Division von) um diesen Wert (Als Beispiel, falls auf 24000 gesetzt wurde, Wert wird auf eine Zeit gesetzt in Periode von Minecraft-Tagen).

value_check (Wertüberprüfung)

  • value_check - Prüft einen Wertebereich.
    • value: Darstellung von Wertebereichen. Der Wert, der überprüft werden soll.
    • range: Der Bereich, in dem der Wert geprüft wird.
      • min: Minimal-Wert.
      • max: Maximal-Wert.
    • range: Der genaue Wert, der überprüft werden soll.

weather_check (Wetterüberprüfung)

  • weather_check - Prüft auf einen aktuellen Wetterzustand.
    • raining: Wenn true, wird die Bedingung nur dann als true ausgewertet, wenn es regnet.
    • thundering: Wenn true, wird die Bedingung nur dann als true ausgewertet, wenn es gewittert.

Beispiele

Eigenschaft Beispiel
entity_properties
data/wiki/predicate/eisenhand.json
{
  "condition": "minecraft:entity_properties",
  "entity": "this",
  "predicate": {
    "equipment": {
      "mainhand": {
        "items": "minecraft:iron_sword"
      }
    }
  }
}
Überprüft ob die Kreatur ein Eisenschwert in der Hand hält. In Kombination mit den unteren Befehl wird jeder Kreatur, die ein Eisenschwert in der Hand hält, es entfernt.
/clear @e[predicate=wiki:eisenhand] minecraft:iron_sword
location_check
data/wiki/predicate/hexenhuette.json
{
  "condition": "minecraft:location_check",
  "predicate": {
    "biomes": "minecraft:swamp",
    "structures": "minecraft:swamp_hut",
    "dimension": "minecraft:overworld"
  }
}
Überprüft ob sich die Kreatur im Sumpf, in der Boundingbox der Sumpfhütte befindet. In Kombination mit den unteren Befehl wird jeder Kreatur, außer der Hexe die sich in der Boundingbox der Sumpfhütte befindet der Statuseffekt Vergiftung gegeben.
/effect give @e[predicate=wiki:hexenhuette,type=!minecraft:witch] minecraft:poison
weather_check
data/wiki/predicate/wetter.json
{
  "condition": "minecraft:weather_check",
  "raining": true,
  "thundering": false
}
Überprüft, ob es regnet. In Kombination mit den unteren Befehlen wird das Regenwetter immer auf 1000 Sekunden gesetzt.
/execute if predicate wiki:wetter run weather rain 1000

Externe Links

Geschichte

[Einklappen] Versionen der Java Edition
Vollversion
1.15 (19w38a)
1.16 (20w12a)
  • Unterprädikat „fishing_hook“ zum Kreatur-Prädikat hinzugefügt, um die Eigenschaften des Angelhakens zu prüfen.
1.19
22w11a
  • Unter location_check wird das Feld feature in structure umbenannt.
22w14a
  • Die Felder player, fishing_hook, lightning_bolt und catType werden durch type_specific ersetzt.
  • type_specific hat einen Feld type (einen von player, fishing_hook, lightning_bolt und cat) und dieselben Felder wie die entfernten Felder.
1.19.3 (23w06a)
  • Die Felder is_projectile, is_explosion, bypasses_armor, bypasses_invulnerability, bypasses_magic, is_fire, is_magic, is_lightning werden aus damage_source_properties entfernt.
  • Ein neues Array tags wird zu damage_source_properties hinzugefügt. Jeder Eintrag hat zwei Felder:
    • id: Die ID eines Schadenstyp-Tags.
    • expected: Ob der Schaden das Tag haben soll oder nicht, damit das Prädikat übereinstimmt.
1.20 (23w18a)
  • Bedingung alternative wird in any_of umbenannt.
  • Neue Bedingung all_of hinzugefügt, die nur erfüllt ist, wenn alle Unterbedingungen erfüllt sind, mit derselben Syntax wie any_of.
1.20.5
24w09a
  • Das Prädikatformat für Gegenstände wird aktualisiert:
    • Das Feld „tag“ wird entfernt.
    • Das Feld „items“ unterstützt jetzt einen einzelnen Eintrag, ein mit Hash-Präfix versehenes Element-Tag oder eine Liste von Elementen.
  • potion“ wird in „potions“ umbenannt und unterstützt einen einzelnen Eintrag, ein mit Hash-Präfix versehenes Trank-Tag oder eine Liste von Tränken.
    • Das Prädikat „nbt“ wird in „custom_data“ umbenannt und entspricht jetzt der Komponente „minecraft:custom_data“.
    • Ein neues optionales Feld „components“ entspricht genauen Komponenten.
  • Das Prädikatformat für Blöcke wird aktualisiert:
    • Das Feld „tag“ wird entfernt.
    • Das Feld „blocks“ unterstützt jetzt einen einzelnen Eintrag, ein mit Hash-Präfix versehenes Block-Tag oder eine Liste von Blöcken.
  • Das Format für Flüssigkeits-Prädikate wird aktualisiert:
    • Das Feld „tag“ wird entfernt. *fluid wird in fluids umbenannt und unterstützt einen einzelnen Eintrag, ein mit Hash-Präfix versehenes Fluid-Tag oder eine Liste von Fluiden.
  • Das Kreaturtyp-Prädikatformat wird aktualisiert:
    • Das Feld type unterstützt jetzt einen einzelnen Eintrag, ein mit Hash-Präfix versehenes Entity-Typ-Tag oder eine Liste von Entity-Typen.
  • Das Standort-Prädikatformat wird aktualisiert:
    • biome wird in biomes umbenannt und unterstützt einen einzelnen Eintrag, ein mit Hash-Präfix versehenes Biom-Tag oder eine Liste von Biomen.
    • structure wird in structures umbenannt und unterstützt einen einzelnen Eintrag, ein mit Hash-Präfix versehenes Struktur-Tag oder eine Liste von Strukturen.
24w10a
  • Es wird das Kreatur-Unterprädikat slots hinzugefügt, die verwendet werden, um einzelne oder mehrere Slots einer beliebigen Kreatur zu prüfen.
24w11a
  • Kreatur-Unterprädikat any entfernt.
  • Komponentenspezifische Gegenstandsprädikateigenschaften werden in ein separates Feld predicates verschoben.
  • Das Format der Gegenstands-Unterprädikate wird aktualisiert:
    • Einige Felder des Gegenstandsprädikats werden in eine Karte in einem optionalen Feld predicates verschoben.
    • Die Felder enchantments, stored_enchantments, potions, custom_data werden jeweils in die Unterprädikate minecraft:enchantments, minecraft:stored_enchantments, minecraft:potion_contents, minecraft:custom_data verschoben.
    • Das Feld durability wird zum Prädikat damage erweitert.
    • Prädikate enchantments, stored_enchantments, potion_contents, damage erfordern, dass passende Komponenten vorhanden sind.
1.21
24w18a
  • random_chance_with_looting wird in random_chance_with_enchanted_bonus umbenannt, das Feld chance wird von einem Float in einen Level-basierten Wert geändert, das Feld looting_multiplier wird entfernt und ein Feld enchantment wird hinzugefügt.
  • Das Feld chance von random_chance wird von einem Float in einen Zahlenanbieter geändert.
  • Ein Feld can_see_sky wird zu Standortprädikaten hinzugefügt.
  • enchantment wird in den Gegenstands-Unterprädikaten minecraft:enchantments in enchantments umbenannt; akzeptiert mehrere mögliche Verzauberungen oder Aliase.
  • Änderungen am Kreaturprädikat:
    • Flags is_on_ground und is_flying werden zum Flags-Unterprädikat hinzugefügt.
    • Unterprädikat movement hinzugefügt.
    • Unterprädikat periodic_ticks hinzugefügt.
  • Beutekontext-Entitäten umbenannt: killer umbenannt in attacker; direct_killer umbenannt in direct_attacker; killer_player umbenannt in attacking player.
24w19a
  • Neues Feld is_direct in die Bedingung damage_source_properties hinzugefügt.
24w21a
  • Gegenstands-Unterprädikat jukebox_playable hinzugefügt.
  • Das Feld gamemode des player-Prädikats akzeptiert eine Liste von Spielmodi statt einer einzelnen Zeichenfolge.
  • Der Ordner wird von predicates zu predicate geändert.
1.21-pre1
  • Die Prädikate werden von chance in unenchanted_chance und enchanted_chance in der Bedingung random_chance_with_enchanted_bonus aufgeteilt.
1.21.2
24w35a
  • Neues Kreaturunterprädikat minecraft:sheep hinzugefügt: sheared und color.
24w36a
  • Ein neues Feld input im Unterprädikat player wird hinzugefügt, mit dem erkannt werden kann, welche Bewegungstasten der Spieler drückt.
    • Es werden forward, backward, left, right, jump, sneak und sprint hinzugefügt.
24w37a
  • Kreaturunterprädikat minecraft:salmon hinzugefügt: variant.
24w39a
  • Das Objektunterprädikat minecraft:boat wird entfernt, da es für Boote keine gesonderten Varianten-Eigenschaften mehr gibt.
1.21.5
25w03a
  • Dem Kreaturprädikat wird ein neues optionales Feld hinzugefügt: components.
  • Mehrere Kreaturprädikate werden entfernt und durch eine Kombination aus dem Prädikat components und unterschiedlichen Kreaturkomponenten ersetzt.
  • Das Feld color wird aus dem Unterprädikat minecraft:sheep entfernt.
25w07a
  • Das Kreaturprädikat stepping_on kann nur dann als true ausgewertet werden, wenn sich die Kreatur auf dem Boden befindet.