この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
死亡を検知するコマンドについて知りたいマインクラフター
「死亡したことを検知するコマンドってどういうコマンドなのかな? 実際にどうやるのか教えて欲しいな」
こんな疑問を解決します!
- 死亡したことを検知するにはscoreboardコマンド
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!
この記事では死亡したことを検知するコマンドについて解説していきます。
死亡したことを検知するには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コマンドは使い慣れないと難しい部分がありますので、以下の記事も参考にしてもらえると幸いです。
スコアボードの値をリセット
次にスコアボードの値をリセットするコマンドを組みます。
このようなコマンドを組む理由は、testの値が変更されず延々とダイヤモンドが付与されてしまうからです。
用意するコマンドはこちら。
/execute as @a[scores={test=1..}] run scoreboard players set @s test 0
executeコマンド部分は同じです。
run以降のscoreboardコマンドで、コマンドの実行者のtestの値を0にしています。
このコマンドはコマンドブロックならばチェーンコマンドブロックとして繋げます。
(チェーン、条件付き、常時実行で設定。向きにも気をつけること)
データパックの場合は1つ目のコマンドの下の行に書いておけばOKです。
これで、ダイヤモンドを付与した瞬間にスコアボードの値は0に戻るようになりました。
死亡する度にダイヤモンドを付与するギミックの完成です。
今回は分かりやすさを優先したため、giveコマンドを使用しています。
そのため、ゲームオーバー画面ではダイヤモンドを手にしていますが、リスポーンすると消えてしまいます。
死亡時にアイテムを付与させるには、次項で紹介する別の項目を使用するか、さらなる条件を指示する必要があります。
死亡時にカウントを始めるスコアボードの項目
scoreboardコマンドにはdeathCount(minecraft.custom:minecraft.deaths)以外にも死亡をトリガーとする項目が存在します。
それが以下の通り。
minecraft.custom:minecraft.time_since_death
minecraft.custom:minecraft.time_since_deathでは、死亡してリスポーンしてからの時間を計測します。
そのため、リスポーンした瞬間を検知することが可能です。
deathCountとは違い、時間の計測をする点には注意です。
minecraft.custom:minecraft.time_since_rest
minecraft.custom:minecraft.time_since_restも先ほど紹介した項目同様、死亡してからの時間を計測します。
しかし、リスポーンする前のゲームオーバーの画面から計測を始めるので、わずかな差ですが明確な違いが存在します。
まとめ
というわけで、今回のまとめです。
今回使ったコマンドはこちら。
/scoreboard objectives add test deathCount "テスト"
/execute as @a[scores={test=1..}] run give @s minecraft:diamond 1
/execute as @a[scores={test=1..}] run scoreboard players set @s test 0
この記事は以上になります。