この記事では、Minecraft Java Edition(バージョン1.20.2)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
scoreboardコマンドについて知りたいマインクラフター
「scoreboardコマンドってどういうことができるコマンドなのかな……? どうやって使うのか教えて欲しい。コマンドを使っていくうえで、覚えておくべき?」
こんな疑問を解決します!
- 行動をカウントするscoreboardコマンド
- 行動したかどうかの判定に便利
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!
この記事では、コマンドの中でもかなり有能なscoreboardコマンドについて解説していきます。
scoreboardコマンドが何をするのかという基本的なところから、実際にどのようにして使うのかを紹介。
コマンドを勉強し始めた人からするとやや難しいと思う場面もあるかもしれませんが、scoreboardコマンドは出来て損することは一切ないので、ぜひ覚えるべきです。
さっそく見ていきましょう!
行動をカウントするscoreboardコマンド
scoreboardコマンドは、特定の行動を行ったかどうかをカウントするコマンドです。
そして、カウントした値は別のコマンドで活用していきます。
カウントできるものとしては、○○を作った回数、プレイ時間や歩いた距離、走った距離など多種多様に存在しています。
カウントできるものを全て解説することは難しいので、MinecraftWikiのスコアボードのページを参考にすることをおすすめします。
なので、歩いた距離をカウントしているとすると、「〇マス歩いた時、□□が起きる」なんてコマンドの組み方ができます。
実際にscoreboardコマンドを使ってみる
実際にコマンドを組んでみましょう。
scoreboardはまず、スコアボードの作成が必須です。
スコアボードを作成しない限り、カウントを始めてくれません。
/scoreboard objectives add Jump minecraft.custom:minecraft.jump "ジャンプした回数"
上記のコマンドを言語化すると以下のようになります。
/scoreboard objectives add スコアボードの名称(自分で決めれる) カウントするもの "画面表示するときの名称"
今回はスコアボードの名称をJumpとして、カウントするものはジャンプした回数にしました。
また、スコアボードの値を画面に表示させる際の名称を「ジャンプした回数」と表示されるようにもしました。
スコアボードの値を画面に表示させる
基本的にスコアボードを扱うときは、これだけで準備OKです。
とはいえ、スコアボードの値を確認したいという時もあるかと思います。
そこで、画面横にスコアボードの値を表示させるコマンドを紹介します。
/scoreboard objectives setdisplay sidebar Jump
このコマンドを分かりやすいよう言語化したものはこちら。
/scoreboard objectives setdisplay 表示させる場所 表示させたいスコアボードの名称
また、スコアボードを作成しただけで値が存在しない場合は表示されません。
これは0という値すらもないという状況なので、以下のコマンドでスコアボードに値を入れます。
(今回作成しているスコアボードはジャンプした回数を数えるものなので、ジャンプをすることで値が入っている状態にすることも可能です)
/scoreboard players set @a Jump 1
ここまで正しくできていれば、以下の画像のように表示されているはずです。
setdisplayを使って画面等に表示させた場合、非表示にするにはそのスコアボードを一度削除するかリセットする必要があります。
削除する場合は以下のコマンドを使います。
先述したコマンドで再度作り直しましょう。
/scoreboard objectives remove 消したいスコアボードの名称
リセットする場合は、値が入っていない状態に戻します。
/scoreboard players reset @a 消したいスコアボードの名称
スコアボードの値を参照しつつ、コマンドを実行する
それでは、いよいよスコアボードの値をコマンドに活用していきます。
今回は「10回ジャンプした人に対して、ダイヤモンドを1つ付与する」という例で説明していきます。
まずはコマンドブロックを用意して、リピート、無条件、常時実行に設定しましょう。
そして、そのコマンドブロックに以下のコマンドを打ちこみます。
execute as @a[scores={Jump=10..}] run give @s minecraft:diamond 1
このコマンドはexecuteコマンドになっており、コマンドの実行者を「Jumpの値が10以上であるプレイヤー」に変更しています。
as @a[scores={Jump=10..}] の部分で、コマンドの実行者が変更されています。
なので、run以降に書かれているgiveコマンドの@sは「Jumpの値が10のプレイヤー」を意味していることになります。
これだけで10回ジャンプしたらダイヤモンドがもらえるようになりました。
しかし、ダイヤモンドを付与してくれるコマンドブロックはリピートしているうえに、スコアボードの値は10以上を記録しています。
なので、ジャンプした回数の条件を満たし続けているため、延々とダイヤモンドが手に入ってしまいます。
これでは1つだけ付与させようとしている意味がありません。
そこで、以下のコマンドを入力したチェーンコマンドブロックを、リピートコマンドブロックと向きを合わせて設置します。
(チェーンコマンドブロックの設定は、条件付き、常時実行にします)
scoreboard players reset @a[scores={Jump=10..}] Jump
入力されているものはscoreboardコマンドで、特定のスコアボードの値をリセットするものです。
対象となるプレイヤーを@a[scores={Jump=10..}]にしているので、Jumpしている回数が10以上を記録しているプレイヤーが全員対象になります。
なので、Jumpの値が10以上のプレイヤーは即Jumpの値が0にリセットされます。
これでダイヤモンドを1つ付与した段階でスコアボードの値がリセットされます。
つまり延々とダイヤモンドが手に入ることがなくなります。
行動したかどうかの判定に便利
一通りscoreboardコマンドの使い方などを解説してきましたが、scoreboardコマンドの強みはなんといっても、行動したかどうかの判定に使えることです。
例えば、先ほどまで使っていた「ジャンプした回数」をカウントする項目を利用すれば、ジャンプしたかどうかを検知することが可能です。
他にも「minecraft.crafted:minecraft.crafting_table」という項目を利用すれば、作業台を作ったことがあるかどうか、なんてことも判定できます。
これらはscoreboardを使わないとできないことなので、特定の行動を監視することに非常に便利といえます。
欠点としては、項目に存在しないものは判定できない点です。
コマンドの組み合わせ次第では、項目に存在しないものもカウントできます。
ともあれ行動の監視や何かをカウントすることをscoreboardコマンドは得意としています。
それを覚えておけばOKです。
過去にscoreboardコマンドを使ったギミックなども紹介しているので、この記事を活かしつつ参考にしてもらうとより理解が深まるかなと思います。
まとめ
というわけで、今回のまとめです。
使ったコマンドはこちら。
/scoreboard objectives add スコアボードの名称(自分で決めれる) カウントするもの "画面表示するときの名称"
/scoreboard objectives setdisplay 表示させる場所 表示させたいスコアボードの名称
/scoreboard objectives remove 消したいスコアボードの名称
/scoreboard players reset 対象 リセットしたいスコアボードの名称
この記事は以上になります。