Minecraft【武器・防具・道具】炎の盾。(オフハンド検知)
Java版1.20.6、統合版はv1.20.81で動作確認。
攻撃されると相手を燃やす。
炎の盾。v1.20
盾で攻撃をガードした時、近くのモブを3体燃やします。盾を解除すると、近くの炎を消化。Java版と統合版では検知対象や方法が大きく異なりますが、似たような動作になります。マルチプレイ対応。Java版、統合版ともに中級者向けの装置となります。キーボード、コントローラー推奨。※Java版は新コマンド、データコンポーネントに対応。統合版は「hasitem」で装備のデータ値(耐久値)を検知します。
◻︎装置の特徴
・オフハンド検知。(インベントリ)
・炎の消化。
【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.コマンドブロックの設置
3.炎の盾【Java版】
・盾の入手(名前を変更)。・スコアボードの作成。・オフハンドの検知(Java版)。・コマンドの詳細。
4.炎の盾【統合版】
・アイテム名の変更。・タグ付け装置。・テレポート式。・アイテムの保存。
5.ワールドデータ
・完成データのダウンロード。
※「as」や「minecraft:」などのコマンドは簡略化しています。一部のコマンド、マルチプレイやサーバーでは必要な場合があります。
作成準備
マルチプレイ対応。※統合版での同時使用には、複数の装置を作る必要があります。
ログの非表示。
◻︎ログの非表示とコマンドブロックを入手。
/gamerule commandBlockOutput false /give @s command_block |
コマンドブロックの設置
コマンドブロックは画像に合わせて配置。「ブロック種類」「レッドストーン」を変更します。 変更がある場合は、個別に解説していきます。
◎配置したコマンドブロックの状態/すべて無条件。※()内は統合版の名称。
コマンドブロックの色 | ブロックの種類 | レッドストーン |
黄色 | インパルス | 動力が必要 |
青色 | チェーン(鎖) | 常時実行 |
紫色 | リピート | 常時実行 |
炎の盾【Java版】
「炎の盾」をオフハンドに持つと火炎耐性が20秒付き、盾がダメージを受けると、近くのエンティティを3体燃やします。盾をメインハンドに持ち替えると、周辺の炎が消えます。装備はダメージを受けると壊れます。※「炎の盾」はオフハンドに装備しないと、コマンドは実行されません。
盾の入手(名前を変更)。
Java版では名前や説明文を付けた装備を、コマンドから直接出す事が出来ます。※コマンドは長くなるので、メモ帳やテキストエディタを使うと作りやすいです。
【盾】
①盾を1個入手するコマンド。
/give @s shield 1 |
【アイテム名と説明文】
②アイテム名や説明文を追加します(NBT形式)。※item_nameにすると、金床で名前を変更出来ない装備になります。
[custom_name="炎の盾",lore=["説明文"]] |
【コマンドの結合】
アイテムIDに②のコマンド(NBT形式)を繋げます。
/give @s shield[custom_name="炎の盾",lore=["説明文"]] 1 |
※エンチャントを付ける場合(火炎耐性LV10)。
.....["説明文"],enchantments={levels:{"fire_protection":10}}] 1
改行無しの1行で、チャットに入力して「炎の盾」を入手します。
スコアボードの作成。
盾ダメージを検知するために、スコアボードを作っておきます。
/scoreboard objectives add shield minecraft.custom:minecraft.damage_blocked_by_shield |
◻︎削除するには /scoreboard objectives remove shield
オフハンドの検知(Java版)。
オフハンドに装備している装備を、アイテム名で検知して、コマンドを実行します。
【Java版】
①execute at @a[scores={shield=1..},tag=f_shield] at @e[type=!villager,type=!item,type=!player,type=!armor_stand,type=!arrow,type=!potion,type=!item_frame,distance=..10,sort=nearest,limit=3] run fill ~ ~ ~ ~ ~ ~ fire ②scoreboard players reset @a[tag=f_shield] shield ------ ③tag @a[nbt={Inventory:[{Slot:-106b,components:{"minecraft:custom_name":"\"炎の盾\""}}]}] add f_shield ------ ④effect give @a[tag=f_shield] fire_resistance 20 10 ------ ⑤execute unless entity @a[nbt={Inventory:[{Slot:-106b,components:{"minecraft:custom_name":"\"炎の盾\""}}]}] ⑥execute at @a[tag=f_shield] run fill ~-15 ~-3 ~-15 ~15 ~7 ~15 air replace fire ⑦tag @a remove f_shield |
【オフハンド検知】
①スコア「shield」が1以上の時、タグ「f_shield」の10ブロック以内で、近くのエンティティを3体燃やす。
②スコア「shield」をリセット。
※①燃やしたいエンティティを指定します。
------
③オフハンドに「炎の盾」を装備しているプレイヤーに、タグ「f_shield」を付ける。
------
④タグ「f_shield」に、LV10の火炎耐性を20秒与える。
------
⑤「炎の盾」をメインハンドに持ち替えた時、信号を出す。
⑥タグ「f_shield」の周辺の炎を消す。
⑦タグ「f_shield」を削除。
※アイテムIDや、説明文は省略可。金床が使える環境では注意が必要。「minecraft:」が必要です。 コマンドの詳細は割愛。
炎の盾【統合版】
統合版では盾のダメージを検知出来ないので、装備の耐久度を使ったループ装置を作ります。モブの攻撃を受け装備が壊れた時、近くのエンティティを燃やします。再び1回で壊れる盾を装備します。ループ装置を停止するために、帽子を使います。簡単なタグの切り替え装置と、テレポート式の装置を紹介。※耐久度の減った装備を投げた時も効果が発動します。
アイテム名の変更。
金床を使ってチェストと鉄のヘルメットの名前を変更します。
鉄のヘルメット→「炎の盾」を3個作成。
チェスト→「盾ケース」を2個作成。
タグ付け装置。
マルチプレイ用に装備を出し入れする時に、タグの切り替えが出来る盾ケースを作ります(切り替え式)。※同じタグ名のプレイヤーが複数いるとうまく動作しません。
開始点は座標(0 -60 0)。「A」は座標(1 -60 0)、「B」は座標(1 -60 4)。②レッドストーンランプ、トーチを設置。
【統合版】
①execute if blocks 1 -60 0 1 -60 0
1 -60 4 all ②tag @a remove f_shield ③tag @p add f_shield |
①座標「A」と「B」のチェストの中身が同じ時、信号を出す。
②信号がある時、全てのプレイヤーからタグ「f_shield」を削除。
③信号がない時、近くのプレイヤーにタグ「f_shield」を追加。
「A」と「B」のチェストの中身が同じ時、プレイヤーのタグが消えレッドストーンランプが点灯。 ※チェストの向き、装備の位置や耐久度も合わせる必要があります。 ◻︎タグの確認。 /tag @a list
テレポート式。
「炎の盾」を投げた時、「炎の盾」を頭上に追尾して、ループ装置を起動します。スマホやゲーム機でも作れますが、頭上のアイテムは5分で消滅します。
①はティックの遅延10。⑤は動力が必要。⑩はティックの遅延6。
【統合版】
①execute if entity @e[name=炎の盾] run replaceitem entity @a[tag=f_shield] slot.armor.head 0 keep iron_helmet 1 600 ②execute at @a[hasitem={item=iron_helmet,location=slot.armor.head,data=600}] run replaceitem entity @a[tag=f_shield] slot.weapon.offhand 0 keep shield 1 1000 ------ ③execute at @a[hasitem={item=iron_helmet,location=slot.armor.head,data=600}] run tp @e[name=炎の盾] ~~3~ ------ ④clear @a[tag=f_shield] shield 1000 0 ⑤kill @e[name=盾] ⑥execute at @e[family=monster] as @a[tag=f_shield,c=3,r=10] run fill ~~~ ~~~ fire ⑦effect @a[tag=f_shield] fire_resistance 20 10 ------ ⑧replaceitem entity @a[tag=f_shield] slot.armor.head 0 keep air ⑨clear @a iron_helmet 600 ⑩clear @a shield 1000 ⑪execute at @a[tag=f_shield] run fill ~-5~~-5 ~5~7~5 air [] replace fire |
◻︎タグ付きプレイヤー対象
①「炎の盾」 が落ちている時、ヘッドスロットに鉄のヘルメットを設置(データ値600)。
②鉄のヘルメット(データ値600)を被っている時、オフハンドに盾を設置(データ値1000)。
------
③鉄のヘルメット(データ値600)を被っている時、頭上に「炎の盾」 を追尾。
------
④盾(データ値1000)が無くなった時、信号を出す。
⑤盾を削除。
⑥10ブロック以内で近くの敵対モブを3体燃やす。
⑦タグ「f_shield」に、LV10の火炎耐性を20秒与える。
------
⑧ヘッドスロットが空の時、信号を出す。
⑨鉄のヘルメットを削除(データ値600)。
⑩盾を削除(ティックの遅延6、データ値1000)。
⑪タグ「f_shield」の周辺の炎を消す。
ダメージを受けた時、鉄のヘルメットを脱いだ時に頭上のアイテムが戻って来ます。※①にティックの遅延を入れないとうまく動作しません。④壊れた時と投げた時の違いには未対応。 統合版の場合、動作安定のため、fillの範囲を狭くしています。
ストラクチャー式(Windows推奨)。
テレポート式の弱点を克服したストラクチャー式も紹介しています。
- ストラクチャー式はこちら→ 【武器・防具・道具】そよ風のブーツ。
ワールドデータ
完成データのダウンロード。
【統合版】 v1.20.81〜対応
ダウンロード/炎の盾v1.20.mcworld
「テレポート式」と「ストラクチャー式」のワールドデータをダウンロード出来ます。
【Java版】 v1.20.6〜対応
ダウンロード/炎の盾v1.20.zip
解凍後「saves」フォルダに入れてください。
※二次配布は禁止です。