「負の条件付き」で、コマンドの可能性はもっと広がる。【第1回応用コマンド講座】


どうもこんにちはけいです。今回からコマンド応用講座を担当していきます。よろしくお願いします!


コマンドには前のコマンドが動作した時に動作する条件付きというシステムがあります。
しかし、そんなコマンドブロックには、前のコマンドが失敗した時に動作するシステム(これを、これ以降負の条件付きと呼びます)が、残念ながらありません。
今回は、コマンドを組み合わせることによって負の条件付きの使い道やそれを作る方法、その原理を紹介していきたいと思います。

使い道

需要、使い道としては、例としてエンチャントショップなどが挙げられます。具体的な機能としては、「/enchantでエンチャントできるアイテムを持っていなかったときに、エンチャント可能なアイテムがないことを知らせるチャットを表示させる」といった感じでしょうか。

このように、なんらかのコマンドが実行できなかったとき特定のコマンドを実行させることができるので、実行エラーを出す機構などに使うことができます。

作り方

例として先ほど話に出したエンチャントショップを作っていきましょう。これをコマンドで作っていくときには、「/enchantコマンドが失敗したときチャットを表示するコマンド(/sayや/meなど)を実行する」仕組みが必要になります。
※今回は通貨(お金)のシステムはとりあえず考えずに作っていきます。ご了承ください。


とりあえず、今回のかんたんな流れを確認しましょう。
/enchant @p sharpness 1
↓↓↓負の条件付き
/me エンチャント可能なアイテムを所持してボタンを押してください
と、こんな感じになります。

負の条件付きはいくつかやり方がありますが、今回はブロック検知を利用した方法を紹介しましょう!

ブロック検知を利用する方法は、

  • 検知するブロックをリセット
  • (主となるコマンドが実行できたとき、)リセット後のブロックを検知するブロックに変換
  • /testforblockで検知するブロックの種類を確認

の3段階です。
まあ、説明するよりも実際に作る方が早いのでやっていきましょう!


今回は以下のようなコマンドとなります。

※「A」と書かれているブロックは検知するブロックのことです。

まずはリセットとして、①の位置に

①/setblock [Aのブロックの座標] wool 0

と書きます。

次に②の位置に負の条件付きにつながるコマンドを書きます。今回は/enchantコマンドとなるので、

②/enchant @p sharpness 1

と書きます。

次に③の位置に条件付き

③/setblock [Aのブロックの座標] wool 1

と書きます。

そして、④の位置に

④/testforblock [Aのブロックの座標] wool 0

と書きます。

最後に、条件付きで⑤の位置に負の条件付きが動作した時に動作するコマンドを書きます。今回はエンチャント可能なアイテムがないことを知らせるエラー文として

⑤/me エンチャント可能なアイテムを所持してボタンを押してください

としておきます。

これで完成です!どうでしたか?少し難しかったと感じる方もいるかと思います。
しかし、最終的には皆さんにこれを自分で考えて作れるようになってもらいたいと考えています。そのために、今回紹介した例を使って、負の条件付きの原理、理屈を説明していきます。

負の条件付きの原理

最初に[Aのブロックの座標]のブロックは①のコマンドで白羊毛にしてあり、エンチャントが実行することで③のコマンドでオレンジ羊毛になります。つまり、コマンドが成功するとオレンジ羊毛失敗すると白羊毛になるのです。そして、それを検知するのが④の/testforblockで、白羊毛の失敗を検知します。よって、⑤の条件付きは②のエンチャントが失敗した時に動作するようになるのです。


ここまでざっと紹介と説明をしていきました。少しでも負の条件付きを理解して、今後のコマンドを使ったワールド制作などに活かしていただけると嬉しいです!
もし分からないことがあれば、下のコメントや私のTwitterに質問など送ってくださいね。応用コマンド講座の担当執筆者が答えます!(返信に時間かかるかもしれないけど)

次回は「応用コマンド講座Extra」ということで、今回の機構を利用した具体的なショップの作成を解説していきますよ。ぜひご覧くださいね!

それではまた…


次回(応用コマンド講座Extra#1)⬇︎

 Tiprint
Tiprint
https://tiprint.net/comhex1
マイクラPE/BE/switch 情報サイト