この項目はJava Edition限定の要素です。
プレディケート(英:Predicate)はデータパックの様々なファイル内で使用されている構造である。ワールド内の要素を参照して条件の確認を行い、結果を「通過」「失敗」の二通りから返すことができる。
プレディケートはルートテーブルや進捗トリガーなどデータパック内のJSONファイルに組み込まれているほか、複数のプレディケートをまとめた個別のプレディケートファイルとして保存することもできる。
プレディケートファイルの定義[]
プレディケートファイルはデータパックのdata/<名前空間>/predicate
内にJSONファイルとして保存する。単一のプレディケートとして保存する場合は下記のプレディケートの構造をそのまま記述すればよい。一方複数のプレディケートをまとめて保存する場合は複数のプレディケート構造を リスト内にまとめて記述する。
呼び出し[]
プレディケート、およびプレディケートファイルはさまざまな場面で呼び出すことができる。
コマンドから[]
コマンド、および関数では、二通りの方法でプレディケートを呼び出すことができる。
- ターゲットセレクター:引数
predicate=
を用いると、条件に適合するエンティティのみをコマンドの対象とすることができる。この際、プレディケートは各エンティティの位置を規準に呼び出される。 /execute
:サブコマンド/execute if predicate
を用いると、条件の通過・失敗に基づいてコマンドの実行を制限できる。この際、プレディケートはコマンドの各実行文脈から与えられた位置を基準に呼び出される。
他のプレディケート[]
タイプminecraft:reference
のプレディケートは、他のプレディケートファイルを代理で呼び出すことができる。
他のデータパックファイル[]
進捗やルートテーブルではそのファイル内にプレディケートが直接組み込まれて使用されている。
JSONフォーマット[]
プレディケートは以下のJSON構造で記述される。
- : プレディケートの最上位のオブジェクト。
- condition: 確認する条件のタイプ。
- さらに conditionの値によって条件の仔細に関する追加のフィールドが必要である。
conditionの有効な値、および対応する追加のフィールドは次の通り。
- all_of—複数の下位プレディケートが設定でき、そのすべてが通過した場合に通過となる。すべての状況で呼び出し可能。
- terms: 条件となる下位プレディケートのリスト。 オブジェクト形式でなくてはならず、ここにさらに下位の リストを入れ子にすることはできない。
- 各下位プレディケート。
- terms: 条件となる下位プレディケートのリスト。 オブジェクト形式でなくてはならず、ここにさらに下位の リストを入れ子にすることはできない。
- any_of—複数の下位プレディケートが設定でき、そのうち少なくとも一つが通過した場合に通過となる。すべての状況で呼び出し可能。
- terms: 条件となる下位プレディケートのリスト。 オブジェクト形式でなくてはならず、ここにさらに下位の リストを入れ子にすることはできない。
- 各下位プレディケート。
- terms: 条件となる下位プレディケートのリスト。 オブジェクト形式でなくてはならず、ここにさらに下位の リストを入れ子にすることはできない。
- block_state_property—破壊されたブロックとそのブロック状態に関する条件を確認する。ルート状況により状況パラメータblock stateが与えられている必要があり、与えられていない場合は常に失敗する。
- block: 破壊されたブロックのIDの条件。IDが合わない場合は失敗となる。
- properties: (任意)破壊されたブロックのブロック状態に関する条件。指定のブロック状態をそのブロックが持たない場合は失敗する。
- <ブロック状態>: ブロック状態の名前をキーとして、その値の条件を指定する。値が数値や論理値であっても、必ず文字列として
""
で囲んで指定する必要がある。 - <ブロック状態>: 別表記。数値を値に持つブロック状態に限り、条件を値域で指定することができる。
- min: 最小値。
- max: 最大値。
- <ブロック状態>: ブロック状態の名前をキーとして、その値の条件を指定する。値が数値や論理値であっても、必ず文字列として
- damage_source_properties—与えられたダメージに関する条件を確認する。ルート状況により状況パラメータoriginおよびdamage sourceが与えられている必要があり、与えられていない場合は常に失敗する。
- predicate: ダメージに関する条件。
- ダメージの種類に対して利用可能な条件の一覧
- predicate: ダメージに関する条件。
- entity_properties—エンティティのプロパティに関する条件を確認する。すべての状況で呼び出し可能。
- entity: 確認するエンティティを、ルート状況により与えられる状況パラメータ
this
、killer
、direct_killer
、killer_player
のいずれかから指定する。 - predicate: エンティティに課す条件。
- エンティティに対して利用可能な条件の一覧
- entity: 確認するエンティティを、ルート状況により与えられる状況パラメータ
- entity_scores—エンティティがスコアボード上に持っているスコアに関する条件を確認する。 entityで指定した状況パラメータがルート状況により与えられている必要があり、与えられていない場合は常に失敗する。
- entity: 確認するエンティティを、ルート状況により与えられる状況パラメータ
this
、killer
、direct_killer
、killer_player
のいずれかから指定する。 - scores: スコアの条件群。指定されたすべてのスコアの条件が通過する必要がある。
- <オブジェクト>: 各条件。この条件で確認するスコアが属するオブジェクトをキーの名前に指定する。
- min: 最小値を指定するナンバープロバイダー。
- max: 最大値を指定するナンバープロバイダー。
- <オブジェクト>: 値域ではなく定数型で指定する場合に使用できる略記型。
- <オブジェクト>: 各条件。この条件で確認するスコアが属するオブジェクトをキーの名前に指定する。
- entity: 確認するエンティティを、ルート状況により与えられる状況パラメータ
- inverted—下位プレディケートの通過・失敗を反転して出力する。すべての状況で呼び出し可能。
- term: 反転元のプレディケート。
- killed_by_player—ルート状況により状況パラメータ
killer_player
が与えられているかどうかを確認する。与えられていない場合は常に失敗する。
- location_check—現在の位置に関する条件を確認する。ルート状況により状況パラメータoriginが与えられている必要があり、与えられていない場合は常に失敗する。
- offsetX: (任意)与えられた位置から確認する位置へのX方向の変位。
- offsetY: (任意)与えられた位置から確認する位置へのY方向の変位。
- offsetZ: (任意)与えられた位置から確認する位置へのZ方向の変位。
- predicate: 位置に課す条件。
- 場所に対して利用可能な条件の一覧
- match_tool—ブロックの破壊に使用された道具に関する条件を確認する。ルート状況により状況パラメータtoolが与えられている必要があり、与えられていない場合は常に失敗する。
- predicate: アイテムに課す条件。
- アイテムに対して利用可能な条件の一覧
- predicate: アイテムに課す条件。
- random_chance— chanceに指定した確率で、ランダムに条件を通過する。すべての状況で呼び出し可能。
- chance: 成功確率。0.0以上1.0以下で指定する。
- reference—別のプレディケートファイルを参照し、その結果をそのまま結果として返す。すべての状況で呼び出し可能。
- name: 使用するプレディケートの名前空間ID。循環参照はエラーを生ずる。
- survives_explosion—爆心からの半径に応じた確率(
1 ÷ 半径
)で、ランダムに条件を通過する。ルート状況により状況パラメータexplosion radius
が与えられている必要があり、与えられていない場合は常に失敗する。
- time_check—現在のゲーム内時刻(ワールド作成時から起算)に関する条件を確認する。すべての状況で呼び出し可能。
- value: 許容される時刻の範囲。
- min: 最小値を指定するナンバープロバイダー。
- max: 最大値を指定するナンバープロバイダー。
- value: valueの略記版。条件を定数で指定する場合に使用できる。ただし、ここではナンバープロバイダーは使用できない。
- period: (任意)このタグを指定した場合は valueでの確認にゲーム内時刻そのものではなく、指定の値で割った余りが使用される。例えば24000に指定すると、その日の朝から起算した時刻に対して条件を確認することができる。
- value: 許容される時刻の範囲。
- value_check—ナンバープロバイダーを使用して生成した数値に対して条件を課すことで、より複雑な分布に基づいた確率で条件を判定する。すべての状況で呼び出し可能。
- value: 確認する値を生成するナンバープロバイダー。
- range: valueで生成した値の許容範囲。
- min: 最小値を指定するナンバープロバイダー。
- max: 最大値を指定するナンバープロバイダー。
- value: valueの略記版。条件を定数で指定する場合に使用できる。ただし、ここではナンバープロバイダーは使用できない。
- weather_check—現在の天候を確認する。すべての状況で呼び出し可能。
- raining:
true
に設定すると、天候が雨または雷雨の際に通過する。 - thundering:
true
に設定すると、天候が雷雨の際のみに通過する。
- raining:
歴史[]
Java Edition | |||||
---|---|---|---|---|---|
1.15 | 19w38a | データパックにプレディケートが追加された。 | |||
1.16 | 20w12a | エンティティ用条件に下位条件fishing_hookが追加され、釣り竿の浮きのプロパティを確認できるようになった。 | |||
1.19.3 | 23w06a | damage_source_propaties からタグis_projectile 、is_explosion 、bypasses_armor 、bypasses_invulnerability 、bypasses_magic 、is_fire 、is_magic およびis_lightning が削除された。 | |||
代わってダメージの種類タグに基づいてダメージの性質を判定するtags が追加された。 | |||||
1.20 | 23w18a | 条件のタイプalternative がany_of に改名された。 | |||
下位プレディケート全てが通過した場合に通過となる新しい条件のタイプall_of が追加された。 |
要素 |
| ||
---|---|---|---|
データパック |
| ||
チュートリアル |