Minecraft【武器・防具・道具】ライフロッド。(ウキ検知)

Java版1.21.4-、統合版v1.21.51-で動作確認。

体力を奪ったり与えたり、生命を操る杖。

ライフロッド。

RPG!マイクラクエストの特別装備、ライフロッドの簡易版となります。体力を減らす衰弱と、増やす回復を一本の杖(竿)で使い分ける事が出来ます。Java版はメインとオフハンドの持ち替え、統合版はスニークとポーション式で切り替えします。ポーション式は、メインハンドのアイテムが同じでも、違うコマンドが実行出来る装置になります。今回はタグ、ストラクチャーブロック、スコアボードを使わず、バニラアイテムだけで作成します。

 

◻︎装置の特徴
・アイテム検知で、効果の切り替え。
・ウキ検知で、エフェクト効果を発動。
【統合版】
・ポーション式を使った、切り替え装置。

 

 

 

目次

1.コマンドブロックの使い方。
2.切り替え装置(ポーション式)
・装置のしくみ。(統合版)

3.【Java版】ライフロッド
・衰弱と回復。
・ウキ検知。

4.【統合版】ライフロッド
・起動と終了。
・切り替え装置。

 

※「as」や「minecraft:」などのコマンドは簡略化しています。一部のコマンド、マルチプレイやサーバーでは必要な場合があります。

 

コマンドブロックの使い方。

装置はシングルプレイ用です。マルチプレイで遊ぶには、ターゲットセレクタにタグや引数を追加してください。詳しいコマンドブロックの使い方は、関連記事を確認ください。

 

 

切り替え装置(ポーション式) 

統合版では、アイテムを区別するため、データ値(耐久度)を使いますが、これが結構不安定。バージョンアップで仕様が変わってしまいます。そこで変更の少ない、ポーションのデータ値を使います。※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」の再生エフェクトを実行。