《BE1.9.0対応》簡単!スコアボードタイマーの作り方を解説【初級コマンド講座 #12】


どうも、初級コマンド講座第12回です。今回は、スコアボードを使った簡単なカウントアップタイマーの作り方を解説します。

/scoreboardコマンドの解説は以下の2記事で行っています。/scoreboardコマンドについての詳しい解説はそちらを見てください。

スコアボード基礎編
スコアボード応用編


1.事前に実行するコマンド

まずはチャットででもコマンドブロックででもいいので、事前に実行する必要があるコマンドです。

/scoreboard objectives add time dummy タイマー

/scoreboard objectives add count dummy

/scoreborad objectives setdisplay sidebar time

上から順に説明していくと、
1番目のコマンドは 表示名が”タイマー”の、timeというオブジェクティブを作成するコマンド で、
2番目は countというオブジェクティブを作成するコマンド 、
3番目は timeというオブジェクティブを画面右に表示するコマンド になります。

以上の3つのコマンドを必ず最初に実行しておいてください。オブジェクティブ名はどんな名前でもいいですが、わかりやすい名前にすることをおすすめします。

2.コマンドブロックを組む

いよいよコマンドブロックを並べていきます。
必要なコマンドブロックは4つです。

一番下のコマンドブロックは、反復レッドストーンが必要の状態にしてください(レッドストーンが必要にするのは、機構のオンオフを切り替えやすくするためです)。
他3つのチェーンのコマンドブロックは、すべて常時実行にしてください。また、条件付きは画像の通りです。

まず一番下の反復のコマンドブロックには、

/scoreboard players add timercount count 1

と記述します。

これはどういうコマンドかというと、countというオブジェクティブ上のtimercountという仮想のエンティティのスコアに1を足すコマンドです。
/scoreboardコマンドに限り、ターゲットの部分に好きな名前を記述することで、/scoreboardコマンド上のみで扱える存在しないエンティティを作成することができます。ただし、仮想エンティティはscores引数で指定することはできません

ではどうやって仮想エンティティのスコアを検知するかというと、/scoreboardコマンドのtest機能を使います。
というわけで2番目のコマンドブロックのコマンドです。ここは無条件にしてください。

/scoreboard players test timercount count 20 20

これは、countというオブジェクティブ上の仮想エンティティtimercountのスコアが20以上20以下、つまりcountのスコアが20かどうかを検知するコマンドです。

続いて3番目のコマンドブロックのコマンドです。これは条件付きにしてください。

/scoreboard players add time time 1

これは、timeというオブジェクティブ上の仮想エンティティtimeのスコアに1を足すコマンドです。timeオブジェクティブは画面横に表示されるので、ここのコマンドが実行されると画面横にスコアが表示されます。

4番目のコマンドブロックのコマンドです。これも条件付きです。

/scoreboard players set timercount count 0

これは、countというオブジェクティブ上の仮想エンティティtimercountのスコアを0にするコマンドです。

これで完成です。あとは反復のコマンドブロックにレバーなどでレッドストーン信号を与えればタイマーが動きだします。

3.仕組みの解説

では、仕組みを解説します。

  • まず1番目のコマンドで、countというオブジェクティブ上の仮想エンティティtimercountのスコアを1tick(0.05秒)に1ずつ足していきます。
  • そして2番目のコマンドで、count上のtimercountのスコアが20になったことを検知します。
  • その検知が成功したら、つまりtimercountのcountのスコアが20になったら3番目のコマンドで、timeというオブジェクティブ上の仮想エンティティtimeのスコアに1を足します。
  • そして最後にcount上のtimercountのスコアを0にします。

これらの流れを、この1本のコマンドチェーンでループさせている感じです。

ちなみになぜcount上のtimercountのスコアが20になったことを検知するかというと、反復コマンドブロックのコマンドは1tick(0.05秒)に1回実行されるため、20にすればちょうど1秒に1ずつtimeのスコアが増えていくためです。

これで仕組みの解説は以上です。


今回は、/scoreboardコマンドのみで基本的なタイマーを作ってみました。今回は本当に基本的なものですが、スコアボードに慣れてきたらもっと高度なタイマーを練習がてら作ってみるのもいいと思います。
では、閲覧ありがとうございました。


前の講座↓

次の講座↓