Youtubeチャンネルはこちら!コマンド解説を動画で観れます!

死亡したことを検知するにはscoreboardコマンド【マイクラ】

死亡したことを検知するにはscoreboardコマンド【マイクラ】

この記事では、Minecraft Java Edition(バージョン1.19.2)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

死亡を検知するコマンドについて知りたいマインクラフター
「死亡したことを検知するコマンドってどういうコマンドなのかな? 実際にどうやるのか教えて欲しいな」

こんな疑問を解決します!

本記事の内容
  • 死亡したことを検知するにはscoreboardコマンド

こんにちは! マインクラフターのなつめ(@natsume_717b)です。

なつめ

マイクラ歴は5年程で、最近は脱出マップやミニゲームを制作しています!
ダウンロードページ

この記事では死亡したことを検知するコマンドについて解説していきます。

死亡したことを検知するにはscoreboardコマンドを使う必要があるので、スコアボードの作成をしなければなりません。
そういった下準備となるコマンドから、実際に死亡した時にどのようにコマンドを実行するのかを紹介していきます。

さっそく見ていきましょう!



死亡したことを検知するにはscoreboardコマンド

死亡したことを検知するには、scoreboardコマンドが有効です。

というのも、scoreboardコマンドでは死亡した回数を数える項目が存在します。
その項目を利用することで死亡したかどうかを検知できます。

具体的にはdeathCountという項目を使います。
このdeathCountという項目のスコアボードは死亡したら値を1増やします。
死亡しなければ0のままですね。

minecraft.custom:minecraft.deathsという項目を使っても同様に機能します。

死亡したプレイヤーだけを対象にコマンドを実行したければ、deathCountのスコアボードの値が1以上であるプレイヤーを指示すればOKということになります。

というわけで、以下のコマンドを実行することでdeathCountのスコアボードを作成できます。

/scoreboard objectives add test deathCount "テスト"

今回はスコアボードの名称を「テスト」、識別するためのobjective名をtestとしましたが、この部分は各自分かりやすいものに指定して大丈夫です。

ただし、objective名は他のコマンドでスコアボードを指示したいときに使いますので、各自指定したものに合わせて適宜変更してください。

scoreboardコマンドについては、【必修】行動をカウントするscoreboardコマンド【マイクラ】で基本的なことを解説しています。

例えば、死亡したらダイヤモンドが1つ手に入るというギミックを作ってみます。
まずは死亡したことを検知しつつダイヤモンドを付与させます。

/execute as @a[scores={test=1..}] run give @s minecraft:diamond 1

executeコマンドでコマンドの実行者をtestの値が1以上のプレイヤーとしています。
そしてrun以降に記述されているgiveコマンドではダイヤモンドをコマンドの実行者に1つ与えるようにしています。

なので、testの値が1以上のプレイヤーにダイヤモンドを1つ付与するようになっています。

このコマンドは常時実行してtestの値を監視しなくてはならないので、コマンドブロックの場合はリピート、無条件、常時実行の設定にしておく必要があります。
データパックの場合は、上記のコマンドが格納されているmcfunctionが機能するようにtick.jsonへ記載して、常時実行されるようにしておきましょう。

executeコマンドは使い慣れないと難しい部分がありますので、以下の記事も参考にしてもらえると幸いです。

【超便利】executeコマンドは条件や仮定を付与する【マイクラ】

そして、次にスコアボードの値をリセットするコマンドを組みます。
このコマンドがないと、testの値が変更されず延々とダイヤモンドが付与されてしまいます。

/execute as @a[scores={test=1..}] run scoreboard players set @s test 0

executeコマンド部分は同じです。
run以降のscoreboardコマンドでtestの値を0にしています。

このコマンドはコマンドブロックならばチェーンコマンドブロックとして繋げます。
(チェーン、条件付き、常時実行で設定。向きにも気をつけること)
データパックの場合は1つ目のコマンドの下の行に書いておけばOKです。

これで、ダイヤモンドを付与した瞬間にスコアボードの値は0に戻るようになりました。

ダイヤを付与する以外にもコマンドを実行したい場合には、スコアボードの値を0にするコマンドを最後に実行するようにコマンドブロックを繋げる、mcfunctionに記述するということをすれば他のコマンドも実行することができます。

というわけで、死亡したことを検知するにはscoreboardコマンドを使えばOKです。

まとめ

というわけで、今回のまとめです。

今回使ったコマンドはこちら。

今回使ったコマンド
  • 死亡回数を数えるスコアボードを作成するコマンド
/scoreboard objectives add test deathCount "テスト"
  • testの値が1以上のプレイヤーにダイヤモンドを1つ付与するコマンド
/execute as @a[scores={test=1..}] run give @s minecraft:diamond 1
  • testの値が1以上のプレイヤーのtestの値を0にするコマンド
/execute as @a[scores={test=1..}] run scoreboard players set @s test 0
ポイント
  • 値の変動を検知するためにリピートコマンドブロックを使う必要があります。
    (データパックの場合はtick.jsonの利用が必要)

この記事は以上になります。