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

【解説】ホットバーにあるアイテムを検知するコマンド【マイクラ】

【解説】ホットバーにあるアイテムを検知するコマンド【マイクラ】

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

ホットバーにあるアイテムを検知したいマインクラフター
「ホットバーに特定のアイテムを置いた時にコマンドが起動するようにしたい。あと、指定したホットバーにアイテムを与える方法とかもあるのかな?」

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

本記事の内容
  • ホットバーにあるアイテムを検知するコマンド
  • 指定した場所にアイテムを付与させるコマンド

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

なつめ

マイクラ歴は5年程で、最近は脱出マップを配布・制作しています!
→配布マップ・ダウンロードページ

この記事ではホットバーに関するコマンドを紹介していきます。

ホットバーについては過去に解説しているので、いまいちよく分かっていないなんて方はこちらからどうぞ。

ホットバーとは画面に表示されているアイテム欄のこと【マイクラ】

ホットバーに関するコマンドを使えるようになると、手に○○を持っているプレイヤーを対象になどといったことができるので、かなり便利です。

なので、是非ともこの記事で習得していただければなと思います。
さっそく見ていきましょう!



ホットバーにあるアイテムを検知するコマンド

ホットバーにあるアイテムを検知するコマンドはありませんが、ホットバーの特定の位置に指定したアイテムを持っているプレイヤーだけをコマンドの対象にすることは可能です。

要するに、コマンドの対象となるターゲットセレクターを詳しく指定するわけですね。

今回はホットバーの一番左側にコマンドブロックを持っているプレイヤーを対象に、コマンドを打ってみます。

というわけで実際のコマンドはこちら。

/effect give @a[nbt={Inventory:[{Slot:0b,id:"minecraft:command_block",Count:1b}]}] minecraft:glowing 30 0 true

このコマンドを使うと、ホットバーの一番左側にコマンドブロックを持っているプレイヤーだけを30秒間光らせることができます。

effectコマンドの解説は過去にしていますので、そちらを参考にしてください。

【基礎解説】effectコマンドでエフェクトを扱える【マイクラ】

今回大事なのは、ターゲットセレクターである@a[nbt={Inventory:[{Slot:0b,id:”minecraft:command_block”,Count:1b}]}]の部分です。

特に@a以降の詳細部分ですね。
nbt=でそのプレイヤーが持ち合わせている情報を指定しています。

さらにInventoryによってインベントリ(ホットバー)にあるアイテムの情報の指定だと指示します。
具体的には位置を示すSlotと何のアイテムかを指示するid、最後に数の指定であるCountです。

  • Slot
    インベントリの位置を指定する項目。ホットバーを指示する場合は左端から0b、1b、2b……と指定していく。
    (ホットバーは9つあるので、右端は8bとなる)
  • id
    Slotで指示した位置にあるアイテムを指示する。いわゆるアイテムIDを入力すればOK。
    簡単にアイテムIDを知る方法!とある2つのキーを同時押しするだけ!【Java版】
  • Count
    Countでは指定したアイテムを幾つ持っているのかを指示できます。
    上記のコマンドでは1bなので、1個持っている場合だけに対象となります。(2個以上持っている状態だと対象でなくなります)
    また、Countを書き加えなければ指定したSlotに指定したアイテムがあれば幾つ持っていても機能するようになります。

なので、もしホットバーの右端にダイヤモンドを10個持っているプレイヤーを対象としたい場合には、

@a[nbt={Inventory:[{Slot:8b,id:"minecraft:diamond",Count:10b}]}]

といった感じに入力すればOKです。

あとは各コマンドのターゲットセレクターに活用すれば、ホットバーにあるアイテムを検知しているかのようにコマンドを扱えます。

手に持っているアイテムを検知したい場合

先ほど紹介したターゲットセレクターの絞り方の場合は、特定の位置に特定のアイテムを持っている場合に適用される方法でした。

