マルチプレイなら『シン・VPS』がおすすめ!

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

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

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

コマンド初心者なマインクラフター
「アイテムを捨てたことを感知したいんだけど、そんなコマンドある?」

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

本記事の内容
  • ドロップしたことはscoreboardコマンドで感知できる
  • 実際の活用例

こんにちは! マインクラフターのナツメ(@natsume_717b)です。

ナツメってこんな人
  • 脱出マップを配布・制作しています!
    →配布マップ・ダウンロードページ

今回はアイテムを捨てたことを感知するコマンドについて解説していきます。
アイテムを捨てたことを直接的に感知するコマンドはありませんが、scoreboardコマンドを使えば問題なく感知できます。

この捨てることを感知するコマンドを使うことで、ボタンが使えない状況でも回路やコマンドをリセットすることが可能となります。
実際、私が作った配布マップにもそういったシーンがありますので、有用性はありますね。

記事の前半ではscoreboardの作成及び使い方を。
後半では実際にどんな活用方法があるのかを紹介していきます。

というわけで、さっそく見ていきましょう!

ドロップしたことはscoreboardコマンドで感知できる

アイテムを捨てたことをコマンドで反応させたい場合は、scoreboardコマンドのdroppedの項目を使います。

要するに指定したアイテムを捨てるとカウントが進むスコアボードを作成するということです。

例えば、ダイヤモンドを捨てたことを感知したいとしましょう。
その場合は「minecraft.dropped:minecraft.diamond」という項目を使います。

実際のコマンドは以下の通り。

/scoreboard objectives add スコアボードの名前 minecraft.dropped:minecraft.diamond

dropped:の後に続くアイテムIDが捨てられた時に感知するものなので、他のアイテムで反応させたい場合はminecraft.diamondの部分を該当のアイテムIDに変更すればOKです。

トリガーとなる「minecraft.dropped:~」の箇所は候補が出現してくれますので、途中まで入力して目当てのものを探しましょう。

また、スコアボードの名前は英数字のみを使っていれば、なんでもOKです。
自分で判断しやすいように名前をつけましょう。

ただしスコアボードを作るだけでは、捨てたことを感知できても他には何も起きません。
なので、捨てたことを感知したら別の事が起きるようにコマンドブロックを設置しましょう。

そのためにexecuteコマンドを使います。
executeコマンドは、コマンドを実行するために条件を付与したりするコマンドですね。

書き込む内容としては

execute if entity @p[scores={作成したスコアボードの名前=1..}] run 実行したいコマンド

となります。
(リピートコマンドブロック、無条件、常時実行)

要するに作成したスコアボードの値が1以上なら、[実行したいコマンド]を起動しますよというコマンドになります。

テレポートしたいならtpコマンドを繋げばいいですし、tellrawコマンドと繋いで「捨てるな!」と警告することもできます。

スコアボードの値が1以上の時なので、このままでは[実行したいコマンド]が延々と繰り返してしまいます。
なので、上記のコマンドを入れたリピートコマンドブロックにチェーンコマンドブロックを繋ぎます。(チェーンコマンドブロックはチェーン、条件付き、常時実行にしておきます)
そして、コマンドに部分にはスコアボードの値をリセットするよう書いておきましょう。

XXXXのスコアをリセットするコマンド
/scoreboard players reset @a XXXX

というわけで、捨てたことでコマンドが起動する方法について解説しました。
次は実際の活用例を紹介していこうと思います。

実際の活用例

先ほど例に挙げた使い方以外にも、活用は挙げられます。

例えば、アイテムを入手したことでスコアボードの値を上げている場合、捨ててしまった場合は逆にスコアボードの値は減らさなくてはなりません。
これに関しては【Java版】コマンドを使って村人を喋らせよう!【会話の変更方法も】を読んでいただくと腑に落ちると思います。

上記の記事では村人を喋らせる方法について解説しており、その中で探し物をしてほしいという内容の話をしています。
当然、その探し物を村人の元へ持って行ったときに、話す内容は変わってなくてはなりません。

そこで、その探し物を手に入れた段階で会話内容を決めているスコアボードの値を別の数字に設定します。

そうして会話の内容を変更するのですが、途中でその探し物を捨ててしまった場合スコアボードの値は別の数字に変わったのにもかかわらず、探し物は持っていない状態になります。

このままでは該当アイテムを持っていないのに、持っている体で話が進んでしまいます。

それを阻止するために、そのアイテムを捨てたことを感知してスコアボードの値を探し物入手前の数字に戻すことが必要があるということです。

まとめ

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

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

今回使ったコマンド
  • ダイヤモンドを捨てたことを感知するコマンド
/scoreboard objectives add XXXX minecraft.dropped:minecraft.diamond
  • 捨てたことで別のコマンドを起動させる
execute if entity @p[scores={XXXX=1..}] run 実行したいコマンド
ポイント
  • 別のコマンドを起動させた際、チェーンコマンドブロックでスコアの値をリセットするのを忘れずに。
    →スコアが1以上であると、コマンドの内容を延々と繰り返してしまうため。

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