マルチプレイなら『シン・VPS』がおすすめ!

【耕地ブロックとコマンド】農作物が植わっているかを検知【マイクラ】

【耕地ブロックとコマンド】農作物が植わっているかを検知【マイクラ】

この記事では、Minecraft Java Edition(バージョン1.18.2)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

コマンドで畑を扱いたいマインクラフター
「耕されている状態の土ブロックってどういうアイテムIDを持っているの? 畑に何か植えられている状態を検知するにはどうすればいいのかな?」

こんな疑問を解決します!

本記事の内容
  • 耕地のアイテムID
  • 農作物が植わっているかどうかを検知する方法

こんにちは! マインクラフターのなつめ(@natsume_717b)です。

なつめ

マイクラ歴は5年程で、最近は脱出マップを配布・制作しています!
→配布マップ・ダウンロードページ

この記事では農作物を植えることのできる耕地ブロックを、コマンドの観点からお話していきます。

具体的には耕地ブロックのアイテムID、農作物が植わっている耕地ブロックを判定する方法といった感じですね。

農作物が植わっているかどうかの判定については、どんなものでもいいから植わっていることを感知する方法と、特定の農作物が植わっている場合の2種類を紹介。

それでは、さっそく見ていきましょう!



耕地のアイテムID

耕地のアイテムIDは”minecraft:farmland”になっています。

なので、giveコマンドで手に入れようとする場合には

/give @p minecraft:farmland 1

とすればいいわけですね。

もしも土ブロックから耕地に変化したように見せる際にコマンドを使いたい場合は、setblockコマンドを使えばOKです。

土ブロックがある場所の座標を指定しつつ、土ブロックを耕地ブロックに上書きします。
(下記コマンドでは、座標をXYZ=10の地点で指定しています。なので、各自土ブロックのある座標へと変更して実行してください)

/setblock 10 10 10 minecraft:farmland replace

農作物が植わっているかどうかを検知する方法

耕地ブロックと言えば、農作物を植えられるブロックです。
なので、農作物が植わっているかどうかをコマンドを使って判定してみたいという場合もあるはず。

結論から言うと、判定することができます。

耕地ブロックと農作物の植わっているブロックは別のマスなので、耕地ブロックの上のブロックに何のアイテム(ブロック)があるのかを判断すれば、上手くいくはずと予想できます。

そこで使うのがexecuteコマンドで、「どこそこの座標に□□のブロックがない場合にコマンドを実行する」という条件を付与して、コマンドを実行します。

今回の場合は「農作物がある=空気ブロックではない」という考えでやっていくわけですね。

自由にブロックを設置できないアドベンチャーモードで使うことを想定しています。
サバイバルモードなどの自由にブロックを設置できるモードの場合は、農作物以外のブロックを置かれる可能性があるため、その場合もう少し精密に判定するようコマンドを組む必要があります。

あくまでも例なので、実行されるコマンドはeffectコマンドにしてプレイヤーが発光するようにします。
というわけで、以下のコマンドをリピートコマンドブロックに打ち込みます。

/execute unless block 10 10 10 air run effect give @p minecraft:glowing 1 0 true

これで、座標XYZ=10の場所が空気ブロックでなければプレイヤーが発光されるようになります。

なので、耕地ブロックはXZ=10、Y=9の場所にあることになりますね。

実際に使用してみる際は、以下の言語化したものを参考にしてみてください。
unless blockからrunの手前までの部分が「指定した場所に指定したブロックがない場合」を指示する場所になっています。

/execute unless block 座標 ブロックのID run 実行したいコマンド

特定の農作物が植わっているかどうかを判定したい場合

特定の農作物が植わっているかどうかを判定したい場合には、上述したコマンドのように「空気ブロックでない場合」とやらずに「○○がある場合」としてしまえばOKです。

というわけで、unlessではなくifを使っていきます。
以下のコマンドはジャガイモが植わっている場合にeffectコマンド(発光)が実行されるようになっているものです。

/execute if block 10 10 10 minecraft:potatoes run effect give @p minecraft:glowing 1 0 true

その他の農作物のIDは以下の表をどうぞ。

農作物ID
小麦の種(小麦)minecraft:wheat
ジャガイモminecraft:potatoes
ニンジンminecraft:carrots
ビートルートの種(ビートルート)minecraft:beetroots

本来のアイテムIDとは若干スペルが異なるので、要注意です。
(ジャガイモの場合はminecraft:potatoからminecraft:potatoesとなっています)

まとめ

というわけで、今回のまとめです。

今回使ったコマンドはこちら。

今回使ったコマンド
  • 耕地ブロックを手に入れるコマンド
/give @p minecraft:farmland 1
  • 座標XYZ=10の地点を耕地ブロックに置き換えるコマンド
/setblock 10 10 10 minecraft:farmland replace
  • 座標XYZ=10の地点が空気ブロックでない場合に発光のエフェクトを付与するコマンド
    (XZ=10、Y=9の地点に耕地ブロックを置くことで、農作物が植わっているかどうかを判定できる)
/execute unless block 10 10 10 air run effect give @p minecraft:glowing 1 0 true
  • 座標XYZ=10の地点にジャガイモが植わっている場合にコマンドを実行するコマンド
/execute if block 10 10 10 minecraft:potatoes run effect give @p minecraft:glowing 1 0 true
ポイント
  • 農作物を感知したい場合、農作物のあるブロックが空気ブロックではないことを利用したり、特定の農作物のIDを指定することで感知できます。

この記事は以上になります。

  • 【まとめ】functionコマンドの基本から応用【マイクラ】
  • 【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】