Minecraft Wiki
Advertisement
Information icon
この項目はJava Edition限定の要素です。 

プレディケート(英:Predicate)はデータパックの様々なファイル内で使用されている構造である。ワールド内の要素を参照して条件の確認を行い、結果を「通過」「失敗」の二通りから返すことができる。

プレディケートはルートテーブル進捗トリガーなどデータパック内のJSONファイルに組み込まれているほか、複数のプレディケートをまとめた個別のプレディケートファイルとして保存することもできる。

プレディケートファイルの定義[]

プレディケートファイルはデータパックのdata/<名前空間>/predicate内にJSONファイルとして保存する。単一のプレディケートとして保存する場合は下記のプレディケートの構造をそのまま記述すればよい。一方複数のプレディケートをまとめて保存する場合は複数のプレディケート構造を リスト内にまとめて記述する。

呼び出し[]

プレディケート、およびプレディケートファイルはさまざまな場面で呼び出すことができる。

コマンドから[]

コマンド、および関数では、二通りの方法でプレディケートを呼び出すことができる。

  • ターゲットセレクター引数predicate=を用いると、条件に適合するエンティティのみをコマンドの対象とすることができる。この際、プレディケートは各エンティティの位置を規準に呼び出される。
  • /executeサブコマンド/execute if predicateを用いると、条件の通過・失敗に基づいてコマンドの実行を制限できる。この際、プレディケートはコマンドの各実行文脈から与えられた位置を基準に呼び出される。

他のプレディケート[]

タイプminecraft:referenceのプレディケートは、他のプレディケートファイルを代理で呼び出すことができる。

他のデータパックファイル[]

進捗ルートテーブルではそのファイル内にプレディケートが直接組み込まれて使用されている。

JSONフォーマット[]

