この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
この記事では、こんな疑問を解決します!
- invertedで意味を反転させる
- 実際の例
predicateの項目の一つに、invertedというものがあります。
これは通常の項目と異なり、別の項目を指示して使うものです。
いまいち分かりにくいわけですが、端的に言ってしまえば「意味を反転させることができる項目」になります。
詳しい使い方など解説していくので、ぜひ参考にしてくださいね。
それでは、さっそく見ていきましょう!
本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。
invertedで意味を反転させる
predicateのinvertedでは、指示した内容と反転させたものを検知します。
分かりやすい例では、コマンドにおけるifとunlessの関係ですね。
通常時は入力した内容に沿うためifと同等だと受け取れ、invertedに記述することで、unlessを指示した時と同じように使えます。
例えば、場所の特徴から検知することのできるloacation_checkをinvertedで指示した場合は、「指示した内容に合わない場所にいればOK」ということになります。
「平野のバイオームにいる場合に~」がinvertedによって「平野のバイオームにいなければ~」といった感じですね。
このようにinvertedにするだけで意味を反転できるので、非常に便利で使う機会も少なくない項目になります。
実際の例
ここからは実際にpredicateとして実装する際の話をしていきます。
invertedはpredicateの1種ということで、データパックを用いて導入する必要があります。
データパックの構造としては、以下の通り。
- datapack本体
- data
- sample
- predicates
- inverted_test.json
- predicates
- sample
- pack.mcmeta
- data
inverted_test.jsonの中身はこちら。
{
"condition": "minecraft:inverted",
"term": {
"condition": "minecraft:location_check",
"predicate": {
"biome": "minecraft:plains"
}
}
}
invertedが指示されており、その中にlocation_checkが記述されています。
今回の場合はplainsが指示されているので、本来であれば平野のバイオームにいるなら条件を満たすことになります。
しかし、invertedで指示されているため、「平野のバイオームにいない場合」となります。
今回利用した生成サイトはこちら
また、pack.mcmetaの中身は以下の通りになります。
{
"pack": {
"pack_format": 26,
"description": ""
}
}
上記2つのファイル以外は全てフォルダとなっています。
データパックの作成、導入が済めば、あとはコマンドを実行するだけです。
今回の例の場合は
/execute if predicate sample:inverted_test run give @a diamond 1
を実行することになります。
平野にいれば失敗し、平野以外のバイオームであればrun以降に記述されているgiveコマンドによって、ダイヤモンドが付与されます。
まとめ
というわけで、今回のまとめです。
- invertedは指示したpredicateの内容に沿わない場合に、真となる項目。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!