メインコンテンツまでスキップ
バージョン: Preview

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