この記事では、Minecraft Java Edition(バージョン1.18.1)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
コマンドの実行を遅らせたいマインクラフター
「コマンドが実行されるのを数秒後に設定したい。遅延させるコマンドってあるのかな? レッドストーンリピーターを使って遅らせればいいの?」
こんな疑問を解決します!
- コマンドの遅延にはscheduleコマンド
- レッドストーンによる遅延はNG
こんにちは! マインクラフターのなつめ(@natsume_717b)です。
マイクラ歴は5年程で、最近は脱出マップを配布・制作しています!
→配布マップ・ダウンロードページ
今回はコマンドの実行を遅延させる方法について解説していきます。
executeコマンドを使えば条件を満たした時にコマンドを実行できますが、条件を満たした瞬間に実行されてしまうのがちょっとしたデメリットです。
そのデメリットを解消できるのが、今回紹介するscheduleコマンドになります。
この記事では、scheduleコマンドの使い方に加えて、レッドストーンリピーターでの遅延がNGな理由をお話しています。
ぜひ最後まで読んでくださいね。
それでは、さっそく見ていきましょう!
コマンドの遅延にはscheduleコマンド
コマンドを遅延させて実行させたい場合、scheduleコマンドを使う必要があります。
正確には遅延させるというよりも、指定した時間が経過した場合にコマンドを実行するものなので、どちらかといえば「○秒後に実行することを予約しておく」という感覚の方が正しいです。
ただし少々癖があるのが、scheduleコマンドでもあります。
というのも、scheduleコマンドで実行できるのはfunctionだけです。
要するに「コマンドの実行を予約している」のではなく、functionファイルの読み込みを予約しているわけですね。
なので、functionファイルの作成が必須です。
funcitonファイルの作成については、コマンドをまとめて負荷軽減!functionコマンドの準備とやり方解説!【Java版】を参考にしてください。
この記事ではfunctionファイルを用意出来ていることを前提にお話を進めていきます。
scheduleコマンドの使い方
scheduleコマンドの入力方法に難しいことはなく、以下のように打ち込んでいきます。
/schedule function functionファイルの指定 遅延する時間 既にある予定を上書きするかどうか
実際に使ってみるコマンドを挙げると
/schedule function el:ftp1f 5s append
といった感じになります。
(上記のコマンドでは、el:ftp1fに内蔵されているコマンドを5秒後に実行するようにしています)
それぞれの項目を見ていきましょう。
/schedule function
scheduleコマンドでfunctionを呼ぶことを指示しています。
コマンド(functionファイルの読み込み)を予約するなら弄る必要はありません。
ただし、functionではなくclearと入力すると予約しているfunctionの読み込みをキャンセルすることができます。
使用頻度が多いというわけではありませんが、コマンドの実行をキャンセルできる数少ない方法なので覚えておくと便利ですね。
functionファイルの指定
scheduleコマンドで呼び込むfunctionファイルを指定します。
この項目に関しては、マインクラフト側が候補として表示してくれるので間違えることはないと思います。
実行したいコマンドが記入されているfunctionファイルを指定しましょう。
遅延する時間
この項目では、何秒後にfunctionファイルを読み込むのかを指定します。
何秒という言い方をしていますが、実際には3種類の単位が使えます。
- 日(d)
- 秒(s)
- ティック(t)
重要なのは②と③ですね。
②に関しては秒数指定なので、遅延させたい秒数を打ちこめばOKです。
10秒後に実行させたければ、10sと打ち込むといった感じですね。
③はティック数でカウントできるので、最短で1/20秒という細かい時間を設定できます。
なので、20tと打ちこめば1sと同じ意味合いになります。
ティック数で指定する方が細かく調整できるので、〇tと入力することをおすすめします。
①に関しては実用性が低いので、詳しい解説は割愛します。
ゲーム時間内の日数で指定することができる程度です。
既にある予定を上書きするかどうか(任意の設定項目)
最後に既に同じfunctionファイルの予約がある場合に、その予定を上書きするかどうかを設定します。
この項目は任意で設定する項目で、入力しなくてもOKです。
その場合は、後述するreplaceと同じ挙動になるので、新しく追加されたスケジュールだけが機能します。
というわけで、項目の紹介です。
- append
既に予約しているスケジュールを無視して、新たに予約を追加します。
なので、2回動作します。 - replace
既に予約している同じfunctionを上書きする形で予約をします。
なので、以前に予約していたスケジュールは無効となって、新しく追加されたスケジュールだけを実行します。
レッドストーンによる遅延はNG
コマンドを遅延させて実行させるのに、レッドストーンリピーターを使うのはNGです。
確かにコマンドブロックは赤石信号によって動作させることもできますが、回路を使用すると膨大なスペースを必要とするほか、長時間の遅延を指定するのが難しいです。
scheduleコマンドならば、コマンドブロック分の1マスで済みますし、遅延の時間の文字で入力するだけでOKです。
なので、難易度はやや高めですがfunctionファイルの作成を理解して、scheduleコマンドを使用した方が総合的に非常に簡単になります。
ただし、赤石回路がコマンドでは全く不要というわけではありません。
コマンドブロックに内蔵されているコマンドの実行に赤石信号が必要な場合は、隣接するようにレッドストーンブロックやトーチを置くことがあります。
「動力が必要」に設定しているコマンドブロックのことです!
回路というほどではありませんが、コマンドブロックと赤石回路には多少の関係性がありますので、最低限の赤石回路、それに使用するアイテムの知識などがあると便利なことは間違いないです。
とはいえ、コマンドの遅延に関しては赤石回路は不向きなので、scheduleコマンドを使いましょう!
まとめ
というわけで、今回のまとめです。
今回使ったコマンドはこちら。
- el:ftp1fというfunctionファイルを5秒後に実行するよう予約するコマンド
(5秒の遅延を挟んで実行するのと同義)
/schedule function el:ftp1f 5s append
- コマンドの実行を遅延するのではなく、functionファイルの読み込みを遅延して行うという認識が正確です。
- 基本的には秒(s)かティック(t)で遅延するのが扱いやすいです。
- 既に予約されている同じfunctionの実行をキャンセルして新しく追加したい場合はreplaceを、上書きせずに2回分の実行をさせたいのならばappendを選択します。
この記事は以上になります。