Minecraft Wiki
Advertisement

Prädikate beinhalten Eigenschaften für Bedingungen die man im Selektor der Zielauswahl @e[predicate=...] oder mit dem Befehl /execute if|unless predicate ... verwenden kann. Sie werden in Datenpaketen angelegt und es gibt keine Standard-Prädikatdateien, man kann sich also keine Vorlage holen um eigene zu erstellen, stattdessen benötigt man die Datenstruktur.

Datenquelle[]

  • Name des Datenpakets
    • pack.mcmeta: Die Definitionsdatei.
    • data: Eigene Weltdaten.
      • eigener-namensraum: Für eigene Weltdaten legt man einen eigenen Namensraum an.
        • predicates: Eigene Prädikate.
          • beispiel_1.json: Eine Prädikat Datei.
          • beispiel_2.json
          • eigener-namensraum: Eigener Unterordner.
            • beispiel_3.json

Datenstruktur[]

  • Die Wurzel-Eigenschaft.
    • condition: Die Voraussetzungen.
    • Andere Teile der Bedingung, siehe unten.

Die möglichen Werte für condition und den zugehörigen zusätzlichen Inhalt:

  • alternative - 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 - Ü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 Karte von Blockzuständen mit Variablen. Alle Variablen sind Strings. Der Test wird fehlschlagen wenn der Block nicht die entsprechenden Namens-IDs hat.
  • damage_source_properties - Überprüft die Eigenschaften der Schadensquelle.
    • is_explosion: Wenn die Schadensquelle eine Explosion ist.
    • is_projectile: Wenn die Schadensquelle ein Geschoss ist.
    • is_fire: Wenn die Schadensquelle Feuerschaden ist.
    • is_lightning: Wenn die Schadensquelle ein Blitzeinschlag ist.
    • is_magic: Wenn die Schadensquelle ein Statuseffekt ist.
    • bypasses_magic: Dies gilt nur für Hunger.
    • bypasses_invulnerability: Dies gilt nur für Schäden, wenn ein Spieler in die Leere fällt.
    • bypasses_armor: Schaden der die Rüstung durchdrungen hat.
    • source_entity: Die Ursache des Schadens. Wenn beispielsweise ein Skelett einen Spieler mit einem Pfeil abschießt, ist das Skelett die Quelle.
    • direct_entity: Die direkte Ursache des Schadens. Wenn beispielsweise ein Skelett einen Spieler mit einem Pfeil schießt, ist der Pfeil das direkte Objekt.
  • entity_properties - Testeigenschaften einer Kreatur.
    • 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: Das auf den Standort angewendete Prädikat verwendet dieselbe Struktur wie Fortschritte.
      • flags: Prädikatflags, die überprüft werden sollen.
        • is_on_fire: Überprüft, ob das Objekt brennt.
        • is_sneaking: Überprüft, ob das Objekt schleicht.
        • is_sprinting: Überprüft, ob das Objekt sprintet.
        • is_swimming: Überprüft, ob das Objekt schwimmt.
        • is_baby: Überprüft, ob das Objekt ein Baby ist.
  • 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.
      • A score: Schlüsselname ist der Punktezähler (objective) solange die Variablen im exakten Bereich liegen, wie die Bedingung es vorgibt.
      • A score: Schlüsselname ist der Punktezähler (objective) solange die Variablen speziell einen Bereich von score-Variablen für die Bedingung benötigen um zu bestehen.
        • min: Mindestpunktzahl.
        • max: Höchstpunktzahl.
  • inverted - Negiert die Bedingung im Parameter "term".
    • term: Die zu negierende Bedingung.
  • killed_by_player - Testet ob killer_player Entität verfügbar ist.
    • inverse: Falls vorhanden ist die Bedingung erfolgreich wenn killer_player nicht verfügbar ist.
  • 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.
  • match_tool - Überprüft ein Werkzeug.
    • predicate: Prädikat auf Element angewendet, verwendet dieselbe Struktur wie Fortschritte.
  • 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_looting - Überprüft ob die Zufallszahl von 0.0–1.0 ist weniger als eine angegebene Variable, beeinflusst vom Level der von Plünderung auf die killer Entität.
    • chance: Basiserfolgsrate.
    • looting_multiplier: Anpassung der Plünderung zur Basis-Erfolgsrate. Formel ist chance + (looting_level * looting_multiplier).
  • 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 - Gibt true mit einer Wahrscheinlichkeit von 1/Explosionsradius zurück.
  • 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 - Prüft die aktuelle Uhrzeit.
    • value: Die Zeit in Ticks.
    • value
      • max: Maximalwert.
      • min: Minimalwert.
    • 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).
  • 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[]

Beispiel 1[]

Die Datei .minecraft/saves/meinewelt/datapacks/meinpaket/data/meinedaten/predicates/unterordner/eisenhand.json könnte so aussehen:
 {
   "condition": "minecraft:entity_properties",
   "entity": "this",
   "predicate": {
     "equipment": {
       "mainhand": {
         "item": "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=meinedaten:unterordner/eisenhand] minecraft:iron_sword

Beispiel 2[]

Die Datei .minecraft/saves/meinewelt/datapacks/meinpaket/data/meinedaten/predicates/unterordner/hexenhuette.json könnte so aussehen:
 {
   "condition": "minecraft:location_check",
   "predicate": {
     "biome": "minecraft:swamp",
     "feature": "swamp_hut",
     "dimension": "minecraft:overworld"
   }
 }
Überprüft ob sich die Kreatur im Sumpf, in der Boundingbox der Sumpf-Hü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=meinedaten:unterordner/hexenhuette,type=!minecraft:witch] minecraft:poison

Beispiel 3[]

Die Datei .minecraft/saves/meinewelt/datapacks/meinpaket/data/meinedaten/predicates/unterordner/wetter.json könnte so aussehen:
 {
   "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 meinedaten:unterordner/wetter unless score x y matches 1 run weather rain 1000
/execute if predicate meinedaten:unterordner/wetter run scoreboard players set x y 1

Hilfsgeneratoren[]

misode.github.io

Geschichte[]

Versionsgeschichte der Java Edition
Vollversion 1.15 (19w38a)
Vollversion 1.19 (22w14a)
  • Die Felder player, fishing_hook, lightning_bolt und catType wurden durch type_specific ersetzt.
  • type_specific hat einen Feldtyp (einen von player, fishing_hook, lightning_bolt und cat) und dieselben Felder wie die entfernten Felder.
Advertisement