Minecraft【Java版/統合版】
連射の弓。(ダメージ・アイテム名検知)

2022-10-01

矢の雨を降らせる。

Java版1.19.2、統合版はv1.19.30で動作確認。

【Java版】では、メインハンドとアイテム名検知はもちろん、ダメージ検知で矢の当たったモブに矢を降らせます。装置は魔女の剣と同じ構造です。マルチプレイも対応(※1)
【統合版】では、ダメージ検知が無いので、射った矢を検知して矢を降らせています。Java版とは若干違う仕様になりましたが、矢をどこに射ってもなんとなく当たる、雨っぽい感じになっていると思います。矢の区別が出来ないので、敵が射る矢にも同じ効果が付きます。
タグ付けは、アイテム専用ケースではなく、制限時間を付けたミニショップ。
※通常版では、hasitemがまだ使えないようです。

※1 連射の弓を装備しているプレイヤー周辺の、他のプレイヤーも同じ効果が発動します。(15ブロック内)

 

完成動画

更新履歴
2022-10-1/
統合版→❸矢の召喚装置 「①はレッドストーンが必要に変更」を追加。

 

 

目次

1.連射の弓【Java版】
・アイテム名の変更。
・Java版のコマンド作成。

2.連射の弓【統合版】
・アイテム名の変更。
・統合版のコマンド作成。

 

 

連射の弓【Java版】

矢が当たったモブの頭上に、連続で矢を降らせパーティクルを表示します。矢が外れると連続の矢は中断されます。

 

アイテム名の変更。

Java版では名前を変更したアイテムを、コマンドから直接出せるので便利です。
※メモ帳やテキストエディタでコマンドを作っておくと便利。

①名前を付けた弓を入手するコマンドを作成。
コマンドの作り方は魔女の剣と同じなので割愛します。
LV1の射撃ダメージ増加を付け、チャットコマンドで入手します。

/give @p minecraft:bow
{display:{Name:"\"連射の弓\"",Lore:["\"説明文\""]},
Enchantments:[{id:power,lvl:1}]} 1

 

Java版のコマンド作成。

画像を参考に、ブロックを配置。
◎配置したコマンドブロックの状態/すべて無条件

コマンドブロックの色 ブロックの種類 レッドストーン
黄色 インパルス 動力が必要
青色 チェーン 常時実行
紫色 リピート 常時実行

 

②は、動力が必要に変更。

 

❶連射の弓装置

連射の弓を、メインハンドに装備しているプレイヤー対象。

①execute if entity @a[nbt={SelectedItem:{tag:{display:{Name:"\"連射の弓\"",Lore:["\"説明文\""]}}}}]
②execute at @a[nbt={SelectedItem:{tag:{display:{Name:"\"連射の弓\"",Lore:["\"説明文\""]}}}}] at @e[distance=..15,type=!player,nbt={HurtTime:1s}] run particle minecraft:happy_villager ~ ~ ~ 1 1 1 0 6 force
③execute at @a[nbt={SelectedItem:{tag:{display:{Name:"\"連射の弓\"",Lore:["\"説明文\""]}}}}] at @e[distance=..15,type=!player,nbt={HurtTime:1s}] run summon arrow ~ ~3 ~

連射の弓を、メインハンドに装備しているプレイヤーを検知。
②プレイヤーの周辺15ブロック内で、ダメージを受けたモブにパーティクルを表示。(プレイヤーを除く)③プレイヤーの周辺15ブロック内で、ダメージを受けたモブの頭上に矢を召喚。(プレイヤーを除く)

※マルチプレイにも対応していますが、近くのプレイヤーにもコマンドが反映されます。
完全に個別にしたい場合は、タグなどを追加してプレイヤーを指定する必要があります。

 

連射の弓【統合版】

矢を射ると、プレイヤー周辺のモブに3体に矢を降らせます。
※射った矢が周辺に残っていると連続の矢は降らない。
地面に残っている矢は、矢を射った1.5秒後に、コマンドで消しています。

 

アイテム名の変更。

