パイセンのマイクラ攻略教室

マインクラフトのコマンドについて解説していくブログです。エトセトラパーティーというグループでコマンド紹介動画も投稿しています。

【マイクラ】スコアボード(scoreboard)コマンドを実戦形式で解説【基礎編】【マインクラフト】

f:id:hollys-command-lecture:20180826144159j:plain

どうも!パイセンです。

今回はコマンドの基礎であるスコアボード(scoreboard)コマンドについて解説していきます。

他のコマンドと比べてやや中級者向けのコマンドですが、これをマスターするとコマンドで出来ることがとても増えるので頑張って習得しましょう!


ちなみに、2018/08/25現在ではスコアボードはJavaEdition(PC版)にしか実装されていませんが、今後のアプデでBedrockEdition(スマホ、switch、Win10等)にも実装が決まっています。BEでも大体の仕様はJEと同じでしょうから、今のうちにどんなことができるか、だけでも知っておくといいですよ!

2018/10/19追記

BEで1.7へアップデートされてscoreboardコマンドが実装されましたが、現段階では『dummy』スコアしか扱うことができません。

まだ『scoreboardコマンドは不完全』な状態なのでご了承ください。


BEでも作れるscoreboard式のタイマーを作りました。

スコアボードとは?ざっくり解説

スコアボードの主な役割をざっくりと説明すると、『プレイヤーやモブの行動を検知する』ことです。

もう少し具体的に言うと『○○を使った回数』だったり、『ジャンプした回数』だったりを測定することができるコマンドになっています。


そして、その検知した行動を他のコマンドに利用することが可能で、例えば『攻撃したら大爆発が起こる』ということもできます(よくわかんない例ですね・・・)。


スコアボードの使い方

では、今回はスコアボードの解説をしつつ、記事の後半では『スニーク状態だと透明になる』コマンドを作ってみます!

とてもシンプルなコマンドですが、スコアボードの基礎が学べるコマンドです。


実際にマイクラでプレイしながら読み進めることを勧めます。


スコアの作成『objectives add』

スコアボードコマンドを使うときはまず『スコアを作成』しなくては何もできません。

スコアの作成をするコマンドの構文は次になります。

構文/scoreboard objectives add <名前> <指定する条件> [表示する名前]

<名前>の欄には英数字でスコアの名前(IDに近い)<指定する条件>には検知したいプレイヤーの行動(後述します)、[表示する名前]には表示したい名前(日本語でもOK)を入力します。


今回はスニークした時を検知したいので、次のコマンドを実行します。Tキーを押し、チャット欄を開いて入力しましょう。

チャット欄で実行/scoreboard objectives add sneakTime minecraft.custom:minecraft.sneak_time "1以上の時はスニーク中"

sneakTimeがスコアの名前(ID)minecraft.custom:minecraft.sneak_timeが検知したいプレイヤーの行動(=スニーク)1以上の時はスニーク中が表示する名前になっています。ちなみに、表示する名前に日本語を使うときはダブルクオーテーション(”)で囲みましょう。

f:id:hollys-command-lecture:20180826140408j:plain

このコマンドを実行すると、スニークを検知するスコアが作成されます。正確に言うと、スニーク状態になると、sneakTimeの値が毎秒20ずつ増えていくようになります。

スコアの値は見えるように変更できるので、次々の項目ではスコアの表示の設定をします。


検知可能な条件一覧

スコアボードはなんでもプレイヤーの行動を検知することができるわけではなく、ゲーム側で決められたことしか検知することができません。とは言え、かなりの項目があるので困ることは少ないと思います。

検知可能な項目はコチラにまとめました。もちろん全部覚える必要はないし、こんなことが検知できるんだな~程度で大丈夫です。

