更新日:
1. 準備(最初に1回だけ)
/scoreboard objectives add count dummy
/scoreboard players set #cd count -1
数を数えるためのスコアを作ります。#cd はプレイヤーではない「仮の名前」で、サイドバーにも出ません。-1は「止まっている」という意味にします。
2. カウントダウンのしくみ
# 反復・常時実行
execute if score #cd count matches 1.. run scoreboard players remove #cd count 1
# チェーン・常時実行(ここから下は全部チェーン)
execute if score #cd count matches 60 run title @a title {"text":"3","color":"red"}
execute if score #cd count matches 40 run title @a title {"text":"2","color":"yellow"}
execute if score #cd count matches 20 run title @a title {"text":"1","color":"green"}
execute if score #cd count matches 0 run title @a title {"text":"スタート!","color":"gold"}
execute if score #cd count matches 0 run scoreboard players set #cd count -1
1行目で、スコアが1以上のときだけ1ティックに1ずつ減らします。20ティックで1秒なので、60・40・20・0のときにそれぞれ「3・2・1・スタート」が1秒おきに出ます。最後に-1にして止めるので、スタートは1回しか出ません。
3. カウントダウンを始める
/scoreboard players set #cd count 61
ボタンを押したときにこのコマンドが動くようにしておくと、押した次のティックから数え始めます。ボタンで動かすコマンドブロックは「インパルス」にします(コマンドブロックの種類)。
4. 数字に合わせて音を鳴らす
execute if score #cd count matches 60 as @a at @s run playsound minecraft:block.note_block.pling master @s ~ ~ ~ 1 1
execute if score #cd count matches 0 as @a at @s run playsound minecraft:entity.player.levelup master @s ~ ~ ~ 1 1
2のチェーンの途中に足します。as @a at @s にすると、全員の耳元で鳴るので遠くの人にも聞こえます。40と20の行も同じように足せます。音の名前は playsoundコマンドの基本 で探せます。
5. スタートの瞬間にゲームを始める
execute if score #cd count matches 0 run gamemode adventure @a
execute if score #cd count matches 0 run tp @a 0 64 0
「スタート」の行と、-1にする行の間に入れます。-1にしたあとでは0の条件に合わなくなるので、順番に注意します。ゲーム全体の流れは ミニゲームの作り方 も参考にしてください。
うまくいかないときの確認ポイント
- 数字が一瞬で全部出る:1行目が反復になっているか、ほかの行がチェーンになっているか確認します。
- スタートが何度も出る:最後に-1にする行が、チェーンの一番最後にあるか確認します。
- 統合版で使いたい:統合版では
/title @a title 3のように文字をそのまま書きます。スコアのしくみは同じです。
よくある質問
10秒のカウントダウンにできますか?
始めるときのスコアを201にして、200・180…のように20ずつ下がるところで数字を出します。
カウントダウン中に動けないようにできますか?
数えている間だけ移動速度低下の強いエフェクトを付けるか、決まった場所へ毎ティックtpすると、スタートまで動けなくできます。
データパックを使う方法もありますか?
あります。scheduleコマンドで1秒ごとにファンクションを動かす方法を、scheduleコマンドの記事で説明しています。