統合版ではアイテム名での検知や、名前を付けたアイテムをコマンドで出せません。(落ちてるアイテム除く)

金床を使ってチェストと弓の名前を変更しておきます。

チェスト→弓ケース
弓→連射の弓

 

統合版のコマンド作成。

画像を参考に、ブロックを配置。
◎配置したコマンドブロックの状態/すべて無条件

コマンドブロックの色 ブロックの種類 レッドストーン
黄色 衝撃 レッドストーンが必要
青色 チェーン 常にアクティブ
紫色 反復 常にアクティブ

 

◻︎連射の弓装置の仕組み
装置は大きく分けて【ショップ装置】【アイテム検知装置】の2種類で設計してあります。
分かりにくい【連射の弓】をチャートにしました。
矢を降らせるコマンドは3個ですが、実用性のある装置にすると、一気に数が増えます。
難易度の高い装置になりましたが、基本は浮游の靴と同じです。
使っているコマンドは簡単なので、ぜひ挑戦してみてください。

【ショップ装置】
連射の弓の購入と、タグを付けたり消したりする装置。

【アイテム検知装置】
落ちている「連射の弓」を検知。弓を召喚したり、矢の雨を降らせます。


【連射の弓】チャート

①タグが付いている時「連射の弓」を投げると、オフハンドにオウムガイの殻を設置。
②オウムガイの殻をオフハンドに持っている時、弓を入手。
③メインハンドに弓がある時、無限のエンチャントを付ける。
④矢を射った時、周辺のエンティティに3体に矢を降らせる。
⑤弓が壊れた時、地面に残っている矢を消し弓を入手。
⑥オウムガイの殻をオフハンドから外すと、弓とオウムガイの殻を消し「連射の弓」を入手。
⑦タグが消えている時「連射の弓」を投げると消える。

※「連射の弓」以外は、データ値を変更したアイテムを検知しています。

 

「あ」にブロックを置いて、ボタンや商品を入れた額縁を設置。
「A」には弓ケースを設置して「連射の弓」と矢を1本入れておきます。
⑤はティックの遅延を16に変更。
❷アイテム検知とタグ消し装置の③は地面下。

 

❶ショップ装置、タグ装置
アイテム購入とタグを付ける装置。

①tag @p add r_bow
②execute @a[tag=r_bow] ~~~ clone ~~~ ~~~ ~~1~
③execute @a[tag=r_bow] ~~~ setblock ~~1~ air 0 destroy
④kill @e[name="弓ケース"]
⑤clone ~~~ ~~~ ~~~

①近くのプレイヤーに「r_bow」のタグを付けます。
②「~~~」には「A」の座標(2回)。プレイヤーの頭上にチェストをクローンします。
③頭上のチェストを壊し、中身を取り出します。
④クローンしたチェストを削除。
⑤「~~~」には、❷アイテム検知とタグ消し装置の③の座標(2回)。
後ろの「~~~」には「い」の座標。(ティックの遅延16)

 

ミニAND回路、No1。③は地面下。
④ティックの遅延を6000に変更。(1秒20tickで計算。約5分)
※ティックの遅延は最長で5分です。
さらに長く使いたい場合は、タイマーを組むか別の方法でタグを消してください。

 

❷アイテム検知とタグ消し装置
アイテム名やデータ値検知、タグ付きプレイヤーを検知。

①testfor @e[type=item,name=連射の弓]
②testfor @a[tag=r_bow]
③replaceitem entity @a[tag=r_bow] slot.weapon.offhand 0 keep nautilus_shell 1 500
④tag @a remove r_bow
⑤setblock ~~~ air
⑥clear @a nautilus_shell 500 1
⑦clear @a bow 800

連射の弓が落ちていたら、信号を送ります。
②タグ付きプレイヤー「r_bow」がいたら、信号を送ります。
③タグ付きプレイヤーのオフハンドにオウムガイの殻を設置。(データ値500)
④全てのプレイヤーから、タグ「r_bow」を削除。(ティックの遅延6000)
⑤地面下「」の座標。クローンされたコマンドブロックを削除。
⑥全てのプレイヤーからオウムガイの殻を削除。(データ値500)
⑦全てのプレイヤーから弓を削除。(データ値800)

 

