更新日:
1. 右クリックを数えるスコアを作る
/scoreboard objectives add click minecraft.used:minecraft.carrot_on_a_stick
ニンジン付きの棒を使った(右クリックした)回数が、自動で数えられるようになります。
2. 杖を配る
/give @s minecraft:carrot_on_a_stick[custom_name="雷の杖",unbreakable={}]
名前を付けて、壊れないようにしておきます。名前の付け方は アイテムの名前に色を付けるコマンド にまとめています。
3. 右クリックで雷を落とす
反復コマンドブロック(常時実行)と、その後ろにチェーンコマンドブロック(常時実行)を置きます。
/execute as @a[scores={click=1..}] at @s anchored eyes run summon lightning_bolt ^ ^ ^10
/scoreboard players reset @a[scores={click=1..}] click
1行目が反復、2行目がチェーンです。右クリックした人の目の位置から、見ている方向に10ブロック先へ雷を落とし、そのあと回数を0に戻します。^ の意味は ~と^の違い にまとめています。
4. ほかの効果の例
1行目の run のあとを変えると、いろいろなアイテムが作れます。
/execute as @a[scores={click=1..}] at @s run tp @s ^ ^ ^5
見ている方向に5ブロック進むワープの棒です。壁に埋まらないように、広い場所で使います。
/execute as @a[scores={click=1..}] run effect give @s minecraft:levitation 1 5 true
右クリックすると少し浮き上がる棒です。
5. 杖を見分ける・待ち時間を付ける
杖を何種類か作るときは、目印を付けて、持っている杖で効果を分けます。
/give @s minecraft:carrot_on_a_stick[custom_name="雷の杖",custom_data={wand:"thunder"},use_cooldown={seconds:3}]
/execute as @a[scores={click=1..}] if items entity @s weapon.mainhand minecraft:carrot_on_a_stick[custom_data~{wand:"thunder"}] at @s anchored eyes run summon lightning_bolt ^ ^ ^10
use_cooldown を付けると、使ったあと3秒間は使えなくなります(Java版1.21.2以降)。
6. 経験値レベルを使う魔法にする
# 反復コマンドブロック
execute as @a[scores={click=1..},level=1..] at @s anchored eyes run summon lightning_bolt ^ ^ ^10
# チェーン1
xp add @a[scores={click=1..},level=1..] -1 levels
# チェーン2
scoreboard players reset @a[scores={click=1..}] click
レベルが1以上ある人だけ雷を落とし、使うたびに1レベル減らします。レベルが0の人は右クリックしても何も起きません。MPのように回数を制限したいときに使えます。チェーン1と2の順番を逆にすると、減らす前にスコアが消えてしまうので注意します。経験値の増やし方・減らし方は xpコマンドの使い方 を見てください。
うまくいかないときの確認ポイント
- 何も起きない:回数を0に戻すチェーンコマンドブロックが、反復の後ろにつながっているか確認します。
- 雷が自分に落ちる:
^ ^ ^10のように、前に離れた場所を指定します。 - ほかのアイテムでは数えられない:剣や弓のように右クリックで別の動きをするアイテムは、判定に向きません。ニンジン付きの棒か、歪んだキノコ付きの棒を使います。
よくある質問
統合版でもできますか?
統合版には使用回数のスコアがないため、この方法はJava版向けです。統合版ではアドオンのスクリプトで作ります。
1.21.4以前の書き方は?
custom_name を custom_name='"雷の杖"' のように書きます。use_cooldown は1.21.2より前では使えません。
左クリックで発動させたいです。
左クリックは攻撃になるため、コマンドだけで判定するのはむずかしいです。右クリックで作るのがかんたんです。