【マイクラ統合版】/scoreboardコマンドで人数を数える【コマンドの使い方】

コマンドの使い方
※本サイトはPRリンクを含みます。

Minecraft BEのコマンドの使い方を備忘録としてまとめています。
本稿ではscoreboardコマンドで人数を数える方法について。

動画でご覧になりたい方はこちらもどうぞ↓

scoreboardコマンドで人数を数える

コマンドでプレイヤーやエンティティの人数を数える方法はおそらく複数あると思いますが、ここでは2つ。

なお例として、数えた人数を反映するスコアを”number”とし、NPC3体を用意して人数を数えます。

ドスパラWeb
ドスパラWeb

準備

数えた人数を反映するスコア”number”を作成します。

/scoreboard objectives add number dummy

→スコアボード”number”を作成する

数えたいエンティティを実行者として値を付与する

数えたいエンティティ(ここではNPC)を実行者として、カウント反映用の仮エンティティ(system)のnumberスコアに値を1加算します。

/execute as @e[type=NPC] run scoreboard players add system number 1

NPCを実行者としてsystem(仮エンティティ)numberスコア1加算する

解説

数えたい対象となるエンティティをexecuteコマンドで実行者に指定すると、run以降に記述するコマンドは実行者の人数分実行されることになります。

ここでは3体のNPCが実行者になっているため、その後のscoreboardコマンドが自動的に3回実行されます。
1回に付きsystemのnumberスコアに1加算する為、人数分の実行でsystemのnumberコマンドが3となり人数を数えることが出来ます。

スコア反映用の空ネームとは…
例で使用した”result”には実体はなく、名前だけの存在です。
scoreboardコマンドのターゲットに架空の名前を入力すると、実体のない空ネームにスコアを反映することが出来ます。
setdisplayでは空ネームとスコアの値が表示されます。

 

testforで拾った信号強度をスコアに反映する

別の方法として、testforで検知した人数(信号強度)をスコアに反映する方法もあります。
簡単なコマンドとレッドストーン回路を使用するため構造はシンプルですが、信号強度を利用しているため数えられる最大数が”15”に限定されます。

【衝撃】
/scoreboard players set result number 0

→result(結果反映用の空ネーム)のnumberスコアを”0”にセット。
※初回は必要ありませんが、2回目以降の数え直しに必要です。

∟【チェーン】
/testfor @e[type=npc]

→npcの人数を数える。

∟【チェーン】
/setblock 0 0 0 gold_block

→信号を接続するための不透過ブロックをセット。
 不透過ブロックならゴールドブロックである必要は無い。
 座標はtestforのコンパレーターから信号を受け取る位置。

∟【チェーン:遅延1】
/setblock 0 0 0 glass

→動力はコンパレーター後の不透過ブロック。
 testforから取り出した信号をカットするため不透過ブロックを透過ブロックに置き換える。
 透過ブロックならガラスである必要は無い。

★コンパレーター
∟不透過/透過ブロック
∟レッドストーンパウダー

→コンパレーターはtestforのコマンドブロックから信号を取り出す。
 ブロックは前述のsetblockによって配置される。
 パウダーは信号強度を反映する。

②【衝撃】
/scoreboard players add result number 1

→このコマンドをレッドストーンパウダーに沿って最大15個並べる。
 動力はレッドストーンパウダー。
 レッドストーン信号が届いた場合にresultのnumberスコアに1加算する。

解説

①はまず、結果を反映するためのresult(空ネーム)のnumberスコアを”0”にセットします。
次のtestforは本来の意味通り対象の数を検知するために用います。
その後のsetblockは、testforから取り出した信号を一時的にレッドストーンパウダーに流し、すぐに断ち切るために使用しています。
(testforコマンドブロックは前回の実行結果を保持しているので信号が出続けてしまい、次回の実行時に信号が切れないためその後の衝撃コマンドブロックが動作しないことがある。)

レッドストーン回路部は、まずコンパレーターでtestforの結果を信号強度に変換します。
コンパレーター後のブロックは前述のとおり、testforの結果となる信号を毎回断ち切るために使用します。
レッドストーンパウダーの信号は各ターゲットブロックに流れ、各scoreboardコマンドブロックを作動させます。

レッドストーン信号の強度に応じた数のscoreboardコマンドが実行されるため、resultのnumber値がtestforで検知した人数と一致します。

 

例として2つの方法をあげましたが、他にもいろいろな手段で人数を数えることが出来るはずです。
使用するシチュエーションや用途によって最適な方法を選択しましょう。

▶『コマンドの使い方』カテゴリTOPへ