この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
この記事では、こんな疑問を解決します!
- weather_checkで天候を検知する
- 実際の例
weather_checkはその名の通り、天候をチェックするpredicateです。
指示した内容と天候を比べて矛盾が生じなければ真となる項目なので、シンプルに天候次第で条件分岐させることが可能です。
詳しく見ていきましょう!
本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。
weather_checkで天候を検知する
weather_checkは実行場所の天候を検知して、指示したものと比較したうえで真偽を出します。
雨と雷雨に対してtrueかfalseで指示することができ、trueにすればその天候であることを指示し、falseにした場合はその天候でないことを指示したことになります。
つまり、雨であるかどうかを指示したければ、rainingの項目をtrueにしつつ、雷雨をfalseにすれば良いわけですね。
雷雨でも雨である判定がなされるため、雷雨を除いた雨を検知したい場合は上記のように雷雨をfalseで指示する必要があります。
雷雨も同様にtrueかfalseで指示できますが、晴れを指示したい場合には、雨と雷雨を同時にfalseを指定します。
これで晴れかどうかをチェックできます。
正確には、「雨でも雷雨でもない天候の場合に真となる」という指示をしています。
また、雨と雷雨を同時にtrueで指示した場合には、雷雨の場合に限り真となります。
これは雨という天候に対して、雷雨は含まれていないためです。
実際の例
まずはデータパックを作成しましょう。
構造は以下の通りです。
- datapack本体
- data
- sample
- predicates
- 各種jsonファイル
(今回はrain.jsonと命名したとします)
- 各種jsonファイル
- predicates
- sample
- pack.mcmeta
- data
pack.mcmetaとjsonファイル以外は全てフォルダになります。
pack.mcmetaの中身は以下の通り。
{
"pack": {
"pack_format": 26,
"description": ""
}
}
jsonファイルの中身はこちら。
{
"condition": "minecraft:weather_check",
"raining": true,
"thundering": false
}
今回は「雨であるか?」という項目をtrueに指示しました。
雷雨をfalseにすることで、雷雨は条件に含めないようにしてますね。
難しいコードではありませんが、生成サイトを使う方が圧倒的に簡単なので、生成サイトのリンクを貼っておきます。
ここから生成できます!
データパックの作成を完了し、導入した後はコマンドを実行するだけです。
今回の例で言えば
/execute if predicate sample:rain run give @a diamond 1
というコマンドを実行した際に、天候が雨であれば真であるためダイヤモンドが付与されます。
雨でなければ、ダイヤモンドは付与されないわけですね。
天候はweatherコマンドで変更することが可能です。
まとめ
というわけで、今回のまとめです。
- weather_checkは天候を条件にする項目で、指示した内容と適切であれば真となる。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!