更新日:
仕組みの全体像
- 種類が
triggerのスコアを作る - プレイヤーに使ってよい印(enable)を付ける
- プレイヤーが
/trigger 名前を実行するとスコアが増える - コマンドブロックがスコアの変化を見て、実際の処理(テレポートなど)を行い、スコアを0に戻す
プレイヤーができるのは「自分のスコアを変える」ことだけなので、安全に権限を渡せます。
「ロビーに戻る」コマンドを作る
準備(OPが1回だけ実行):
/scoreboard objectives add lobby trigger
リピートコマンドブロック(常に動作)とチェーンコマンドブロックに入れる:
scoreboard players enable @a lobby
execute as @a[scores={lobby=1..}] run tp @s 0 64 0
scoreboard players set @a[scores={lobby=1..}] lobby 0
これで、だれでも /trigger lobby と入力すると、座標0, 64, 0に移動します。1行目は毎ティック全員に「使ってよい」印を付け直す役目です。
enable が必要な理由
/trigger は、一度使うと自動で使えない状態に戻ります。scoreboard players enable で印を付け直さないと、2回目からは「このトリガーは使えません」と表示されます。上の例のように、リピートコマンドブロックで付け直しておくのが定番です。
チャットのクリックで動くメニュー
/tellraw のクリックで /trigger を実行させると、文字を押すだけで使えるメニューになります。
| 版 | 書き方 |
|---|---|
| Java版1.21.5以降 | /tellraw @a {text:"[ロビーに戻る]",color:"aqua",click_event:{action:"run_command",command:"/trigger lobby"}} |
| Java版1.21.4以前 | /tellraw @a {"text":"[ロビーに戻る]","color":"aqua","clickEvent":{"action":"run_command","value":"/trigger lobby"}} |
クリックで実行できるのは、そのプレイヤーが自分で入力しても実行できるコマンドだけです。権限のない人が押しても動くのは、/trigger だからです。
数字で選ばせる
/trigger shop set 2
set を使うと、スコアを好きな数字にできます。shop=1 なら剣、shop=2 なら弓、のように1つのトリガーで選択肢を作れます。受け取る側は execute as @a[scores={shop=2}] run … のように数字ごとに処理を分けます。
うまくいかないときの確認ポイント
- 「このトリガーは使えません」と出る:
scoreboard players enableで印を付けていません。毎ティック付け直します。 - 「不明なスコアボードの目的」と出る:objective の種類を
dummyで作っていないか確認します。triggerで作る必要があります。 - 何度も実行される:処理のあとでスコアを0に戻していません。
- 統合版で使えない:統合版には /trigger がありません。
よくある質問
OPのプレイヤーも使えますか?
使えます。OPでも同じように enable が必要です。
トリガーを使える人を限定できますか?
enable の対象を @a[tag=vip] のようにすると、タグを持つ人だけが使えるようになります。
データパックでも使えますか?
使えます。毎ティック動くファンクション(tick)に、上のコマンドブロックの3行を書くと同じ仕組みになります。