Minecraft【Java版/統合版】
魔女の剣。(メインハンド検知)

2022-09-29

攻撃すると魔女がささやく。

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

【Java版】では、アイテム名とメインハンド検知してエフェクトコマンドを実行。
【統合版】では、clearやreplaceitemを駆使して、装備スロット検知。
さらにメインハンドを検知して、エフェクトコマンドを実行。
コマンドブロックは多くなりますが、Java版と同じような動作が出来ました。
※hasitemが使えるともう少し楽になりそうですが、通常版ではまだ使えないようです。

 

完成動画

 

 

目次

1.魔女の剣【Java版】
・アイテム名の変更。
・Java版のコマンド作成。

2.魔女の剣【統合版】
・アイテム名の変更。
・統合版のコマンド作成。

 

魔女の剣【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」が付いている間は、別の帽子を被ると魔女の剣(革の帽子)が手に入ります。
無限帽子を止めるには、魔女の剣(革の帽子)を剣ケースに入れ、タグを消す必要があります。

 

 

おすすめ記事もどうぞ!