Prädikate

Aus Minecraft Wiki
Wechseln zu: Navigation, Suche

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[Bearbeiten]

  • 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[Bearbeiten]

  • Der Wurzel-Tag.
    • 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 Block Zuständen Name 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 schießt, ist das Skelett die Entität.
    • direct_entity: Die direkte Ursache des Schadens. Wenn beispielsweise ein Skelett einen Spieler mit einem Pfeil schießt, ist der Pfeil die direkte Entität.
  • entity_properties - Testeigenschaften einer Entität.
    • entity: Gibt an die Entität die geprüft werden soll für die Bedingung. Wenn auf this gesetzt, um die Entität zu verwenden, die gestorben ist, oder den Spieler, der den Fortschritt erlangt hat, den Behälter geöffnet oder den Block gebrochen 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 einer Entität.
    • entity: Gibt an die Entität die überprüft werden soll für die Bedingung. Wenn auf this gesetzt, um die Entität zu verwenden, die gestorben ist, oder den Spieler, der den Fortschritt erlangt hat, den Behälter geöffnet oder den Block gebrochen 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 specified Punktestand must pass für die Bedingung zu bestehen.
      • A score: Schlüsselname ist der Punktezähler (objective) while the Variablen is the exact score value required for die Bedingung zu bestehen.
      • A score: Schlüsselname ist der Punktezähler (objective) while the Variablen specifies ein Bereich von score Variablen required for die Bedingung 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, die Bedingung passes if killer_player ist nicht verfügbar.
  • location_check - Überprüft, ob der aktuelle Standort übereinstimmt.
    • offsetX - Optional Versatz des Standorts
    • offsetY
    • offsetZ
    • 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: Looting adjustment to die 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).
  • tool_enchantment - Testet die Verzauberungen des Werkzeugs.
    • enchantments: Liste der Verzauberungen, die das Werkzeug haben muss.
      • : Eine Verzauberung.
        • enchantment: Die Verzauberungs Namens-ID.
        • levels: Die Stufe, die diese Verzauberung haben muss.
          • min: Minimal-Level.
          • max: Maximal-Level.
  • 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 gewitter.

Beispiele[Bearbeiten]

Beispiel 1[Bearbeiten]

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

Beispiel 2[Bearbeiten]

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 Sumpf-Hütte befindet der Statuseffekt Vergiftung gegeben.

/effect give @e[predicate=meinedaten:unterordner/hexenhuette,type=!witch] poison

Beispiel 3[Bearbeiten]

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[Bearbeiten]

misode.github.io

Geschichte[Bearbeiten]

Versionsgeschichte der Java Edition
Vollversion 1.15 (19w38a)