air 空気の量(最大300)
armor 防御力(最大20)
deathCount 死んだ回数
dummy ダミー、別の記事で紹介予定です。
food 空腹度(最大20)
health 体力(最大20)
killedByTeam.(色) その色のチームに倒された回数
level プレイヤーのレベル
playerKillCount プレイヤーを倒した回数
totalKillCount プレイヤー・モンスター・動物を倒した回数
trigger ごめんなさいよくわからないです
xp プレイヤーの経験値
minecraft.broken:(アイテムID) そのアイテム(剣やツールなど耐久値があるアイテム)を破壊した回数
minecraft.mined:(アイテムID) そのアイテムを採掘した回数
minecraft.crafted:(アイテムID) そのアイテムをクラフトした回数
minecraft.picked_up:(アイテムID) そのアイテムを拾った回数
minecraft.dropped:(アイテムID) そのアイテムをQキーなどで落とした回数
minecraft.used:(アイテムID) そのアイテムを使った回数
minecraft.killed:(エンティティID) そのエンティティ(モンスターや動物など)を倒した回数
minecraft.killed_by:(エンティティID) そのエンティティ(モンスターや動物)に倒された回数
minecraft.custom:minecraft.animals_bred 動物を繁殖させた回数
minecraft.custom:minecraft.aviate_one_cm エリトラで飛んだ距離
minecraft.custom:minecraft.boat_one_cm ボートで移動した距離
minecraft.custom:minecraft.clean_armor 防具を脱色した回数
minecraft.custom:minecraft.clean_banner バナーを脱色した回数
minecraft.custom:minecraft.clear_shulker_box シュルカーボックスを脱色した回数
minecraft.custom:minecraft.climb_one_cm はしごやツタを登った距離
minecraft.custom:minecraft.crouch_one_cm スニーク指定どうした距離
minecraft.custom:minecraft.damage_absorbed 衝撃吸収のステータス効果で防いだダメージ量
minecraft.custom:minecraft.
damage_damage_blocked_by_shield
盾で防いだダメージ量
minecraft.custom:minecraft.damage_dealt 与えたダメージ量
minecraft.custom:minecraft.
damage_dealt_absorbed
衝撃吸収のステータス効果で防がれたダメージ量
minecraft.custom:minecraft.damage_dealt_resisted ○○耐性で防がれたダメージ量
minecraft.custom:minecraft.damage_taken 受けたダメージ量
minecraft.custom:minecraft.death 死んだ回数
minecraft.custom:minecraft.drop アイテムを落とした回数
minecraft.custom:minecraft.eat_cake_slice ケーキを食べた回数
minecraft.custom:minecraft.enchant_item アイテムをエンチャントした回数
minecraft.custom:minecraft.fall_one_cm 落ちた距離
minecraft.custom:minecraft.fill_cauldron 大釜を水で満たした回数
minecraft.custom:minecraft.fish_caught 魚を釣った回数
minecraft.custom:minecraft.fly_one_cm クリエイティブモードや浮遊のステータス効果で浮いた距離
minecraft.custom:minecraft.horse_one_cm 馬で進んだ距離
minecraft.custom:minecraft.inspect_dispenser ディスペンサーの中を開いた回数
minecraft.custom:minecraft.inspect_dropper ドロッパーの中を開いた回数
minecraft.custom:minecraft.inspect_hopper ホッパーの中を開いた回数
minecraft.custom:minecraft.interact_with_beacon ビーコンの中を開いた回数
minecraft.custom:minecraft.
interact_with_brewingstand
醸造台の中を開いた回数
minecraft.custom:minecraft.
interact_with_crafting_table
作業台の中を開いた回数
minecraft.custom:minecraft.interact_with_furnace かまどの中を開いた回数
minecraft.custom:minecraft.jump ジャンプした回数
minecraft.custom:minecraft.leave_game 『セーブしてタイトルに戻る』を押した回数
minecraft.custom:minecraft.minecart_one_cm トロッコで進んだ距離
minecraft.custom:minecraft.mob_kills モブを倒した回数
minecraft.custom:minecraft.open_chest チェストを開いた回数
minecraft.custom:minecraft.open_enderchest エンダーチェストを開いた回数
minecraft.custom:minecraft.open_shulker_box シュルカーボックスを開いた回数
minecraft.custom:minecraft.pig_one_cm ブタで進んだ距離
minecraft.custom:minecraft.play_noteblock 音符ブロックをたたいて鳴らした回数
minecraft.custom:minecraft.play_one_minute プレイ時間
minecraft.custom:minecraft.play_record レコードを再生した回数
minecraft.custom:minecraft.player_kills 他のプレイヤーを倒した回数
minecraft.custom:minecraft.pot_flower 花瓶に花をそえた回数
minecraft.custom:minecraft.sleep_in_bed ベッドで寝た回数
minecraft.custom:minecraft.sneak_time スニークした時間
minecraft.custom:minecraft.sprint_one_cm 走った距離
minecraft.custom:minecraft.swim_one_cm 泳いだ距離
minecraft.custom:minecraft.talked_to_villager 村人に右クリックで話しかけた回数
minecraft.custom:minecraft.time_since_death 最後に死んでから経過した時間
minecraft.custom:minecraft.time_since_rest 最後に寝てから経過した時間
minecraft.custom:minecraft.traded_with_villager 村人と交易をした回数
minecraft.custom:minecraft.trigger_trapperd_chest トラップチェストを開いた回数
minecraft.custom:minecraft.tune_noteblock 音符ブロックの音を変えた回数
minecraft.custom:minecraft.use_cauldron 大釜で染色した回数
minecraft.custom:minecraft.walk_on_water_one_cm 水上を浮きながら移動した距離
minecraft.custom:minecraft.walk_on_cm 歩いた距離
minecraft.custom:minecraft.
walk_under_water_one_cm
水中を歩いた距離
スポンサーリンク
スコアの表示『setdisplay』