しかし、この方法では特定のアイテムを手に持っている時にだけ検知したいということができませんね。

そこで、また別の文字列を使って検知します。
先ほど紹介した方法を理解していれば難しいことはないですよ。

というわけで、使う文字列はSelectedItemになります。
実際にターゲットセレクターに使ってみると以下のようになります。

@a[nbt={SelectedItem:{id:"minecraft:diamond",Count:5b}}]

上記のターゲットセレクターでは、ダイヤモンド5個を手に持っているプレイヤーだけを対象にすることとなります。

idやcountの部分は先ほど紹介したものと同一なので、説明は省きます。
(idを変えれば手にしているアイテムの種類を、Countを変えれば手にしているアイテムの個数を変更できます)

指定した場所にアイテムを付与させるコマンド

指定したホットバーやインベントリにアイテムを付与するには、giveコマンドは使えません。
giveコマンドはアイテムを付与することだけに特化しているので、与えた際にどのアイテム欄に置くかは指定できないからですね。

そこで、giveコマンドの代わりに使うコマンドがitemコマンドです。
itemコマンドはプレイヤーやエンティティの装備、インベントリのアイテムを操作することのできるコマンドで、今回は指定したホットバーにアイテムを置いていきます。

giveコマンドが与えるコマンドであるならば、itemコマンドは指定したアイテム欄のデータを置き換える、上書きするといったイメージです。

なので、指示した場所にアイテムを持っているとそのアイテムを上書きして指示したアイテムへ変更してしまいます。

すべてのプレイヤーの一番左端のホットバーをエメラルドに置き換えるコマンドは以下の通りです。

/item replace entity @a hotbar.0 with minecraft:emerald

全体だけを見るとやや複雑なコマンドに見えますが、弄る箇所は主に橙色に変更した3箇所だけです。

それぞれターゲットセレクター、アイテム欄、アイテムIDを示す箇所になっています。

ターゲットセレクターについてはコマンドの対象は全部で6種類!それぞれが意味するものを解説します【マイクラ】を参考にしてください。
また、アイテムIDについてもidの部分で解説しているので割愛します。

なので、ここではアイテム欄を指示する部分だけ解説していきます。
と言っても、非常に簡単でホットバーを指示したい場合にはhotbar.〇といった感じに入力すればOKです。

〇の部分には0~8の数字が入り、Slotの項目で解説したものと同じになります。
なので、左端が0、右端が8となるように数えれば、指示したい位置のホットバーの文字列が分かるはずです。

加えて、候補として出現する文字列なので、スペルミスなどをすることもありません。

もし左から4番目のホットバーを指定したければ、hotbar.5を選べば左から4番目のホットバーを指示できます。

そのほかitemコマンドについて詳しく知りたいという方は以下の記事などどうぞ。

【ver1.17~】コマンドで装備する方法!replaceitemは廃止!【Java版】
頭にブロックを装備する方法を解説!コマンド1つで簡単です!【Java版】

まとめ

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

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

今回使ったコマンド
  • ホットバーの一番左側にコマンドブロックを持っているプレイヤーを対象にするためのターゲットセレクタ―
@a[nbt={Inventory:[{Slot:0b,id:"minecraft:command_block",Count:1b}]}]
  • ダイヤモンドを5つ手に持っているプレイヤーを対象にするターゲットセレクタ―
@a[nbt={SelectedItem:{id:"minecraft:diamond",Count:5b}}]
  • すべてのプレイヤーの、1番左のホットバーをエメラルドに置き換えるコマンド
/item replace entity @a hotbar.0 with minecraft:emerald
ポイント
  • ホットバーのアイテムを検知するコマンドはないが、ターゲットセレクタ―に情報を書き込んでその条件に該当するプレイヤーだけを対象にする。
    (実質ホットバーの検知ができているようなもの)

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

  • 【まとめ】functionコマンドの基本から応用【マイクラ】
  • 【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】