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

2024-10-28

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.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」フォルダに入れてください。

※二次配布は禁止です。