①はレッドストーンが必要に変更。③はティックの遅延を32に変更。

 

❸矢の召喚装置
射った矢を検知して、頭上に矢を召喚。さらに地面に残っている矢を削除。

①testfor @e[type=arrow]
②execute @e[type=!xp_orb,type=!item,type=!player,r=20,c=3] ~~~ summon arrow ~~3~
③kill @e[type=arrow]

①矢を射った時、信号を送ります。
②20ブロック以内にいるエンティティ3体の頭上に、矢を召喚。(プレイヤーとアイテム除く)
③地面に残っている矢を削除。 (ティックの遅延32)

 

ミニAND回路、No2。

 

❹連射の弓の削除装置
タグが消え、制限時間が終わった「連射の弓」を削除する装置。

①kill @e[type=item,name=連射の弓]

①地面に落ちている連射の弓を削除。

 

「う」に設置したレッドストーンのたいまつが電源。
コマンドブロックは、高さ2ブロック目に配置。①②はレッドストーンが必要に変更。

 

❺連射の弓の追尾と差し替え
「連射の弓」を頭上に追尾させ、無限の弓に差し替えます。(タグ付きプレイヤー対象)

①clear @a[tag=r_bow] nautilus_shell 500 0
②execute @e[tag=r_bow] ~~~ tp @e[type=item,name=連射の弓] ~~3~
③give @a[tag=r_bow] bow 1 800
④enchant @a[tag=r_bow] Infinity

①オウムガイの殻を持っているか検知。(データ値500)
②信号がある時、プレイヤーの頭上に連射の弓を追尾。
③プレイヤーに弓を与えます。(データ値500)
④メインハンドに弓がある時、無限のエンチャントを付ける。(ホットバーの左優先)

※弓に無限エンチャントが付かないと矢が足りなくなります。
弓とメインハンド(枠)を一番左に持っていき、弓を捨てると、エンチャントが付きます。
失敗してもタグが付いている間は、繰り返し挑戦出来ます。

 

②はティックの遅延を8に変更、レッドストーンのたいまつを設置。
③はティックの遅延を16に変更。

 

❻連射の弓の追尾を解除
頭上に追尾させている「連射の弓」を解除し、召喚したアイテムを削除。

①replaceitem entity @a[tag=r_bow] slot.weapon.offhand 0 keep air
②clear @a nautilus_shell 500
③clear @a bow 800

①タグ付きプレイヤーのオフハンドが空の時、信号を送ります。
②全てのプレイヤーからオウムガイの殻を削除。(データ値500)
③全てのプレイヤーから弓を削除。(データ値800)

 

オフハンドにオウムガイの殻を持っている時に動く装置。(データ値500)
①はレッドストーンが必要に変更。
②はティックの遅延を32に変更。

 

❼無限の弓の召喚と矢の削除
弓が壊れた時、地面に残っている矢を削除し、新しく無限の弓を召喚します。

①clear @a[tag=r_bow] bow 800 0
②kill @e[type=arrow]
③give @a[tag=r_bow] bow 1 800
④enchant @a[tag=r_bow] Infinity

①タグ付きプレイヤーが弓を持っていない時、信号を送ります。(データ値800)
②地面に残っている矢を削除。 (ティックの遅延32)
③プレイヤーに弓を与えます。(データ値500)
④メインハンドに弓がある時、無限のエンチャントを付ける。(ホットバーの左優先)

※射った矢が消えるまで約1.5秒かかります。
射るのが早すぎると、矢は召喚されません。

 

注意点
マルチプレイでも動作しますが、タグ「r_bow」が重複しているとうまく動作しません。 アイテムの制限時間が切れるまでは、タグが重複するため交代で使えません。 同時に使いたい場合は、タグ名を変えて人数分の装置を作る必要があります。

 

 

おすすめ記事もどうぞ!