Minecraft【Java版/統合版】
魔女の剣。(メインハンド検知)
攻撃すると魔女がささやく。
Java版1.19.2、統合版はv1.19.22で動作確認。
【Java版】では、アイテム名とメインハンド検知してエフェクトコマンドを実行。
【統合版】では、clearやreplaceitemを駆使して、装備スロット検知。
さらにメインハンドを検知して、エフェクトコマンドを実行。
コマンドブロックは多くなりますが、Java版と同じような動作が出来ました。
※hasitemが使えるともう少し楽になりそうですが、通常版ではまだ使えないようです。
完成動画
魔女の剣【Java版】
魔女の剣を持って敵を攻撃すると、魔女の声が聞こえる。(パーティクルあり)
アイテム名の変更。
Java版では名前を変更したアイテムを、コマンドから直接出せるので便利です。
※メモ帳やテキストエディタでコマンドを作ります。
①名前を付けた鉄の剣を入手するコマンドを作成。
通常の/giveコマンドに、アイテム名や説明文を足します。
※アイテムIDを変更すれば、鉄の剣以外でも作れます。
/give @s minecraft:iron_sword 1 |
②赤字の部分を好きな名前に変更して、①の_swordの後ろに繋げます。
{display:{Name:"\"魔女の剣\"",Lore:["\"説明文\""]}} |
③繋げたコマンドを、チャットやコマンドブロックに入力。
/give @s minecraft:iron_sword{display:{Name:"\"魔女の剣\"",Lore:["\"説明文\""]}} 1 |
※エンチャントを付ける場合。(耐久度Lv1)
.....["\"説明文\""]},Enchantments:[{id:unbreaking,lvl:1}]} 1
Java版のコマンド作成。
3つのコマンドを作り、NBTフォーマットを追加します。
【メインハンド検知】【音を鳴らす】【パーティクル効果】
【メインハンド検知】
魔女の剣を装備しているプレイヤーを検知。@aの後ろにNBTフォーマット①を追加。
execute if entity @a |
【音を鳴らす】
ウイッチの声を鳴らす場所、誰が誰に聞かせるかを指定。
@aの後ろに、NBTフォーマット①(2箇所)、@eの後ろに、NBTフォーマット②を追加。
execute at @a at @e run playsound entity.witch.ambient player @a ~ ~ ~ |
NBTフォーマット①
メインハンドに魔女の剣を持っているかどうか。
※見やすくするために改行しています。
[nbt={SelectedItem:{tag: {display:{Name:"\"魔女の剣\"",Lore:["\"説明文\""]}} }]}] |
NBTフォーマット②
コマンドの実行場所から10ブロック以内で、ダメージを受けたmob。(プレーヤーと防具立てを除く)
[distance=..10,type=!player,type=!armor_stand,nbt={HurtTime:1s}] |
【パーティクル効果】
さらに音を鳴らした時、witchのパーティクルを出します。
@eの後ろに、NBTフォーマット③を追加します。
execute as @e at @s run particle minecraft:witch ~ ~ ~ 1 1 1 0 12 force |
NBTフォーマット③
ダメージを受けたmobで、近くの1体を選ぶ。(プレーヤーと防具立てを除く)
[type=!player,type=!armor_stand,nbt={HurtTime:1s},limit=1,sort=nearest] |
全部繋げても良いですが、コマンド長すぎて分かりにくくなるので、分けて作ります。
コンパレータがあると、コマンドブロックの動作が見て分かるようになります。(無しでもOK)
【メインハンド検知】
①リピート/無条件/常時実行
execute if entity @a[nbt={SelectedItem:{tag:{display:{Name:"\"魔女の剣\"",Lore:["\"説明文\""]}}}}] |
【音を鳴らす】
②リピート/無条件/動力が必要
execute at @a[nbt={SelectedItem:{tag:{display:{Name:"\"魔女の剣\"",Lore:["\"説明文\""]}}}}] at @e[distance=..10,type=!player,type=!armor_stand,nbt={HurtTime:1s}] run playsound entity.witch.ambient player @a[nbt={SelectedItem:{tag:{display:{Name:"\"魔女の剣\"",Lore:["\"説明文\""]}}}}] ~ ~ ~ |
【パーティクル効果】
③チェーン/条件付き/常時実行
execute as @e[type=!player,type=!armor_stand,nbt={HurtTime:1s},limit=1,sort=nearest] at @s run particle minecraft:witch ~ ~ ~ 1 1 1 0 12 force |
魔女の剣を手にしていない時は、コマンドは実行されません。
※マルチプレイにも対応していますが、近くのプレイヤーにもコマンドが反映されます。
完全に個別にしたい場合は、タグなどを追加してプレイヤー指定する必要があります。
魔女の剣【統合版】
統合版の場合、メインハンド検知だけでは動作が不安定なので、装備検知と組み合わせて使います。
【魔女の剣】チャート
①魔女の剣(革の帽子)を装備すると鉄の剣を召喚。
②召喚した鉄の剣で敵を攻撃すると、魔女の声が聞こえる。(パーティクルあり)
③魔女の剣(革の帽子)を脱ぐと剣が消える。
装置の仕様上、通常のチェストには入れられないので、「剣ケース」を作ります。(タグ消し)
アイテム名の変更。
統合版ではアイテム名での検知や、名前を付けたアイテムをコマンドで出せないので手順が増えます。
①革の帽子をコマンドで入手。(データ値180)
/give @s leather_helmet 1 180 |
②金床を使ってチェストと革の帽子の名前を変更しておきます。(2個)
チェスト→剣ケース 革の帽子(データ値180)→魔女の剣 |
※革の帽子に付けるエンチャントは、消滅の呪い以外はダミーになります。
説明文など付けてもOKです。
統合版のコマンド作成。
画像を参考に、ブロックを配置。
◎配置したコマンドブロックの状態/すべて無条件
コマンドブロックの色 | ブロックの種類 | レッドストーン |
黄色 | 衝撃 | レッドストーンが必要 |
青色 | チェーン | 常にアクティブ |
紫色 | 反復 | 常にアクティブ |
矢印はチェストの向き。「A」と「B」には剣ケースを設置して魔女の剣(革の帽子)を入れておきます。
❶剣ケース付、タグ装置。
魔女の剣(革の帽子)専用ケース。タグを付けたり消したりする装置。
①testforblocks ~~~ ~~~ ~~~ ②tag @a remove w_sword ③clear @a leather_helmet 180 ④tag @p add w_sword |
①「~~~」には「A」の座標(2回)。 後ろの「~~~」には「B」の座標を入れます。
「A」と「B」の剣ケースがの中身が同じ時、信号を出します。
②全てのプレイヤーから、タグ「w_sword」を削除。(レッドストーンのたいまつを付ける)
③データ値180の革の帽子を、全てのプレイヤーから削除。
④近くのプレイヤーに、タグ「w_sword」を追加します。
【装備検知装置】
魔女の剣(革の帽子)を検知する装置。
仕組みは「そよ風のブーツ」と同じなので、変更箇所以外の解説は割愛します。
❷装備スロットの検知と帽子の置き換え装置
①replaceitem entity @a[tag=w_sword] slot.armor.head 0 keep air ②clear @a[tag=w_sword] leather_helmet 180 1 ③replaceitem entity @a[tag=w_sword] slot.armor.head 0 keep leather_helmet 1 200 ④give @a[tag=w_sword] leather_helmet 1 180 ⑤setblock ~~~ air ⑥setblock ~~~ redstone_block |
⑤⑥は、❹鉄の剣召喚装置「あ」レッドストーンブロックの座標。
❸帽子の置き換え装置2
①clear @a[tag=w_sword] leather_helmet 200 0 ②clear @a[tag=w_sword] leather_helmet 200 1 ③replaceitem entity @a[tag=w_sword] slot.armor.head 0 keep leather_helmet 1 180 ④clear @a[tag=w_sword] leather_helmet 180 1 |
2段目、通常のピストンを向かい合わせにして、レッドストーンブロックを設置。
❹鉄の剣召喚装置
タグ付きプレイヤー対象
①give @a[tag=w_sword] iron_sword 1 600 ②clear @a[tag=w_sword] iron_sword 600 1 |
①鉄の剣をプレイヤーに1個与える。(データ値600)
②プレイヤーから鉄の剣を1個削除。(データ値600)
3段目にコマンドブロックを設置。
❺帽子の差し替え(名前付き帽子に戻す)
①execute @a[tag=w_sword] ~~~ clone ~~~ ~~~ ~~1~ ②execute @a[tag=w_sword] ~~~ setblock ~~1~ air 0 destroy ③kill @e[name=剣ケース] ④clear @a[tag=w_sword] leather_helmet 180 1 |
①「~~~」には「A」の座標(2回)。プレイヤーの頭上にチェストをクローンさせます。
3段目にコマンドブロックを設置。①はレッドストーンが必要に変更。
❻魔女の剣 効果
タグ付きプレイヤー対象
①clear @a[tag=w_sword] iron_sword 600 0 ②replaceitem entity @a[tag=w_sword] slot.weapon.mainhand 0 keep iron_sword 1 600 ③execute @a[tag=w_sword] ~~~ playsound mob.witch.ambient @a[tag=w_sword] ~~~ ④execute @e[type=!player,type=!item,c=1] ~~~ particle minecraft:dragon_breath_fire ~~~ |
①プレイヤーが鉄の剣を持っているか確認。(データ値600)
②鉄の剣が壊れた時、メインハンドに鉄の剣を設置。(データ値600)
③鉄の剣が壊れた時、ウイッチの声を再生。
④プレイヤーとアイテム以外の近くのエンティティにパーティクルを表示。(ドラゴンブレス)
注意点
敵から攻撃を受けると一撃で装備が壊れますが、「w_sword」のタグが付いている間は、すぐに装備がクローンされます。なので敵に装備を解除される感じになります。
マルチプレイでも動作しますが、タグ「w_sword」が重複しているとうまく動作しません。
同時に使いたい場合は、タグ名を変えて人数分の装置を作る必要があります。
魔女の剣(革の帽子)を無くしても、タグ「w_sword」が付いている間は、別の帽子を被ると魔女の剣(革の帽子)が手に入ります。
無限帽子を止めるには、魔女の剣(革の帽子)を剣ケースに入れ、タグを消す必要があります。
おすすめ記事もどうぞ!