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

【投げると発動】コマンドで雪玉を投げたことを検知する【マイクラ】

【投げると発動】コマンドで雪玉を投げたことを検知する【マイクラ】

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

コマンドの発動条件を考えているマインクラフター
「雪玉を投げたらコマンドが発動するようにしたいんだけど、どうすればいいのかな?」

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

本記事の内容
  • scoreboardコマンドで雪玉を投げたことを検知する

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

なつめ

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

この記事では、雪玉を投げたことを検知してコマンドを実行する方法について解説しています。

雪玉を投げるだけでコマンドが実行できるようにすると、コマンドを起動させる条件がかなり簡単になりますので、非常に扱いやすい機構と言えます。

また、脱出マップにしろミニゲームにしろ取り入れやすいのもおすすめポイントですね。

それでは、さっそく見ていきましょう!



scoreboardコマンドで雪玉を投げたことを検知する

雪玉を投げたことはスコアボードで検知すればOKです。
なので、scoreboardコマンドを使っていきます。

スコアボードとはscoreboardコマンドで作成できるもので、特定の行動をした回数をカウントするものです。

まずは雪玉を投げたことをカウントするスコアボードを作っていきます。
そのためにminecraft.used:minecraft.snowballという項目を指定し、雪玉を投げたことを検知できるようにします。

/scoreboard objectives add yukinage minecraft.used:minecraft.snowball

yukinageというのはスコアボードの名称になりますので、分かりやすい名前を付ければOKです。
今回は雪玉を投げたことを分かりやすいように名付けました。

準備としてはこれだけで、あとはスコアボードの値が1のプレイヤーがいる時にコマンドを実行するようにすればOKです。

作成したスコアボードの値が1ということは、1回雪玉を投げているということになります。

今回は雪玉を投げるたびにダイヤモンドが1つ貰えるようにしていきます。
ですので、まずはスコアボードの値が1の時にダイヤモンドを付与するコマンドです。

execute at @a[scores={yukinage=1}] run give @p diamond 1

上記のコマンドはリピートコマンドブロックに無条件、常時実行にしておく必要があります。
これは常にスコアボードの監視、今回の場合はyukinageというスコアボードの値を監視する必要があるため、リピートしておく必要があるわけですね。

さらにこのままではスコアボードの値が1のままですので、ダイヤモンドが付与され続けてしまいます。
その対策として、ダイヤモンドを付与したらスコアボードの値を0に戻すコマンドをリピートコマンドブロックに繋がる形でチェーンコマンドブロックを設置します。

scoreboard players reset @a yukinage

チェーンコマンドブロックの設定は、条件付き、常時実行にします。
これで雪玉を投げるとスコアボードの値が1になってダイヤモンドを付与、その後スコアボードの値を0に戻すという仕組みになりました。

まとめ

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

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

今回使ったコマンド
  • yukinageという名称で、雪玉を投げたことを検知するスコアボードを作成するコマンド
/scoreboard objectives add yukinage minecraft.used:minecraft.snowball
  • 雪玉を投げたことを検知して、ダイヤモンドを付与するコマンドを実行
    (繰り返し利用する場合はリピートにして、別途チェーンコマンドブロックにスコアボードの値をリセットするコマンドが必要)
execute at @a[scores={yukinage=1}] run give @p diamond 1
ポイント
  • 雪玉を投げたことを検知するには、scoreboardコマンドを利用する必要がある。

雪玉を投げるのではなく、捨てたことを検知したい場合には以下の記事が参考になります。
雪玉だけでなく、様々なアイテムを捨てたことを検知できますよ。

【Java版】アイテムを捨てることでコマンドを起動させる方法!【簡単】

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