スコア表示の設定は『setdisplay』を使います。構文は次のようになります。

構文/scoreboard objective setdisplay < 表示させたい場所(belowName/list/sidebar/sidebar.team.(色)) > <表示させるスコア名(ID)>

スコアを表示する場所はいくつからか選ぶことができます。

  • belowName
    • プレイヤーの名前の下に表示。シングルでは不可
  • list
    • タブキーを押したときに表示されるプレイヤー一覧に表示。
  • sidebar
    • 画面右に表示。
  • sidebar.team.(色)
    • 特定の色のチームのプレイヤーのみ、画面右に表示。


よく使うのが『sidebar』です。なので、今回はsneakTimeをsidebarに表示させてみましょう。次のコマンドをチャットで実行してください。

チャット欄で実行/scoreboard objectives setdisplay sidebar sneakTime


実行した後に、Shiftキーを押してスニーク状態になってみてください。すると、画面の右に『1以上の時はスニーク状態』と表示され、なんだかものすごい勢いで数値が増えていってるのが見えるはずです。

この数値はスニークしている時間を表していて、1秒あたり20増えていきます

f:id:hollys-command-lecture:20180826140434j:plain


スコアの値の増減・セット『players add/remove/set』

スコアの値は条件を満たすと自動で増えますが、プレイヤーが増やしたり減らすこともできます。

構文は次のようになります。

構文/scoreboard players < add / remove / set > < 変更したいプレイヤー > < 変更したいスコア名(ID) > <数値>

addは指定した数値だけ足されremoveは指定した数値だけ減らされsetは指定した数値へ変更します。

試しに次のコマンドを実行してください。

チャット欄で実行/scoreboard players set @a sneakTime 10

すると、右のsneakTimeの値が10になります。次はこのコマンド。

チャット欄で実行/scoreboard players add @a sneakTime 100

sneakTimeに100を足すコマンドですね。10+100でもちろん110になります。

最後にこのコマンドを実行してください。

チャット欄で実行/scoreboard players remove @a sneakTime 120

sneakTimeに120を引くコマンドになります。110-120で右の数字は-10になりますね。


addとremoveはあまり使いません。dummyのスコアを扱うときはめちゃくちゃ使いますが、それ以外だとあまり出番はありませんね(僕の場合は)。


使用例:スニーク状態だと透明になるコマンド

では、実際にスコアボードコマンドを使ったコマンドを作ってみましょう。

スコアの作成

ではまずスコアの作成をします。先ほどと同じコマンドなので、既に実行している方はスキップしてOKです。

チャット欄で実行/scoreboard objectives add sneakTime minecraft.custom:minecraft.sneak_time "1以上の時はスニーク中"

これでスニークを検知するスコアを作成できました。スニーク状態になるとsneakTimeの値が毎秒20ずつ増えます。


ついでにスコアの値が分かりやすくなるように『setdisplay』のコマンドも実行しておきましょう。こちらも実行済みの方はスキップしてください。

チャット欄で実行/scoreboard objectives setdisplay sidebar sneakTime


そしてsneakTimeの値は0にします。

チャット欄で実行/scoreboard players set @a sneakTime 0


コマンドブロックの入手

今回はコマンドブロックを使うので、次のコマンドを実行してコマンドブロックを入手しましょう。今回使うのはリピートコマンドブロックです。

チャット欄で実行/give @p minecraft:repeating_command_block


コマンドの入力

それでは、コマンドブロックにコマンドを入力していきます。


今回やりたいことは、『スニーク状態なら透明になる』でしたね。

