たかしが征く

ゲームやガジェットに関する様々な疑問を調査員たかしが体を張ってお伝えします。

コマンドブロックを使って一歩高みへ③~複数コマンドを条件を付けて実行する~

見出し画像を拡大表示

 

 

こんにちはたかしです!

この記事ではコマンドブロックを使って「コマンドを条件付きで実行させる方法」について話していきたいと思います!

前回の記事 ーチェーンブロック・リピートブロックについて

 

somaz.hatenablog.com

 

初回の記事 ーコマンドブロックとは?

 

somaz.hatenablog.com

 

 

コマンドブロックの「条件」「動力」

今回肝になるブロックは「チェーンブロック」です。
使い方や基本的な機能は前回紹介しましたが、ここではもう一歩進んで「条件」「動力」の有無について話していきます。

まずはいつものようにコマンド設定画面を開きましょう。
気づいている人もいるかもしれませんが、コマンド入力欄の下には三つのボタンが並んでいます。

画像を拡大表示
三つのボタン

一番左端のボタンについては前回解説した通りです。
ボタンを押すことでコマンドブロックの種類を変更できるのでした。

画像を拡大表示
インパルスブロック
画像を拡大表示
チェーンブロック
画像を拡大表示
リピートブロック

「無条件」と「条件付き」


では真ん中の「無条件」ボタンを見てみましょう。

押すと「無条件」「条件付き」を選択できるのがわかるかと思います。
外観は「無条件」がホームベース状の五角形であるのに対し、「条件付き」がその左辺を凹ませたような形になっています。

画像を拡大表示
無条件ブロック各種
画像を拡大表示
画像を拡大表示
条件付きブロック各種
画像を拡大表示

では何ができるかというと、このボタンではコマンドの実行条件を設定できます。入力したコマンドを「実行させるかさせないか」を選択できるわけです。

条件付きを選択すると、そのコマンドブロックは隣接したコマンドブロック(送り元のコマンドブロック)が、コマンドの実行に成功した場合のみ、起動するようになります。

画像を拡大表示
条件付きコマンドブロックの挙動

使ってみよう

さて図だけだと少し分かりにくいので、実際に手を動かしてみましょう。

二つ並べたコマンドブロックに以下のコマンドを設定してみます。といってもやることは前回の「チェーンブロックの使い方編」で紹介したのと同じ。

①:time set night  夜にするコマンド

time set night

②:weather rain 雨にするコマンド

weather rain

この2つがうまく実行されると「夜にする」>>「雨が降る」、というコマンドが連続して実行されます。

画像を拡大表示
夜にして、、、
画像を拡大表示
雨にして、こちらは条件付きに設定
画像を拡大表示
設定完了!

設定が終わったら実行してみましょう。
記述をミスしていなければ想定通りに夜になって雨が降ってきます。

画像を拡大表示
夜になって雨が降る
雨は嫌い
画像を拡大表示
実行ログも一応確認

「これじゃあ前と変わらないじゃん!」と思ったアナタ!大丈夫。ここからが本題です。

では、次は先ほどインパルスに打ち込んだコマンドをわざと間違えてみましょう。

画像を拡大表示
「インパルスブロック」の
「夜にする」コマンドをわざと間違える

間違える内容はなんでもいいので、とりあえず

time set ---

とでも入力しましょうか。

画像を拡大表示
ミスコマンド入力完了

そして実行すると、、、当然ながら実行されません。これが「実行条件」を満たしていない状態ということなのです!

つまりこの場合のコマンドの流れをわかりやすく書くと、

①:最初のインパルスブロックで「夜にする」を実行するが、コマンドが間違っているため実行できない。

②:2個目のチェーンブロックは「雨を降らせる」を実行しようとするが、前のインパルスブロックから「実行に失敗した!」という情報を受け取ったため、実行されない。

と、こういう感じになるわけです。

そしてこの場合はそもそもコマンド実行されていないので、実行ログには何も流れてきません。

画像を拡大表示
動力を送っても何も起こらない
実行ログも流れない

試しにチェーンブロックを「無条件」に設定して再度実行すると、

画像を拡大表示
チェーンブロックを無条件にする

時間は変わらずに、雨だけ降ってきます。

画像を拡大表示
時間は変わらずに雨だけ降る
画像を拡大表示
実行ログも雨に設定したもののみ

この場合は、チェーンブロックに実行条件を「無条件」に設定したことで、「夜にする」コマンド実行が失敗しようが成功しようが、「雨を降らす」コマンドは必ず実行する、という流れになっているためです。

条件付きコマンドブロックを使うと色々なことが実現できます。

例えば特定のプレイヤーに対してテレポート直後にメッセージを表示したり、あるいは時間を動かしたり、、、ということをしたい場合は、この「条件付き」ブロックが役に立ちます。

画像を拡大表示
移動させてからメッセージを表示させたい場合
画像を拡大表示
実行すると移動してメッセージが表示されまっせ
画像を拡大表示
実行ログはこんな感じ
テレポートしてからタイトル表示しているのがわかる

プレイヤーがまだ移動していないのにメッセージが出てきたり、夜になっては困る!なんてときに重宝します。

ちなみに、ここで察知できる実行条件は「コマンドの実行が成功したか失敗したか」だけでしたが、
もうちょっと複雑な条件(例えば〇〇がアイテムを手にしたらAというコマンドを実行する)を設定したい場合、executeという便利なコマンドが使えます。が、少し難しいので、それはまた別の機会に!

「条件付き」モードが使えるのは

画像を拡大表示
機能するやつしないやつ

そして最後に少しややこしいポイントを一つ。
この「条件付き」モード、すべての種類のコマンドブロックに設定できますが、実際に機能するのは「チェーンブロック」のみになります。

チェーンブロックについては前回解説しましたが(見ていない方はぜひご覧ください!)、その性質は「隣接したコマンドブロックが作動したときに、入力されたコマンドを実行する」というものでした。

そして「条件付き」モードは「前回実行したコマンドの結果」を読み取るので大前提「チェーンブロック」でなくてはならないのです。

まとめ

いかがでしたでしょうか?今回はコマンドブロックの「条件付きモード」について解説しました!簡単にまとめると以下の2点になります!

・「条件付き」モードでは前のコマンドの実行が成功したときのみコマンドを実行する

・チェーンブロックでのみ機能する

今回で3回目となる「コマンドブロックを使って一歩高みへ」ですが、どうでしょう?コマンドブロックにも徐々に慣れてきたのではないでしょうか?

次回は「動力が必要」「常時実行」について解説していきたいと思います!ぜひご覧ください!