この記事ではコマンドブロックの基本的な使い方について例も用いて説明していますが、細かい挙動など全てを記載しているわけではないので必要に応じてWikiなども参照してください。
また、アップデートなどの影響により使用しているコマンドが動作しなくなっている可能性もありますのでご了承ください。
コマンドブロックの出し方
まずはワールドの設定で「チートの実行」と「コマンドブロックが有効」はオンにしておきましょう。
コマンドブロックはクラフトには対応していないので、giveコマンドで手に入れなければなりません。チャット欄を開き、以下の通りに入力して実行します。
/give @s command_block
giveコマンドはプレイヤーに与える個数なども設定できますが、省略が可能です。「@s」の部分はセレクターと呼ばれていて、これを置き換えることでアイテムを渡すプレイヤーを指定できます。
- @s
-
コマンドを実行した人
- @a
-
ワールドに居る全プレイヤー
- プレイヤー名
-
名前を入力したプレイヤー
コマンドブロックの使い方
コマンドブロックはインベントリに追加されたでしょうか。上記コマンドで入手した場合にはオレンジ色のブロックがインベントリに追加されたはずですが、コマンドブロックは設定を変更することでブロックの見た目や機能が3種類に変化します。
コマンドブロックの種類
インパルス
インパルスコマンドブロックは、レッドストーン信号を入力することで設定したコマンドを1回実行できるコマンドブロックです。
チェーン(鎖)
チェーンコマンドブロックは、インパルスコマンドブロックやリピートコマンドブロックのコマンドが正しく実行された場合に、設定したコマンドを1回実行できるコマンドブロックです。
リピート
リピートコマンドブロックは、レッドストーン信号の入力などを必要とせずに、設定したコマンドを何度も何度も繰り返し実行できるコマンドブロックです。実行される状況下では1秒間に20回(1ティック)ごとに設定したコマンドが実行されます。
コマンドブロックの設定方法
コマンドブロックにインタラクトすると専用の画面が表示されます。左側のメニューは上から順に「ポイントした時の注意」「ブロックの種類」「条件」「レッドストーン」「最初のティックで実行」「ティックの遅延」があります。「ブロックの種類」でコマンドブロックを使いたい種類に変更した上で、他の設定をやりたいことに合わせて変更します。
基本設定の各項目の内容
- ポイントした時の注意
-
視点をコマンドブロックに合わせた時にメモを浮き文字で表示させられます。何も入力しなくてもコマンドブロックの動作に影響はありません。
- ブロックの種類
-
すでに解説した通り、コマンドブロックには「インパルス」「チェーン(鎖)」「リピート」の3種類があります。この設定ではどの種類のコマンドブロックにするかを設定できます。(設定後、画面を閉じるとコマンドブロックの色も変わります)
- 条件
-
- 条件付き
-
コマンドブロックの前に繋がっているコマンドブロックのコマンドが正常に実行された場合に、設定したコマンドを実行することができます。
- 無条件
-
前に繋がったコマンドブロックのコマンド実行が失敗した場合でも、設定したコマンドを実行することができます。
- レッドストーン
-
- 動力が必要
-
インパルス・リピートコマンドブロックでの標準設定です。
コマンドブロックにレッドストーン信号が入力されている場合にのみコマンドが実行されます。
- 常時実行
-
リピートコマンドブロックでの標準設定です。
レッドストーン信号がなくてもコマンドを実行できます。
常時実行での各コマンドブロックの挙動- チェーン(鎖)
-
前のコマンドブロックが実行された後にコマンドを実行する
- リピート
-
レッドストーンがなくても常時コマンドが実行され続ける
- インパルス
-
一回だけ動作するが、「常時実行」であっても次のレッドストーン信号が入力されるまでコマンドは実行されない
- 最初のティックで実行
-
この設定はリピートコマンドブロックかつ次の設定項目であるティックの遅延が設定されている場合にのみ効力を有します。
通常、リピートコマンドブロックは1ティック毎(1秒20回)の頻度でコマンドを繰り返し実行しますが、次の項目であるティックの遅延を設定するとコマンドを実行する間隔を調整できます。
この設定を有効にすると、例えばリピートコマンドブロックが「動力が必要&ティックの遅延40」に設定されていた時に、コマンドブロックにレッドストーン信号が入力された最初のティックでコマンドが実行されます。逆に言えば、この設定がオフだと信号受信から最大40ティック(2秒)最初のコマンド実行までに時間がかかる場合があるということになります。
- ティックの遅延
-
状況によってはコマンドブロックにレッドストーン信号などが伝わったタイミングの直後にコマンドが実行されると困る場合があります。また、リピートコマンドブロックでは繰り返しの回数を減らしたい場合もあるでしょう。
そんな時にはこの設定でコマンドブロックが起動後一定時間待機させることができます。単位はティックで、1秒遅延なら「20」、1.5秒遅延なら「30」のように入力します。
右側のメニューには肝心な「コマンド入力」と「前回の実行結果」の設定があります。
右側の各項目の内容
- コマンド入力
-
この設定は読んで字の如く、コマンドブロックで実行するコマンドを入力します。チャット欄からコマンドを実行する場合とは異なりコマンドの前に「/」を入力する必要はありません。
- 前回の実行結果
-
コマンドが実行された時に、実行結果を保存しておくことができます。チャンク内にこの設定がオンにされたコマンドブロックがたくさんある場合はラグが生まれる可能性があるので基本的にはオフにしておきましょう。
ただ、コマンドがうまく実行されていないような場合にはエラーメッセージも表示されるので、状況に応じてオンに切り替えて使いましょう。
使用例
インパルス
今回は時間を夜にするボタンを作ります。
- ブロックの種類
-
インパルス(変更しない)
- 条件
-
無条件(変更しない)
- レッドストーン
-
動力が必要
- コマンド入力
-
time set night
設定したコマンドの「night」部分を数字や「sunrise/day/noon/sunset/midnight」に置き換えると別の時間に設定することも可能です。
チェーン(鎖)
今回は時間を夜にして、そのまま時間を固定するボタンを作ります。
今回の目的の動作をさせるためには「時間を夜にする」のと「時間の固定」という二つのコマンドを実行しなければなりません。チェーンコマンドブロックを使うと、一度ボタンを押すだけで二つのコマンドを実行させることができます。
まず「時間を夜にする」コマンドについては、インパルスコマンドブロックの使用例で利用したものをそのまま再利用しましょう。というわけで、もしインパルスコマンドブロックの使用例の手順を先に完了させてください。
この矢印、「条件付き/無条件」で若干形が異なりますが、「条件付き→無条件→条件付き」のようにしても矢印の向きがしっかり揃っていれば動作します。
- ブロックの種類
-
鎖
- 条件
-
無条件 or 条件付き(どちらも可)
- レッドストーン
-
常時動作
- コマンド入力
-
gamerule dodaylightcycle false
正常に動作すれば、時間が経っても夜のままになっているはずです。
リピート
今回はプレイヤーが特定のアイテムを持っている場合に鉄の扉を開ける仕組みを作ります。
今回の目的の動作をさせるためには、「アイテム保持の判定」と「鉄の扉を開ける(扉の下にレッドストーンを設置)」の二つのコマンドを実行させることになります。
- ブロックの種類
-
リピート
- 条件
-
無条件
- レッドストーン
-
常時動作
- コマンド入力
-
testfor @a[r=3,hasitem={item=minecraft:diamond_sword,location=slot.weapon.mainhand}]
今回使用したコマンドは「testfor」コマンドです。このコマンドでは条件に合致したエンティティがどれだけいるかを数える(間接的に存在するかどうか調べる)ことができます。
- ブロックの種類
-
鎖
- 条件
-
条件付き
- レッドストーン
-
常時動作
- コマンド入力
-
setblock x座標 y座標 z座標 redstone_block
今回使用したコマンドは「setblock」コマンドです。このコマンドでは特定の場所にブロックを置いたり、すでにあるブロックを置き換えることができます。
これでコマンドブロックに近いプレイヤーが特定のアイテムを持っていると鉄の扉が開くようにできました。
これでコマンドブロックに近いプレイヤーが特定のアイテムを持っていると鉄の扉が開くようにできました。
オフにした方が良いゲームルール
ここまで一通りコマンドブロックの扱い方に触れてきましたが、リピートコマンドブロックの使用例の最後で大量のログが出てきたことに驚かれた方もいるかもしれません。こうしたログはコマンドブロックが正常に動いているのかを確認する上で便利ではあるのですが、配布ワールドを作成する際には好ましくない状態であると言えるでしょう。
また、コマンドブロック設定画面右下には「前回の実行結果」という項目があり、これがオンになっているリピートコマンドブロックが近くに大量にあるとラグの原因になったりします。
これらのログに関しては「gamerule」コマンドで無効化/有効化できるので、特に必要がなければ普段は無効化しておくと良いでしょう。
/gamerule commandBlockOutput false
/gamerule sendCommandFeedback false
まとめ
コマンドブロックは配布ワールド作成には必須な道具ですが、使いこなすにはコマンドブロックそのものの使い方、実行するコマンド、そして場合によってはレッドストーンの知識も必要になってくるので使いこなすのはなかなか難しいこともあります。
この記事が少しでもコマンドブロックの理解への手助けになっていたら幸いです!!