この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
この記事では、こんな疑問を解決します!
- any_of で複数の条件から検知する
- 実際の例
predicateの項目であるany_ofは、all_ofと同様に複数のpredicateを記述する必要のある項目です。
しかしながらall_ofとは異なり、記述したpredicateのうち1つでも条件を満たせばany_ofも「真」となります。
この記事では具体的な例を出しつつ、これらの事を深掘りしていきます。
というわけで、さっそく見ていきましょう!
本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。
any_of で複数の条件から検知する
any_ofはall_ofと同じく、複数のpredicateを指示して使う項目です。
all_ofについては以下の記事で解説しています。
ですが、all_ofとは異なり、指示したpredicateのどれかが条件を満たしていれば、any_ofも「真」となります。
例えば、location_checkで平野を指示し、entity_scoresでsample_scoreというスコアボードの値が10以上100以下の場合を指示したとします。
all_ofであれば両者ともに条件を満たす必要があるため、平野にいて、なおかつ値が10~100である必要があります。
それがant_ofでは、どちらか1つでも条件を満たせばOKです。
つまり、「平野にいればいい」「平野にいなくともスコアボードの値が適切であればOK」といった感じになります。
1つ以上満たしていれば良いので、すべて満たした場合でも「真」となります。
実際の例
ここからは実際の例を見ていきます。
先ほども例に挙げたように、「平野にいる」もしくは「指示したスコアボードの値が10以上100以下である」場合に真となるany_ofを作成してみましょう。
まずはデータパックの作成からです。
- datapack本体
- data
- sample
- predicates
- test.json
- predicates
- sample
- pack.mcmeta
- data
pack.mcmeta、test.json以外は全てフォルダです。
また、pack.mcmeta、test.jsonの中身は以下の通り。
{
"pack": {
"pack_format": 26,
"description": ""
}
}
test.jsonはこちら。
{
"condition": "minecraft:any_of",
"terms": [
{
"condition": "minecraft:location_check",
"predicate": {
"biome": "minecraft:plains"
}
},
{
"condition": "minecraft:entity_scores",
"entity": "this",
"scores": {
"sample_score": {
"min": 10,
"max": 100
}
}
}
]
}
今回は例としてjsonファイルの中身を記述していますが、predicateは生成サイトを使って作るのが簡単でおすすめです。
predicateを生成できるサイトはこちら
データパック作成・導入後に、実行するコマンド例としてはこちら。
/execute if predicate sample:test run give @a diamond 1
指示した条件のうち1つ以上当てはまっていれば、ダイヤモンドが付与されるコマンドです。
もちろん、全ての条件に適さなければダイヤモンドが付与されることはありません。
まとめ
というわけで、今回のまとめです。
- any_ofは複数の条件を書いたうえで、いずれかが満たしていれば「真」となる。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!