プレディケートは以下のJSON構造で記述される。

  • : プレディケートの最上位のオブジェクト。
    •  condition: 確認する条件のタイプ。
    • さらに conditionの値によって条件の仔細に関する追加のフィールドが必要である。

 conditionの有効な値、および対応する追加のフィールドは次の通り。

  • all_of—複数の下位プレディケートが設定でき、そのすべてが通過した場合に通過となる。すべての状況で呼び出し可能。
    •  terms: 条件となる下位プレディケートのリスト。 オブジェクト形式でなくてはならず、ここにさらに下位の リストを入れ子にすることはできない。
      • 各下位プレディケート。
  • any_of—複数の下位プレディケートが設定でき、そのうち少なくとも一つが通過した場合に通過となる。すべての状況で呼び出し可能。
    •  terms: 条件となる下位プレディケートのリスト。 オブジェクト形式でなくてはならず、ここにさらに下位の リストを入れ子にすることはできない。
      • 各下位プレディケート。
  • block_state_property—破壊されたブロックとそのブロック状態に関する条件を確認する。ルート状況により状況パラメータblock stateが与えられている必要があり、与えられていない場合は常に失敗する。
    •  block: 破壊されたブロックのIDの条件。IDが合わない場合は失敗となる。
    •  properties: (任意)破壊されたブロックのブロック状態に関する条件。指定のブロック状態をそのブロックが持たない場合は失敗する。
      •  <ブロック状態>: ブロック状態の名前をキーとして、その値の条件を指定する。値が数値や論理値であっても、必ず文字列として""で囲んで指定する必要がある。
      •  <ブロック状態>: 別表記。数値を値に持つブロック状態に限り、条件を値域で指定することができる。
        •  min: 最小値。
        •  max: 最大値。
  • damage_source_properties—与えられたダメージに関する条件を確認する。ルート状況により状況パラメータoriginおよびdamage sourceが与えられている必要があり、与えられていない場合は常に失敗する。
    •  predicate: ダメージに関する条件。
      • ダメージの種類に対して利用可能な条件の一覧
  • entity_properties—エンティティのプロパティに関する条件を確認する。すべての状況で呼び出し可能。
    •  entity: 確認するエンティティを、ルート状況により与えられる状況パラメータthiskillerdirect_killerkiller_playerのいずれかから指定する。
    •  predicate: エンティティに課す条件。
      • エンティティに対して利用可能な条件の一覧
  • entity_scores—エンティティがスコアボード上に持っているスコアに関する条件を確認する。 entityで指定した状況パラメータルート状況により与えられている必要があり、与えられていない場合は常に失敗する。
    •  entity: 確認するエンティティを、ルート状況により与えられる状況パラメータthiskillerdirect_killerkiller_playerのいずれかから指定する。
    •  scores: スコアの条件群。指定されたすべてのスコアの条件が通過する必要がある。
  • inverted—下位プレディケートの通過・失敗を反転して出力する。すべての状況で呼び出し可能。
    •  term: 反転元のプレディケート。
  • killed_by_playerルート状況により状況パラメータkiller_playerが与えられているかどうかを確認する。与えられていない場合は常に失敗する。
  • location_check—現在の位置に関する条件を確認する。ルート状況により状況パラメータoriginが与えられている必要があり、与えられていない場合は常に失敗する。
    •  offsetX: (任意)与えられた位置から確認する位置へのX方向の変位。
    •  offsetY: (任意)与えられた位置から確認する位置へのY方向の変位。
    •  offsetZ: (任意)与えられた位置から確認する位置へのZ方向の変位。
    •  predicate: 位置に課す条件。
      • 場所に対して利用可能な条件の一覧
  • match_tool—ブロックの破壊に使用された道具に関する条件を確認する。ルート状況により状況パラメータtoolが与えられている必要があり、与えられていない場合は常に失敗する。
    •  predicate: アイテムに課す条件。
      • アイテムに対して利用可能な条件の一覧
  • random_chance chanceに指定した確率で、ランダムに条件を通過する。すべての状況で呼び出し可能。
    •  chance: 成功確率。0.0以上1.0以下で指定する。
  • random_chance_with_lootingkillerエンティティの持っているアイテムのドロップ増加のレベルに応じた確率で、ランダムに条件を通過する。ルート状況により状況パラメータkillerが与えられている必要があり、与えられていない場合は常に失敗する。
    •  chance: 確率の基本値。
    •  looting_multiplier: ドロップ増加のレベルに応じて確率がどの程度増大するか。最終的な確率はchance + (<ドロップ増加のレベル> * looting_multiplier)
  • reference—別のプレディケートファイルを参照し、その結果をそのまま結果として返す。すべての状況で呼び出し可能。
    •  name: 使用するプレディケートの名前空間ID。循環参照はエラーを生ずる。
  • survives_explosion—爆心からの半径に応じた確率(1 ÷ 半径)で、ランダムに条件を通過する。ルート状況により状況パラメータexplosion radiusが与えられている必要があり、与えられていない場合は常に失敗する。
  • table_bonus—手に持っているアイテムに特定の種類のエンチャントが付与されている際、そのエンチャントのレベルに応じた確率で条件を通過する。ルート状況により状況パラメータtoolが与えられている必要があり、与えられていない場合はレベルが0であるものとして処理される。
    •  enchantment: 参照するエンチャントの種類。
    •  chances: 各レベルごとの確率のリスト。レベル0時の確率から順に記載する。
      • : 各レベルの確率。
  • time_check—現在のゲーム内時刻(ワールド作成時から起算)に関する条件を確認する。すべての状況で呼び出し可能。
    •  value: 許容される時刻の範囲。
    •  value:  valueの略記版。条件を定数で指定する場合に使用できる。ただし、ここではナンバープロバイダーは使用できない。
    •  period: (任意)このタグを指定した場合は valueでの確認にゲーム内時刻そのものではなく、指定の値で割った余りが使用される。例えば24000に指定すると、その日の朝から起算した時刻に対して条件を確認することができる。
  • value_checkナンバープロバイダーを使用して生成した数値に対して条件を課すことで、より複雑な分布に基づいた確率で条件を判定する。すべての状況で呼び出し可能。
  • weather_check—現在の天候を確認する。すべての状況で呼び出し可能。
    •  raining: trueに設定すると、天候が雨または雷雨の際に通過する。
    •  thundering: trueに設定すると、天候が雷雨の際のみに通過する。

歴史[]

Java Edition
1.1519w38aデータパックにプレディケートが追加された。
1.1620w12aエンティティ用条件に下位条件fishing_hookが追加され、釣り竿の浮きのプロパティを確認できるようになった。
1.19.323w06adamage_source_propatiesからタグis_projectileis_explosionbypasses_armorbypasses_invulnerabilitybypasses_magicis_fireis_magicおよびis_lightningが削除された。
代わってダメージの種類タグに基づいてダメージの性質を判定するtagsが追加された。
1.2023w18a条件のタイプalternativeany_ofに改名された。
下位プレディケート全てが通過した場合に通過となる新しい条件のタイプall_ofが追加された。
Advertisement