透明状態になるコマンドはeffectコマンドです。なので、コマンドブロックを設置し、次のコマンドを入力してください。

リピート/effect give @a[scores={sneakTime=1..}] minecraft:invisibility 1 1

f:id:hollys-command-lecture:20180826140514j:plain

コマンドを一つ一つ分解すると、/effect give でステータス効果を付与@a[scores={sneakTime=1..}]は効果を付与する対象を選んでいます。

そしてminecraft:invisibilityがステータス効果、ここでは透明の効果ですね。前の『1』が効果時間後ろの『1』がステータス効果のレベルになっています。


effectコマンドの内容はまた別の内容になるので省略しますが、注目してほしいのは@a[scores={sneakTime=1..}]の部分です。

@aはセレクターと言い、コマンドの内容の対象を選ぶ部分になります。このコマンドで言うと、透明になる対象を指定しているわけですね。

セレクターにはいくつか種類があり、今回使ったのは@a、意味はプレイヤー全員です。


そのセレクターの後ろに[]を書き、その中で細かい条件を指定することができます。

このコマンドではスコアの値を指定するscoresを使っています。

次のように書くと、Aの値がBのプレイヤー全員、という意味になります。

@a[scores={A=B}]

scoresは範囲を指定することもでき、次のように書くと『Aの値がB~Cのプレイヤー全員』という意味になります。

@a[scores={A=B..C}]


つまり今回入力した『@a[scores={sneakTime=1..}]』は、スコアのsneakTimeが1以上のプレイヤー全員、という意味になります。

では、コマンドブロックに入力したコマンド全体の内容は、『スコアのsneakTimeが1以上のプレイヤーは、透明の効果が付与される』ということになりますね。


コマンドを実行モードにしよう

では、コマンドブロックの隣にレッドストーンブロックを置いて実行モードにしましょう。

f:id:hollys-command-lecture:20180826140545j:plain


そしてF5を押して三人称視点になり、Shiftキーを押してスニークしてみてください。すると・・・

f:id:hollys-command-lecture:20180826140626g:plain


透明になりましたね!


スコアをリセットしよう

・・・ですが、スニーク状態を解除してもずっと透明のままです。これでは作りたいのとちょっと違いますね。

これは、スコアの値を0に戻していないからです。

透明化になる条件はsneakTimeの値が1以上の時、でしたね。

確かにスニーク状態になるとsneakTimeの値は1以上になり、透明になります。しかし、スニーク状態を解除してもsneakTimeの値は0にはなりません。

なので、スコアの値を0に戻すコマンドを追加してあげる必要があります。プレイヤーの行動を検知するコマンドには絶対に必要なので忘れないようにしましょう。


次はチェーンコマンドブロックを使います。次のコマンドを実行してください。

チャット欄で実行/give @p minecraft:chain_command_block

入手したら、チェーンコマンドブロックを青のリピートコマンドブロックの隣に設置します。

この時、リピートコマンドブロックの矢印の向きがチェーンコマンドブロックの方を向いているか確認してください。向いていないとコマンドが正常に実行されないので注意です。

f:id:hollys-command-lecture:20180826140701j:plain


ちゃんと正しい向きでしょうか?では、チェーンコマンドブロックに次のコマンドを入力してください。

チェーン/scoreboard players set @a[scores={sneakTime=1..}] sneakTime 0

スコアの値を0に変更するのは/scoreboard players set でしたね。

f:id:hollys-command-lecture:20180826140713j:plain


完成!!

これでやっと完成です!お疲れさまでした。

スニーク状態を解除したら、透明状態も解除されるはずです。

f:id:hollys-command-lecture:20180826141139g:plain


まとめ

以上、スコアボードの使い方(基礎編)でした。

スコアボードの機能はまだ紹介していない部分もありますが、とりあえずは基礎的な機能だけ抑えていきましょう。

これだけでもできることはたくさん増えるので、ぜひいろんなことを試してみてください。


こちらの記事ではスコアボードのもう一つの特徴、ダミースコアを使ってタイマーを作っています。ダミースコアもとても重要なコマンドなので、ぜひ習得しておきましょう。

f:id:hollys-command-lecture:20180628111736p:plain

やっとBEにスコアボードが追加されて嬉しい・・・。ですが、tagもparticleもdataも実装されてないので、コマンドの自由度で言えばまだまだJEには及ばないですね。