Minecraft【武器・防具・道具】ライフロッド。(ウキ検知)
Java版1.21.4-、統合版v1.21.51-で動作確認。
体力を奪ったり与えたり、生命を操る杖。
ライフロッド。
RPG!マイクラクエストの特別装備、ライフロッドの簡易版となります。体力を減らす衰弱と、増やす回復を一本の杖(竿)で使い分ける事が出来ます。Java版はメインとオフハンドの持ち替え、統合版はスニークとポーション式で切り替えします。ポーション式は、メインハンドのアイテムが同じでも、違うコマンドが実行出来る装置になります。今回はタグ、ストラクチャーブロック、スコアボードを使わず、バニラアイテムだけで作成します。
◻︎装置の特徴
・アイテム検知で、効果の切り替え。
・ウキ検知で、エフェクト効果を発動。
【統合版】
・ポーション式を使った、切り替え装置。
目次
1.コマンドブロックの使い方。
2.切り替え装置(ポーション式)
・装置のしくみ。(統合版)
3.【Java版】ライフロッド
・衰弱と回復。
・ウキ検知。
4.【統合版】ライフロッド
・起動と終了。
・切り替え装置。
※「as」や「minecraft:」などのコマンドは簡略化しています。一部のコマンド、マルチプレイやサーバーでは必要な場合があります。
コマンドブロックの使い方。
装置はシングルプレイ用です。マルチプレイで遊ぶには、ターゲットセレクタにタグや引数を追加してください。詳しいコマンドブロックの使い方は、関連記事を確認ください。
- 詳しくはこちら→ 【テクニック】コマンドブロックの使い方。1-2
切り替え装置(ポーション式)
統合版では、アイテムを区別するため、データ値(耐久度)を使いますが、これが結構不安定。バージョンアップで仕様が変わってしまいます。そこで変更の少ない、ポーションのデータ値を使います。※Java版では、Fキーでアイテムの持ち替えが可能。解説も不要ですね。
ポーション式を使ったライフロッド。
装置のしくみ。
統合版のポーションは、固定のデータ値で管理されています。これをオフハンドに設置。ポーションを変更すれば、メインハンドが同じアイテムでも、コマンドを切り替えて使えます。色でコマンドの違いも区別出来ます。ポーションの使用が制限されますが、アイテム毎にデータ値を変えるより、安定して使う事が出来ます。
※ポーションは長い間、固定のデータ値なので簡単には変わらないはず..。
【Java版】 ライフロッド
Java版は、2ブロックで作れます。オフハンド機能は便利ですね。今回は衰弱モードでプレイヤーを除外していますが、ライフロッドだけを使った、PVPバトルも面白いかも知れません。
衰弱と回復。
アイテム検知で2種類のエフェクトを使い分けています。アンデット系のモブには、回復モードが攻撃になります。※ターゲット、範囲、効果は調整してください。
【Java版】
①execute as @p[nbt={SelectedItem:{id:"minecraft:fishing_rod"}}] at @e[type=fishing_bobber] run effect give @e[distance=..2,type=!player] wither 1 6 ------ ②execute as @p[nbt={Inventory:[{id:"minecraft:fishing_rod",Slot:-106b}]}] at @e[type=fishing_bobber] run effect give @e[distance=..2] regeneration 1 6 |
【衰弱モード】①
メインハンドの時は、ウキ周辺に「wither」の衰弱エフェクトを実行。※プレイヤーを除く。
------
【回復モード】②
オフハンドの時は、ウキ周辺に「regeneration」の再生エフェクトを実行。
ウキ検知。
Java版では「OnGround」を使って、ウキが空中か地面(※)にあるかを検知出来ます。デフォルトは「true」でコマンド不要。地面(※)にある時に信号が出ます。「false」を使うと、空中にある時だけ検知する事が出来ます。(※)壁やエンティティを含む。
◻︎コマンド 例
@e[type=fishing_bobber,nbt={OnGround:false}] |
【統合版】 ライフロッド
統合版もエフェクトだけなら2ブロックで作れます。2つ武器を作れば終了ですが、それでは面白くないので、スニークとポーションを使った切り替え装置を作ります。Java版のオフハンド切り替えに負けない、使い勝手の良い装置になりました。※コマンド数はちょっぴり多め。
起動と終了。
使用頻度の低い「ニンジン付きの棒」をトリガースイッチにして、装置を起動。プレイヤーに必要なアイテムを装備。ポーションをオフハンドから外すと、装置を終了します。
②③⑦⑧は条件付き。
【統合版】
①execute if entity @e[name=ニンジン付きの棒] ②replaceitem entity @p slot.weapon.offhand 0 keep postion 1 36 ③replaceitem entity @p slot.weapon.mainhand 0 keep fishing_rod ④kill @e[name=ニンジン付きの棒] ------ ⑤execute unless entity @p[hasitem={item=postion,location=slot.weapon.offhand}] ------ ⑥clear @p potion ⑦clear @p fishing_rod ⑧give @p carrot_on_a_stick |
【起動】①②③④
「ニンジン付きの棒」を捨てた時、オフハンドにポーション、メインハンドに釣竿を設置。
------
【オフハンド検知】⑤
ポーションを持っていない時、信号を出す。※データ値の指定が無くても、検知可。
------
【終了】⑥⑦⑧
ポーション、釣竿を削除して、「ニンジン付きの棒」を戻す。
切り替え装置。
スニーク検知が敏感すぎると、アイテム変更がやりにくいので、ティックの遅延やコンパレーターを使って信号を遅らせています。※数値は変更して、好みの長さに調整してください。
②⑥は動力が必要。③⑦は条件付き。①⑤はティックの遅延:10。(最初のティックで実行:オフ)
【統合版】
①execute if entity @p[hasitem={item=potion,location=slot.weapon.offhand,data=28}] ②execute as @p at @s if entity @s[y=~1.4,dx=0] unless entity @s[y=~1.5,dx=0] run clear @p potion ③replaceitem entity @p slot.weapon.offhand 0 keep potion 1 36 ------ ④execute as @p[hasitem={item=potion,location=slot.weapon.offhand,data=36}] at @e[type=fishing_hook] run effect @e[type=!player,r=2] wither 1 6 ------ ⑤execute if entity @p[hasitem={item=potion,location=slot.weapon.offhand,data=36}] ⑥execute as @p at @s if entity @s[y=~1.4,dx=0] unless entity @s[y=~1.5,dx=0] run clear @p potion ⑦replaceitem entity @p slot.weapon.offhand 0 keep potion 1 28 ------ ⑧execute as @p[hasitem={item=potion,location=slot.weapon.offhand,data=28}] at @e[type=fishing_hook] run effect @e[r=2] regeneration 1 6 |
◻︎オフハンド対象
【切り替え】①②③
「データ値=28」を持っている時にスニークすると、「データ値=36」のポーションに置き換え。
------
【衰弱モード】④
「データ値=36」のポーションを持っている時、ウキ周辺に「wither」の衰弱エフェクトを実行。
------
【切り替え】⑤⑥⑦
「データ値=36」を持っている時にスニークすると、「データ値=28」のポーションに置き換え。
------
【回復モード】⑧
「データ値=28」のポーションを持っている時、ウキ周辺に「regeneration」の再生エフェクトを実行。