Minecraft【武器・防具・道具】炎の盾。オフハンド検知

Java版1.21.5-、統合版v1.21.81-で動作確認。
攻撃をガードすると、相手を燃やす。
炎の盾。v1.30
盾で攻撃をガードした時、近くのモブを3体燃やします。盾を解除すると、近くの炎を消化する「炎の盾」を作ります。Java版と統合版ではコマンドが大きく異なりますが、同じように動く装置になりました。v1.30のJava版は、装備の仕様変更に対応。ノックバックを追加しました。統合版は、タグを使わない「ポーション式」に変更。ひとつの装置でマルチプレイに対応しました。Java版は中級者、統合版は上級者向けの装置になります。
◻︎装置の特徴
・ひとつの装置でマルチプレイ対応。
・オフハンド検知。
・炎の消化。
【Java版】
・盾ダメージ検知。
・ノックバック再現。
【統合版】
・アイテム名で装置を起動。
・耐久度(データ値)を使ったループ装置。
・ポーション式で、装置を簡略化。
更新履歴
2025-5-11/Java版の仕様変更に対応。統合版は装置を改良。
2024-5-8/古い情報を更新しました。Java版(1.20.5-)のデータコンポーネントに対応。
2023-5-26/統合版のターゲットの絞り込みを、専用コマンド「family」に変更しました。
2023-4-1/Java版のコマンドを変更しました。
2023-3-25/統合版v1.19.70以降のコマンドに対応! 複雑な装備検知をやめ、アイテム名から動作するように変更しました。Java版も、コマンドの調整と装置を簡略化しました。
プレイ動画。v1.1(旧式)
炎の盾(ほのおのたて)を統合版v1.19.70以降のコマンドに対応! Java版もコマンドの調整、簡単装置に変更しました(完成データ付き)。防具立てを使った炎の消化、様々なアイテム検知、オフハンド、盾ダメージ検知(Java版)など。#マイクラhttps://t.co/uM6ruVPV9U pic.twitter.com/pVY2qMYPEh
— tokoton0ch (@tokoton0ch) March 25, 2023
旧式/ v1.0はこちら。
目次
1.作成準備
・使用方法。
2.炎の盾【Java版】
・盾を入手(名前を変更)。
・コマンドの結合。
・スコアボードの作成。
・オフハンドを検知。
3.炎の盾【統合版】
・装置のしくみ。
・鉄のヘルメットを入手(名前を変更)。
・ポーションを入手。
・捨てる式。
・ループ装置。
4.ワールドデータ
・完成データをダウンロード。
※「as」や「minecraft:」など、一部のコマンドは簡略化。必要な場合は記入してあります。
作成準備
使用方法。
コマンドブロックの使い方、「アイテム検知」や「hasitem」の詳細は、関連記事をご確認ください。
- 詳しくこちら→ 【テクニック】コマンドブロックの使い方。1-2
- 詳しくこちら→ 【テクニック】アイテム検知を使って、コマンド実行。2-2
炎の盾【Java版】
「炎の盾」をオフハンドに持つと火炎耐性が付き、盾がダメージを受けると、近くのエンティティを3体燃やし、ノックバックします。盾をメインハンドに持ち替えると、周辺の炎が消えます。装備はダメージを受け壊れると壊れます。※「炎の盾」は、オフハンドに装備してください。
盾を入手(名前を変更)。
名前を変更したアイテムをコマンドから入手。説明文やエンチャントも追加出来ます。※コマンドは長くなるので、メモ帳やテキストエディタを使うと便利です。
◻︎コマンド 例
/give @s shield 1 |
①盾を1個入手するコマンド。
◻︎コマンド 例
[custom_name="炎の盾",lore=["説明文"]] |
②アイテム名や説明文を追加します(NBT形式)。※item_nameにすると、金床で名前を変更出来ない装備になります。
コマンドの結合。
◻︎コマンド 例
/give @s shield[custom_name="炎の盾",lore=["説明文"]] 1 |
アイテムIDに②のコマンド(NBT形式)を繋げます。
◻︎コマンド 例
.....["説明文"],enchantments={"minecraft:fire_protection":10}] 1 |
「火炎耐性LV10」のエンチャントを付けた場合。
スコアボードの作成。
◻︎コマンド 例
/scoreboard objectives add shield minecraft.custom:minecraft.damage_blocked_by_shield |
盾ダメージを検知するために、スコアボードを作っておきます。
オフハンドを検知(Java版)。
オフハンドに「炎の盾」を装備した時、攻撃をガードした時、各種コマンドを実行します。※燃やしたいエンティティは、指定してくだい。データパックを使う場合は「最初からクライマックス」参照。
「A」はチェスト。
【Java版】
①execute at @a[scores={shield=1..},nbt={equipment:{offhand:{components:{"minecraft:custom_name":"炎の盾"}}}}] run tp @e[type=!villager,type=!item,type=!player,type=!armor_stand,type=!arrow,type=!item_frame,distance=..10,sort=nearest,limit=3] ^ ^2 ^3 ②execute at @a[scores={shield=1..},nbt={equipment:{offhand:{components:{"minecraft:custom_name":"炎の盾"}}}}] run tag @e[type=!villager,type=!item,type=!player,type=!armor_stand,type=!arrow,type=!item_frame,distance=..10,limit=3] add fire ③scoreboard players reset @a shield ------ ④effect give @a[nbt={equipment:{offhand:{components:{"minecraft:custom_name":"炎の盾"}}}}] fire_resistance 1 10 ------ ⑤execute at @a[nbt={SelectedItem:{components:{"minecraft:custom_name":"炎の盾"}}}] run fill ~-5 ~-3 ~-5 ~5 ~3 ~5 air replace fire ------ ⑥execute at @e[tag=fire] run fill ~ ~ ~ ~ ~ ~ fire |
◻︎盾(データ値100)
【装置の起動】①②③
「炎の盾」がダメージを受けた時、近くのモブ3体をノックバック。タグ「fire」を付け、スコア「shield」をリセット。
------
【効果の再生】④⑤⑥
「炎の盾」を装備しているプレイヤーに、LV10の火炎耐性を3秒与える。「炎の盾」がメインハンドにある時、周辺の炎を消す。タグ「fire」があるエンティティを燃やす。
炎の盾【統合版】
今回はタグよりも管理の簡単なポーション式を採用。コマンドでしか装備出来ないアイテムを、オフハンドに設置することで、プレイヤーを絞ることが出来ます。ひとつの装置を、複数人で同時に使うことが出来ます。※盾はホットバー「0」で使用します。
装置のしくみ。
ダメージ検知が出来ないので、装備の耐久度を使ったループ装置を作ります。「耐火のポーション」を捨てるとオフハンドに装着。さらに「炎の盾」を捨てると盾をホットバー「0」に設置(データ値盾1000)。攻撃を受け盾が壊れた時、効果を再生。再び1回で壊れる盾をホットバー「0」に設置します。ポーションを外すと装置を停止。落とした「炎の盾」も、インベントリに戻ります。
鉄のヘルメットを入手(名前を変更)。
金床を使って鉄のヘルメットを「炎の盾」に変更。※名前が同じなら、他のアイテムでも動作します。
ポーションを入手。
装置はポーションと「炎の盾」の組み合わせで動く、ダブルトリガーを採用。スコアボードで回数を決めたり、購入アイテムにしたり、ポーションをうまく管理することで、使う場所を限定することが出来ます。今回の装置では「耐火のポーション」を、1人1個しか持てないようにしています。
◻︎コマンド 例
/give @s potion 1 12 |
耐火のポーションを1個入手するコマンド。
捨てる式。
ポーションを捨てた時、オフハンドにポーションを設置します。オフハンドに盾など、アイテムを持っている時は使えません。一度外してから使用してください。※長いコマンドは、メモ帳やテキストエディタを使うと見やすくなります。
⑥は条件付き。「A」はチェスト。
【統合版】
①execute at @a[hasitem={item=shield,data=1000,quantity=2..}] run clear @a[r=1,c=1] shield 1000 ②execute at @a[hasitem={item=potion,data=12,quantity=2..}] run clear @a[r=1,c=1] potion 12 1 ------ ③execute at @a[hasitem={item=potion,data=12,location=slot.inventory}] run clear @a[r=1,c=1] shield 1000 ④execute at @a[hasitem={item=potion,data=12,location=slot.hotbar}] run clear @a[r=1,c=1] shield 1000 ------ ⑤execute at @e[name=耐火のポーション] run replaceitem entity @p[r=1] slot.weapon.offhand 0 keep potion 1 12 ⑥kill @e[name=耐火のポーション] ------ ⑦execute at @e[name=炎の盾] run replaceitem entity @a[r=1,hasitem={item=potion,data=12,location=slot.weapon.offhand}] slot.hotbar 0 shield 1 1000 ⑧execute at @a[hasitem={item=potion,data=12,location=slot.weapon.offhand}] run tp @e[name=炎の盾,r=3] ~~~ ------ ⑨execute at @a[hasitem={item=potion,data=12,location=slot.weapon.mainhand,quantity=1}] run fill ~-5~~-3 ~5~3~5 air replace fire |
◻︎盾(データ値1000)
【数の制限】①②
盾、耐火のポーションが2個以上になった時、1個を削除。
------
【装置の停止】③④
耐火のポーションを外した時、盾を削除。
------
【装置の起動】⑤⑥
「耐火のポーション」が落ちている時、近くのプレイヤーに、耐火のポーションを設置。
------
【ターゲットの検知】⑦⑧
「炎の盾」をプレイヤーに戻す。
------
【効果の停止】⑨
「耐火のポーション」がメインハンドにある時、周辺の炎を消す。
ループ装置。
マルチプレイ対応。盾の破壊と設置の、最小ループ装置になります。コマンドブロックを減らすため、一部を共有しています。
③⑦は動力が必要。⑥はティックの遅延:10(最初のティックで実行:オフ)。⑦にレッドストーントーチ。
【統合版】
①execute unless entity @a[hasitem={item=shield,data=1000,location=slot.weapon.mainhand,quantity=1}] ②⑧replaceitem entity @a[hasitem={item=potion,data=12,location=slot.weapon.offhand}] slot.hotbar 0 shield 1 1000 ③kill @e[name=鉄のヘルメット] ------ ④execute unless entity @a[hasitem={item=shield,data=1000,quantity=1}] ⑤execute at @e[family=monster] as @a[hasitem={item=potion,data=12,location=slot.weapon.offhand},c=3,r=10] run fill ~~~ ~~~ fire ------ ⑥execute unless entity @a[hasitem={item=shield,data=1000,quantity=0}] ⑦effect @a[hasitem={item=shield,data=1000,location=slot.weapon.mainhand,quantity=1}] fire_resistance 2 10 |
◻︎盾(データ値1000)
【装置の起動】①②③
メインハンドに盾がない時、ホットバー「0」に盾を設置。
------
【効果の再生a】④⑤
盾を持っていない時、信号を出す。近くのモブを燃やし、エフェクトを再生。
------
【効果の再生b】⑥⑦⑧
盾を持っている時、信号を出す。近くのモブを燃やし、エフェクトを再生。
ワールドデータ
ワールドデータは、コマンド入力不要。アイテムの入った「トラップチェスト」を開くと装置が起動します。
完成データをダウンロード。
ダウンロード先/炎の盾v1.30
◻︎統合版【武器・防具・道具】炎の盾v1.30.mcworld
iOS、Android/Minecraftで開く。Windows/ダブルクリックでインポート。
◻︎Java版【武器・防具・道具】炎の盾v1.30.zip
解凍後、ワールド内の「saves」フォルダに入れる。
※二次配布は禁止です。