ルートテーブル/プレディケート
![]() | この項目はJava Edition限定の要素です。 |
プレディケート(Predicate)は、ルートテーブルの条件(コンディション)を分離し、コマンドの実行時の条件(引数。こちらを参照)としても使えるようにしたものである。ver1.15で追加された。
利用法
以下のコンディションから一つまたは複数を選んで記述し、JSONファイルとしてデータパックの中に保存する。
複数個選んだ場合は、中括弧 [] の中に並列する。
コンディションの一覧
以下の説明中で、「アイテム共通」、「位置共通」、「エンティティ共通」、「ダメージの種類共通」と書かれている部分をクリックすると、その部分に使えるタグの一覧に移動する。ブラウザの戻るボタンで元の位置に戻ることができる。
block_state_property
{
"condition":"block_state_property",
"block":"<ブロックID>",
"property":{<そのブロックの状態>}
}
ブロックの種類および状態に対する条件。ブロックIDはこちらを、ブロックの状態はこちらを参照。
damage_source_properties
{
"condition":"damage_source_properties",
"predicate":{$!ダメージの種類共通!$}
}
ダメージの種類に対する条件。
entity_properties
{
"condition":"entity_properties",
"entity":"this / killer / killer_player / direct_killer",
"predicate":{$!エンティティ共通!$}
}
エンティティに対する条件。
エンティティを倒したエンティティへの条件の場合はkiller、エンティティを倒したプレイヤーへの条件の場合はkiller_player、エンティティを直接倒したエンティティへの条件の場合はdirect_killer、それ以外の場合はthisとする。
killerとdirect_killerの違いであるが、たとえば矢でエンティティを倒した場合、killerは矢を放ったエンティティ、direct_killerは矢自体となる。
entity_scores
{
"condition":"entity_scores",
"entity":"thisまたはkillerまたはkiller_playerまたはdirect_killer",
"scores":{
"<スコアボードオブジェクト名>":<4バイト整数値> / $!数値セレクタ!$
}
}
スコアボードの値に対する条件。
エンティティを倒したエンティティへの条件の場合はkiller、エンティティを倒したプレイヤーへの条件の場合はkiller_player、エンティティを直接倒したエンティティへの条件の場合はdirect_killer、それ以外の場合はthisとする。
killerとdirect_killerの違いであるが、たとえば矢でエンティティを倒した場合、killerは矢を放ったエンティティ、direct_killerは矢自体となる。
killed_by_player
{
"condition":"killed_by_player",
"inverse":true / false
}
他のエンティティを倒したプレイヤーがいるか(=エンティティがプレイヤーに倒されたか)を判定。inverseをtrueとすると、真偽が反転する。
location_check
{
"condition":"location_check",
"offsetX":<4バイト整数値>,
"offsetY":<4バイト整数値>,
"offsetZ":<4バイト整数値>,
"predicate":{$!位置共通!$}
}
位置に対する条件。
match_tool
{
"condition":"match_tool",
"predicate":{$!アイテム共通!$}
}
ツールに対する条件。
random_chance
{
"condition":"random_chance",
"chance":<4バイト浮動小数点値>
}
0~1までの任意の数を生成し、それがchanceに記載した値より小さいときに真となる。
(言い換えれば、chanceの値の確率で真となる)
random_chance_with_looting
{
"condition":"random_chance_with_looting",
"chance":<4バイト浮動小数点値>,
"looting_multiplier":<4バイト浮動小数点値>
}
random_chanceに幸運の効果を反映させたバージョン。
survives_explosion
{
"condition":"survives_explosion"
}
爆発が起きたとき、爆発力の逆数の確率で真となる。
table_bonus
{
"condition":"table_bonus",
"enchantment":"<エンチャントID>",
"chances":[<各エンチャントレベルに対応する確率>]
}
エンチャントレベル毎に定めた確率で真となる。
chancesタグの中には、エンチャントレベルに応じた確率をレベル0(=エンチャントなし)から順に記述する。
time_check
{
"condition":"time_check",
"value":<4バイト整数値> / $!数値セレクタ!$,
"period":<4バイト整数値>
}
現在の時間に対する条件。periodタグがある場合、現在の時間をperiodタグの値で割った余りで判定される。
weather_check
{
"condition":"weather_check",
"raining":true / false,
"thundering":true / false
}
現在の天候に対する条件。
reference
{
"condition":"reference",
"name":"<predicateファイルのパス>"
}
nameに記載したプレディケートが真の時に真となる。
alternative
{
"condition":"alternative",
"terms":[
<コンディション>
]
}
termsの中に並べたコンディションのうちいずれか一つが真の時に真となる。
inverted
{
"condition":"inverted",
"term":<コンディション>
}
termの後ろに記述したコンディションの真偽を反転させる。
数値セレクタ
数値セレクタは以下の3種類である。
{
"type":"constant",
"value":<4バイト整数値> / <4バイト浮動小数点値>
}
valueの値を返す。
{
"type":"uniform",
"min":<4バイト整数値> / <4バイト浮動小数点値> / <数値セレクタ>,
"max":<4バイト整数値> / <4バイト浮動小数点値> / <数値セレクタ>
}
minとmaxの間の任意の数を返す。
{
"type":"binominal",
"n":<4バイト整数値> / <数値セレクタ>,
"p":<4バイト浮動小数点値> / <数値セレクタ>
}
二項分布(n,p)に従う値を返す。
共通のタグ
アイテム共通
"item":"<アイテムID>"
アイテムのID。
ver1.13以降はこちら、ver1.12.2まではこちらを参照。
"nbt":{<アイテムのデータタグ>}
そのアイテムのデータタグを指定。
データタグについてはこちらを参照。
"tag":"<データパックのタグのパス>"
ver1.13で追加
データパックのタグについてはこちらを参照。
"count":<4バイト整数値>または
"count":{"min":<4バイト整数値>,"max":<4バイト整数値>}
アイテムの個数。
"durability":<4バイト整数値>または
"durability":{"min":<4バイト整数値>,"max":<4バイト整数値>}
アイテムの耐久値。
"enchantments":[{"enchantment":"<ID>","levels":<4バイト整数値>}]または
"enchantments":[{"enchantment":"<ID>","levels":{"min":<4バイト整数値>,"max":<4バイト整数値>}}]
アイテムのエンチャントの種類とそのレベル。
IDについてはこちらを参照。
"stored_enchantments":[{"enchantment":"<ID>","levels":<4バイト整数値>}]または
"stored_enchantments":[{"enchantment":"<ID>","levels":{"min":<4バイト整数値>,"max":<4バイト整数値>}]
ver1.15で追加
エンチャントの本のエンチャントの種類、およびそのレベル。ver1.14.4まではエンチャントの本もenchantmentsタグを用いる。
"potion":"<ポーションの種類>"
ポーションの場合のみ有効。
ポーションの種類は以下の表を参照。
表:ポーションの種類を表す文字列
ポーション | 効果 | 通常 | II | 延長 |
---|---|---|---|---|
未使用のポーション | なし | empty | – | – |
水入り瓶 | なし | water | – | – |
ありふれたポーション | なし | mundane | – | – |
濃厚なポーション | なし | thick | – | – |
奇妙なポーション | なし | awkward | – | – |
暗視のポーション | 暗視 | night_vision | – | long_night_vision |
透明化のポーション | 透明化 | invisibility | – | long_invisibility |
跳躍のポーション | 跳躍力上昇 | leaping | strong_leaping | long_leaping |
耐火のポーション | 火炎耐性 | fire_resistance | – | long_fire_resistance |
俊敏のポーション | 移動速度上昇 | swiftness | strong_swiftness | long_swiftness |
鈍化のポーション | 移動速度低下 | slowness | strong_slowness | long_slowness |
水中呼吸のポーション | 水中呼吸 | water_breathing | – | long_water_breathing |
治癒のポーション | 即時回復 | healing | strong_healing | – |
負傷のポーション | 即時ダメージ | harming | strong_harming | – |
毒のポーション | 毒 | poison | strong_poison | long_poison |
再生のポーション | 再生能力 | regeneration | strong_regeneration | long_regeneration |
力のポーション | 攻撃力上昇 | strength | strong_strength | long_strength |
弱化のポーション | 弱体化 | weakness | – | long_weakness |
幸運のポーション | 幸運 | luck | – | – |
タートルマスターのポーション | 移動速度低下・耐性 | turtle_master | strong_turtle_master | long_turtle_master |
低速落下のポーション | 落下速度低下 | slow_falling | – | long_slow_falling |
位置共通
"biome":"<バイオームID>"
その位置におけるバイオーム。
ver1.13以降のバイオームIDはこちらを、ver1.12.2までのバイオームIDはこちらを参照。
"block":{
"block":"<ブロックID>",
"state":{<ブロックの状態>},
"tag":"<データパックのタグ>",
"nbt":"<NBTタグ>"
}
ver1.15で追加
その位置に存在するブロック。
ブロックIDはこちらを、ブロックの状態はこちらを参照。
"fluid":{
"fluid":"<液体のID>",
"tag":"<データパックのタグ>",
"state":{<状態>}
}
ver1.15で追加
その位置に存在する液体。
液体のIDはこちらを、状態はこちらを参照。
"light":{
"light":<4バイト整数値> / {"max":<4バイト整数値>,"min":<4バイト整数値>}
}
ver1.15で追加
その位置の明るさ。
"smokey":true / false
ver1.16で追加
付近に焚火または魂の焚火があるかどうか。
"position":{
"x":<8バイト浮動小数点値> / {"max":<8バイト浮動小数点値>,"min":<8バイト浮動小数点値>},
"y":<8バイト浮動小数点値> / {"max":<8バイト浮動小数点値>,"min":<8バイト浮動小数点値>},
"z":<8バイト浮動小数点値> / {"max":<8バイト浮動小数点値>,"min":<8バイト浮動小数点値>}
}
その位置の座標。
"dimension":"overworld / the_nether / the_end"
その位置のディメンション。
"structure":"<構造物のID>"
ver1.19から
その位置にある構造物。構造物のIDはこちらを参照。
"feature":"<構造物のID>"
ver1.18.2まで
その位置にある構造物。構造物のIDはこちらを参照。
エンティティ共通
"type":"<エンティティID>"
エンティティのID。
ver1.13以降はこちらを、ver1.12.2まではこちらを参照。
"nbt":"<NBTタグ>"
エンティティのデータタグ。
こちらを参照。
"team":"<チーム名>"
ver1.15で追加
そのエンティティが属するチーム。
"location":{$!位置共通!$}
エンティティのいる場所に対する条件。
"distance":{
"absolute":{
"max":<4バイト浮動小数点値>,
"min":<4バイト浮動小数点値>
},
"horizontal":{
"max":<4バイト浮動小数点値>,
"min":<4バイト浮動小数点値>
},
"x":{
"max":<4バイト浮動小数点値>,
"min":<4バイト浮動小数点値>
},
"y":{
"max":<4バイト浮動小数点値>,
"min":<4バイト浮動小数点値>
},
"z":{
"max":<4バイト浮動小数点値>,
"min":<4バイト浮動小数点値>
}
}
プレイヤーから当該エンティティまでの距離。
absoluteは直線距離、horizontalは水平方向、
xはx軸方向、yはy軸方向、zはz軸方向の距離に対する条件となる。
"effects":{
"<エフェクトID>":{
"amplifier":<4バイト整数値> / {"min":<4バイト整数値>,"max":<4バイト整数値>},
"duration":<4バイト整数値> / {"min":<4バイト整数値>,"max":<4バイト整数値>}
}
}
当該エンティティに付与されているエフェクト。
エフェクトIDはこちらを参照。
- amplifier
- エフェクトのレベルを指定する。
- duration
- エフェクトの継続時間をtick(1/20秒)単位で指定する。
"equipment":{
"mainhand":{$!アイテム共通!$},
"offhand":{アイテム共通},
"head":{アイテム共通},
"chest":{アイテム共通},
"legs":{アイテム共通},
"feet":{アイテム共通}
}
ver1.14で追加
当該エンティティの装備しているアイテム。
"flags":{
"is_on_fire":true / false,
"is_sneaking":true / false,
"is_sprinting":true / false,
"is_swimming":true / false,
"is_baby":true / false
}
ver1.14で追加
エンティティに対する条件。
is_on_fireは火がついているかどうか、is_sneakingはスニークしているかどうか、is_sprintingは走っているかどうか、is_swimmingは水中にいるかどうか、is_babyは子供かどうか。
"targeted_entity":{$!エンティティ共通!$}
当該エンティティが攻撃したエンティティに対する条件。
"vehicle":{$!エンティティ共通!$}
当該エンティティが乗っているエンティティに対する条件。
"type_spedific":{
"type":"player" / "fishing_hook" / "lightning_bolt" / "cat" / "frog" / "slime",
"<固有のタグ>":<値>
}
ver1.19から
特定のエンティティに対して有効な条件。type
の値に対応する固有のタグは以下の通り。
playerの場合:
"advancements":{
"<進捗のパス>":true / false,
"<進捗のパス>":{
"<条件の名前>":true / false
}
},
"gamemode":"survival / creative / adventure / spectator",
"level":<4バイト整数値>または{"max":<4バイト整数値>,"min":<4バイト整数値>},
"recipes":{
"<レシピのパス>":true / false
},
"stats":[
{
"type":"<統計の名前空間>",
"stat":"<統計のID>",
"value":<4バイト整数値>または{"max":<4バイト整数値>,"min":<4バイト整数値>}
}
],
"looking_at":{$!エンティティ共通!$}
プレイヤーに対する条件。
- advancements
- 進捗、または進捗解除に必要な特定の条件を取得しているかどうか。
- gamemode
- プレイヤーのゲームモード。
- level
- プレイヤーの経験値レベルに対する条件。
- recipes
- そのレシピが解放されているかどうか。
- stats
- 統計の値に対する条件。名前空間とIDについてはこちらを参照。
- looking_at
- プレイヤーの視線の先にあるエンティティに対する条件。
fishing_hookの場合:
"in_open_water":true / false
釣り竿の浮きに対する条件。
- in_open_water
- 浮きの周囲5×4×5ブロックが水か空気であるかどうか。デフォルトでは「宝」カテゴリのアイテムが釣れるかどうかの判定に用いられている。
lightning_boltの場合:
"blocks_set_on_fire":<4バイト整数値> / {"min":<4バイト整数値>,"max":<4バイト整数値>},
"entity_struck":{$!エンティティ共通!$}
雷に対する条件。
- blocks_set_on_fire
- 雷によって発火したブロックの個数に対する条件。
- entity_struck
- 雷が当たったエンティティに対する条件。
catの場合:
"variant":"<ネコの種類>"
ネコに対する条件。
- variant
- ネコの種類を指定。可能な値はネコのデータタグの
variant
に指定できるものと同じ。
frogの場合:
"variant":"<カエルの種類>"
カエルに対する条件。
- variant
- カエルの種類を指定。可能な値はカエルのデータタグの
variant
に指定できるものと同じ。
slimeの場合:
"size":<4バイト整数値> / {"min":<4バイト整数値>,"max":<4バイト整数値>}
- size
- 大きさを指定。
"player":{
"advancements":{
"<進捗のパス>":true / false,
"<進捗のパス>":{
"<条件の名前>":true / false
}
},
"gamemode":"survival / creative / adventure / spectator",
"level":<4バイト整数値>または{"max":<4バイト整数値>,"min":<4バイト整数値>},
"recipes":{
"<レシピのパス>":true / false
},
"stats":[
{
"type":"<統計の名前空間>",
"stat":"<統計のID>",
"value":<4バイト整数値>または{"max":<4バイト整数値>,"min":<4バイト整数値>}
}
],
"looking_at":{$!エンティティ共通!$}
}
ver1.15からver1.18.2まで(looking_at
はver1.17から)
エンティティがプレイヤーの場合に使える条件。上記「playerの場合」を参照。
"fishing_hook":{
"in_open_water":true / false
}
ver1.16からver1.18.2まで
釣り竿の浮きに対する条件。上記「fishing_hookの場合」を参照。
"lightning_bolt":{
"blocks_set_on_fire":<4バイト整数値> / {"min":<4バイト整数値>,"max":<4バイト整数値>},
"entity_struck":{$!エンティティ共通!$}
}
ver1.17からver1.18.2まで
雷に対する条件。上記「lightning_boltの場合」を参照。
"catType":"<ネコの種類>"
ver1.14からver1.18.2まで
ネコに対する条件。ネコの種類は以下の通り。
ダメージの種類共通
"bypasses_armor":true / false,
"bypasses_invulnerability":true / false,
"bypasses_magic":true / false,
"is_explosion":true / false,
"is_fire":true / false,
"is_magic":true / false,
"is_projectile":true / false,
"is_lightning":true / false
ダメージの種類に対する条件。
- bypasses_armor
- 防具による軽減を受けないダメージかどうか。
- bypasses_invulnerability
- 奈落、またはkillコマンドによるダメージかどうか。
- bypasses_magic
- 空腹、奈落、またはkillコマンドによるダメージかどうか。
- is_explosion
- 爆発系のダメージかどうか。
- is_fire
- 燃焼系のダメージかどうか。
- is_magic
- ステータス効果、ソニックブーム、棘の鎧、または間接攻撃によるダメージかどうか。
- is_projectile
- 発射物によるダメージかどうか。
- is_lightning
- ver1.14で追加。雷によるダメージかどうか。
"direct_entity":{$!エンティティ共通!$}
"source_entity":{$!エンティティ共通!$}
- direct_entity
- 直接ダメージを与えたエンティティ。例えばスケルトンが放った矢がダメージを与えた場合は、矢となる。
- source_entity
- ダメージを与える原因となったエンティティ。他のエンティティによって発射されたエンティティの場合は、発射した方のエンティティが該当する。
例えばスケルトンが放った矢がダメージを与えた場合は、スケルトンとなる。