Minecraft【武器・防具・道具】連射の弓。(ダメージ検知)
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(旧式)
連射の弓(れんしゃのゆみ)を統合版の新コマンドに対応! 複雑な装備検知から、簡単装置に変更(完成データ付き)。Java版のコマンドも変更しました。多彩な検知方法、ターゲット絞った矢の召喚など。#マイクラhttps://t.co/09cm1mTSGa pic.twitter.com/QXBb43ORhU
— tokoton0ch (@tokoton0ch) April 1, 2023
旧式/ 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」フォルダに入れてください。
※二次配布は禁止です。