Minecraft【武器・防具・道具】連射の弓。(ダメージ検知)

2024-07-28

Java版1.20.6、統合版はv1.20.81で動作確認。

矢の雨を降らせる。

連射の弓。v1.20

弓で攻撃した時、ダメージを受けたモブに矢の雨を降らせます(Java版)。統合版では検知対象や方法が異なりますが、似たような動作になります。マルチプレイ対応。Java版、統合版ともに中級者向けの装置となります。キーボード、コントローラー推奨。※Java版は新コマンド、データコンポーネントに対応。統合版は「hasitem」で装備のデータ値(耐久値)を検知します。

◻︎装置の特徴
・ターゲットを絞った矢の召喚。
【Java版】
・メインハンド検知。(セレクトアイテム)
・HurtTimeを使ったダメージ検知。
【統合版】
・アイテム名をトリガーにして装置を起動。
・ホットバーにアイテムを固定。
・耐久度を使った検知。

 

更新履歴
2024-5-11/古い情報を更新しました。Java版(1.20.5〜)のデータコンポーネントに対応。
2023-5-26/統合版の矢の検知方法、ターゲットの絞り込みを、専用コマンド「family」に変更しました。
2023-4-1/統合版の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版】

「連射の弓」を持って敵を攻撃すると、ダメージを受けたモブに矢の雨を降らせます。装備はダメージを受け壊れると壊れます。※連射の弓」を手にしていない時は、コマンドは実行されません。近くのプレイヤーにもコマンドが反映されます。

 

弓の入手(名前を変更)。

アイテムIDにアイテム名や説明文、エンチャントを追加します。※コマンドは長くなるので、メモ帳やテキストエディタを使うと便利です。

【弓】
①弓を1個入手するコマンド。

/give @s bow 1

【アイテム名と説明文】
②アイテム名や説明文を追加します(NBT形式)。※item_nameにすると、金床で名前を変更出来ない装備になります。

[custom_name="連射の弓",lore=["説明文"]]

【コマンドの結合】

②③のコマンドを繋げ、①のbowの後ろにコマンドを繋げます。

/give @s bow[custom_name="連射の弓",lore=["説明文"]] 1

※エンチャントを付ける場合(射撃ダメージ増加LV1)。
.....["説明文"],enchantments={levels:{"power":1}}] 1

改行無しの1行で、チャットに入力して「連射の弓」を入手します。

 

メインハンドの検知(Java版)。

メインハンドで選択している装備を、アイテム名で検知してコマンドを実行します。

 

【Java版】

①execute at @e[type=!player,nbt={HurtTime:1s}] as @a[distance=..20,
nbt={SelectedItem:{components:{"minecraft:custom_name":"\"連射の弓\""}}}] run summon arrow ~ ~3 ~
②execute at @e[type=!player,nbt={HurtTime:1s}] as @a[distance=..20,nbt={SelectedItem:{components:
{"minecraft:custom_name":"\"連射の弓\""}}}] run particle happy_villager ~ ~ ~ 1 1 1 0 6 force

①②「連射の弓」をメインハンドに持っているプレイヤーの20ブロック以内でモブがダメージを受けた時、 頭上に矢を召喚し、パーティクルを再生。 ※アイテムIDや、説明文は省略可。金床が使える環境では注意が必要。「minecraft:」が必要です。

対象範囲は20ブロック。コマンド数は増えますが、タグを使うとコマンドは簡略化出来そうです。

 

コマンドの詳細。

ターゲットセレクターに、データコンポーネント(NBT形式)で詳細を追加。

【矢の召喚】

矢を召喚するコマンドに、実行者場所を追加。

execute at @e as @a run summon arrow ~ ~3 ~

②「連射の弓」をメインハンドに持っているプレイヤーから20ブロック以内で、 ダメージを受けたエンティティの頭上に矢を召喚。(プレイヤーを除く)

コマンド実行者「@a」、場所「@e」。

@e[type=!player,nbt={HurtTime:1s}] @a[distance=..20,nbt={SelectedItem:{components:{"minecraft:custom_name":"\"連射の弓\""}}}]

【パーティクル】

パーティクルを再生するコマンドに、実行者場所を追加。

execute at @e as @a run particle happy_villager ~ ~ ~ 1 1 1 0 6 force

コマンド実行者「@a」、場所「@e」。

@e[type=!player,nbt={HurtTime:1s}] @a[distance=..20,nbt={SelectedItem:{components:{"minecraft:custom_name":"\"連射の弓\""}}}]

 

連射の弓【統合版】

