buttonPush
説明
プレイヤーがボタンを押したときにトリガーされるイベントです。
トリガータグ
イベントがトリガーされたとき、プレイヤーに自動付与されるタグです。
| タグ名 | 説明 |
|---|---|
capi:button | このイベントがトリガーされたとき、プレイヤーに自動付与されます。 |
トリガースコア
イベントがトリガーされたとき、自動で更新されるスコアボードです。
| スコアボード名 | 説明 |
|---|---|
capi:button_x | プレイヤーが押したボタンのX座標です。 |
capi:button_y | プレイヤーが押したボタンのY座標です。 |
capi:button_z | プレイヤーが押したボタンのZ座標です。 |
使用例
基本的な検出
ボタンを押したプレイヤーにメッセージを送信する例:
/execute as @a[tag=capi:button] run say ボタンを押しました!
/tag @a remove capi:button
特定座標のボタン検出
特定の座標にあるボタンを押したときの処理:
# スポーン地点のボタン(座標: 0, 64, 0)
/execute as @a[tag=capi:button,scores={capi:button_x=0,capi:button_y=64,capi:button_z=0}] run tp @s 100 64 100
/execute as @a[tag=capi:button,scores={capi:button_x=0,capi:button_y=64,capi:button_z=0}] run tellraw @s {"rawtext":[{"text":"§aワープしました!"}]}
# ショップのボタン(座標: 50, 64, 50)
/execute as @a[tag=capi:button,scores={capi:button_x=50,capi:button_y=64,capi:button_z=50}] run tellraw @s {"rawtext":[{"text":"§6ショップへようこそ!"}]}
/tag @a remove capi:button
ドアシステム
ボタンでドアを開閉する例:
# ボタンでドアを開く(座標範囲指定)
/execute as @a[tag=capi:button,scores={capi:button_x=10,capi:button_y=64,capi:button_z=10}] run fill 10 64 11 10 66 11 air
/execute as @a[tag=capi:button,scores={capi:button_x=10,capi:button_y=64,capi:button_z=10}] run tellraw @s {"rawtext":[{"text":"§aドアを開きました"}]}
/execute as @a[tag=capi:button,scores={capi:button_x=10,capi:button_y=64,capi:button_z=10}] run playsound random.door_open @s
# 5秒後にドアを閉じる(100ティック = 5秒)
/execute as @a[tag=capi:button,scores={capi:button_x=10,capi:button_y=64,capi:button_z=10}] run scriptevent capi:delay {ticks=100,command=fill 10 64 11 10 66 11 stone}
/tag @a remove capi:button
ミニゲーム開始ボタン
ボタンでミニゲームを開始する例:
# ゲーム開始ボタン
/execute as @a[tag=capi:button,scores={capi:button_x=0,capi:button_y=70,capi:button_z=0}] run tellraw @a {"rawtext":[{"text":"§6§lミニゲームを開始します!"}]}
/execute as @a[tag=capi:button,scores={capi:button_x=0,capi:button_y=70,capi:button_z=0}] run scoreboard players set @s game_status 1
/execute as @a[tag=capi:button,scores={capi:button_x=0,capi:button_y=70,capi:button_z=0}] run tp @a[tag=player] 0 80 0
/execute as @a[tag=capi:button,scores={capi:button_x=0,capi:button_y=70,capi:button_z=0}] run gamemode adventure @a[tag=player]
投票システム
ボタンで投票を集める例:
# 賛成ボタン(座標: 10, 64, 0)
/execute as @a[tag=capi:button,scores={capi:button_x=10,capi:button_y=64,capi:button_z=0}] run scoreboard players add yes vote 1
/execute as @a[tag=capi:button,scores={capi:button_x=10,capi:button_y=64,capi:button_z=0}] run tellraw @s {"rawtext":[{"text":"§a賛成票を投じました"}]}
# 反対ボタン(座標: -10, 64, 0)
/execute as @a[tag=capi:button,scores={capi:button_x=-10,capi:button_y=64,capi:button_z=0}] run scoreboard players add no vote 1
/execute as @a[tag=capi:button,scores={capi:button_x=-10,capi:button_y=64,capi:button_z=0}] run tellraw @s {"rawtext":[{"text":"§c反対票を投じました"}]}
エレベーターシステム
複数階へのワープボタン:
# 1階ボタン(Y=64)
/execute as @a[tag=capi:button,scores={capi:button_y=65}] run tp @s ~ 70 ~
/execute as @a[tag=capi:button,scores={capi:button_y=65}] run tellraw @s {"rawtext":[{"text":"§a2階に移動しました"}]}
# 2階ボタン(Y=70)
/execute as @a[tag=capi:button,scores={capi:button_y=71}] run tp @s ~ 76 ~
/execute as @a[tag=capi:button,scores={capi:button_y=71}] run tellraw @s {"rawtext":[{"text":"§a3階に移動しました"}]}
# 3階ボタン(Y=76)
/execute as @a[tag=capi:button,scores={capi:button_y=77}] run tp @s ~ 64 ~
/execute as @a[tag=capi:button,scores={capi:button_y=77}] run tellraw @s {"rawtext":[{"text":"§a1階に移動しました"}]}
クールダウンシステム
ボタンの連打を防ぐクールダウン:
# ボタンを押したプレイヤーにクールダウンを設定
/execute as @a[tag=capi:button,scores={button_cooldown=0}] run tellraw @s {"rawtext":[{"text":"§a機能を実行しました"}]}
/execute as @a[tag=capi:button,scores={button_cooldown=0}] run scoreboard players set @s button_cooldown 100
# クールダウン中のプレイヤー
/execute as @a[tag=capi:button,scores={button_cooldown=1..}] run tellraw @s {"rawtext":[{"text":"§cクールダウン中です..."}]}
# クールダウンを減らす(別の関数で毎ティック実行)
scoreboard players remove @a[scores={button_cooldown=1..}] button_cooldown 1
報酬ボタン
ボタンを押すと報酬がもらえる例:
# デイリー報酬ボタン
/execute as @a[tag=capi:button,scores={capi:button_x=20,capi:button_y=64,capi:button_z=20,daily_claimed=0}] run give @s diamond 1
/execute as @a[tag=capi:button,scores={capi:button_x=20,capi:button_y=64,capi:button_z=20,daily_claimed=0}] run tellraw @s {"rawtext":[{"text":"§6デイリー報酬を受け取りました!"}]}
/execute as @a[tag=capi:button,scores={capi:button_x=20,capi:button_y=64,capi:button_z=20,daily_claimed=0}] run scoreboard players set @s daily_claimed 1
# 既に受け取り済み
/execute as @a[tag=capi:button,scores={capi:button_x=20,capi:button_y=64,capi:button_z=20,daily_claimed=1}] run tellraw @s {"rawtext":[{"text":"§c今日の報酬は既に受け取りました"}]}
セキュリティドア
特定の権限を持つプレイヤーのみ開けられるドア:
# VIPエリアのボタン
/execute as @a[tag=capi:button,scores={capi:button_x=30,capi:button_y=64,capi:button_z=30},tag=vip] run tp @s 35 64 35
/execute as @a[tag=capi:button,scores={capi:button_x=30,capi:button_y=64,capi:button_z=30},tag=vip] run tellraw @s {"rawtext":[{"text":"§6VIPエリアへようこそ"}]}
# VIPでない場合
/execute as @a[tag=capi:button,scores={capi:button_x=30,capi:button_y=64,capi:button_z=30},tag=!vip] run tellraw @s {"rawtext":[{"text":"§cこのエリアにはVIP権限が必要です"}]}
/execute as @a[tag=capi:button,scores={capi:button_x=30,capi:button_y=64,capi:button_z=30},tag=!vip] run playsound random.bass @s
カウンターシステム
ボタンが押された回数をカウント:
# 特定のボタンの押下回数をカウント
/execute as @a[tag=capi:button,scores={capi:button_x=0,capi:button_y=64,capi:button_z=10}] run scoreboard players add button_counter count 1
/execute as @a[tag=capi:button,scores={capi:button_x=0,capi:button_y=64,capi:button_z=10}] run tellraw @a {"rawtext":[{"text":"§eボタンが押されました"}]}
# 100回でイベント発生
/execute if score button_counter count matches 100 run tellraw @a {"rawtext":[{"text":"§6§l100回達成!特別イベント開始!"}]}
/execute if score button_counter count matches 100 run scoreboard players set button_counter count 0