execute(エクセキュート)コマンドを使うことで
右手に特定のアイテムを持っているかどうかの検知を行うことができます。
以下のコマンドをリピートコマブロなどで実行することでプレイヤーが検知したいアイテムを右手に持っているかどうかを調べることができます。
execute if entity @p[nbt={SelectedItem:{id:"minecraft:検知したいアイテムのID"}}]
左手(オフハンド)に持っているアイテムを検知したい場合は以下のコマンドで設定できます。
execute if entity @p[nbt={Inventory:[{id:"minecraft:検知したいアイテムのID",Slot:-106b}]}]
インベントリの他の場所に設定したい場合は「Slot:」の後ろの数字部分を変更して指定します。対応表は以下のページにあります。https://ja.minecraft.wiki/w/%E3%82%B9%E3%83%AD%E3%83%83%E3%83%88#/media/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Items_slot_number.png
今回は例として”トイレのかぎ”と名前のついたトライアルキーを右手に持っているときに鉄のドアを開けるコマンドを紹介します。
このコマンドはMinecraft JAVA版1.21.3で動作確認済みです。
まずは鍵を入手しましょう。鍵の入手には以下のgive(ギブ)コマンドを使います。
「T」キーを押して出てきたチャット欄にコマンドを入力して実行しましょう。
/give @p trial_key[custom_name='"トイレのかぎ"'] 1


鍵をゲットしたらこのようなおトイレを建築します。リピートコマンドブロックとコンパレーター、鉄のドアは必ず上の画像と同じように設置してください。
execute if entity @p[distance=..3,nbt={SelectedItem:{id:"minecraft:trial_key",count:1,components:{"minecraft:custom_name":'"トイレのかぎ"'}}}]
コマンドブロックに上記コマンドを入力したあと、設定を(リピート・無条件・常時実行)にして保存してください。
ドアから3マス以内に立っていて、右手に”トイレのかぎをもっているときにドアが開くようになっていればOKです。