統合版ではモブのダメージを検知出来ないので、装備の耐久度を使ったループ装置を作ります。タグ付きプレイヤーがいる時、矢を基準とした範囲内で、矢を連続召喚。約1.5秒でリセットします。ループ装置を停止するために、オウムガイを使います。

「replaceitem」を使ってオフハンドに設置出来るアイテムが増えましたが、データ値が区別出来ないアイテムもあります。簡単なタグの切り替え装置と、テレポート式の装置を紹介。「連射の弓」の使用中は、矢を使う他のエンティティ(スケルトンなど)も矢を連射します。

 

アイテム名の変更。

金床を使ってチェストとオウムガイの名前を変更します。

オウムガイ→「連射の弓」を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 r_bow
③tag @p add r_bow

①座標「A」と「B」のチェストの中身が同じ時、信号を出す。
②全てのプレイヤーからタグ「r_bow」を削除。
③近くのプレイヤーにタグ「r_bow」を追加。

 

A」と「B」のチェストの中身が同じ時、プレイヤーのタグが消えレッドストーンランプが点灯。※チェストの向き、装備の位置や耐久度も合わせる必要があります。◻︎タグの確認。 /tag @a list

 

テレポート式。

「連射の弓」を投げた時、「連射の弓」を頭上に追尾して、ループ装置を起動します。スマホやゲーム機でも作れますが、頭上のアイテムは5分で消滅します。

①はティックの遅延10。⑤は条件付き。⑥はティックの遅延10。⑨は動力が必要、ティックの遅延10。⑩はティックの遅延32。⑬はティックの遅延6。

【統合版】

①execute if entity @e[name=連射の弓] run replaceitem entity @a[tag=r_bow] slot.weapon.offhand 0 keep nautilus_shell 1 500
②execute at @a[hasitem={item=nautilus_shell,location=slot.weapon.offhand,data=500}] run replaceitem entity @a[tag=r_bow] slot.hotbar 0 bow 1 800
------
③execute at @a[hasitem={item=nautilus_shell,location=slot.weapon.offhand,data=500}] run tp @e[name=連射の弓] ~~3~
------
④clear @a[tag=r_bow] bow 800 0
⑤kill @e[name=]
------
⑥execute at @e[type=!villager,type=!armor_stand,family=mob] as @e[type=arrow,c=1,r=10] run particle minecraft:villager_happy ~~1~
------
⑦execute at @a[tag=r_bow] run execute if entity @e[type=arrow]
⑧give @a[tag=r_bow] arrow 1
⑨execute at @e[type=!villager,type=!armor_stand,family=mob] as @e[type=arrow,c=1,r=10] run summon arrow ~~3~
⑩kill @e[type=arrow]
------
⑪replaceitem entity @a[tag=r_bow] slot.weapon.offhand 0 keep air
⑫clear @a nautilus_shell 500
⑬clear @a bow 800

◻︎タグ付きプレイヤー対象
①「連射の弓」 が落ちている時、オフハンドにオウムガイを設置(データ値500)。
②オウムガイ(データ値500)を持っている時、一番左のホットバーに弓を設置(データ値800)。
------
③オウムガイ(データ値500)を持っている時、頭上に「連射の弓」 を追尾。
------
④弓(データ値800)が無くなった時、信号を出す。
を削除。
------
⑥矢の10ブロック以内に敵対モブがいる時、パーティクルを再生(ティックの遅延10)。
------
⑦タグ付きプレイヤーがいる時、矢を検知。
⑧矢を1本与える。
⑨矢の10ブロック以内に敵対モブがいる時、頭上に矢を召喚(ティックの遅延10)。
⑩矢を削除(ティックの遅延32)。
------
⑪オフハンドが空の時、信号を出す。
⑫オウムガイを削除(データ値500)。
⑬弓を削除(ティックの遅延6、データ値800)。

ダメージを受けた時、オウムガイを外した時に頭上のアイテムが戻って来ます。※①にティックの遅延を入れないとうまく動作しません。④壊れた時と投げた時の違いには未対応。⑥⑨で連射効果の範囲や速度を調整。⑩で連射効果の長さを調整。

 

ストラクチャー式(Windows推奨)。

テレポート式の弱点を克服したストラクチャー式も紹介しています。

 

 

ワールドデータ

完成データのダウンロード。

【統合版】 v1.20.81〜対応

ダウンロード/連射の弓v1.20.mcworld

「テレポート式」と「ストラクチャー式」のワールドデータをダウンロード出来ます。

【Java版】 v1.20.6〜対応

ダウンロード/連射の弓v1.20.zip

解凍後「saves」フォルダに入れてください。

※二次配布は禁止です。