設定したタイムを表示させてからカウントダウンをスタートさせたいです。
今のでもできてますが、アクションバーの初回表示 という部分をなくしてできるようにしたい。
(チャットGPT頼りで作ってるので変なところあるとおもいます)
function startCountdown(player, timeLeft) {
playerTimers.set(player.name, timeLeft);
// スタートのタイトル表示(即時)
player.runCommandAsync(`titleraw @a title {"rawtext":[{"text":"§6 スタート!"}]}`);
// アクションバーの初回表示(即時)
const initialTimeString = formatTime(timeLeft);
player.runCommandAsync(
`titleraw @a actionbar {"rawtext":[{"text":"§b残り時間:${initialTimeString}"}]}`
);
// 1tick遅延でカウントダウン開始
system.runTimeout(() => {
const intervalId = system.runInterval(() => {
if (!playerTimers.has(player.name)) {
system.clearRun(intervalId);
return;
}
// 1tickごとに減らす(1秒 = 20tick)
const newTime = playerTimers.get(player.name) - 1;
playerTimers.set(player.name, newTime);
if (newTime === -1) {
// 0:00:00 表示の直後に終了
player.runCommandAsync(
`titleraw @a title {"rawtext":[{"text":"§6 終了!"}]}`
);
playerTimers.delete(player.name);
system.clearRun(intervalId);
} else {
const timeString = formatTime(newTime);
player.runCommandAsync(
`titleraw @a actionbar {"rawtext":[{"text":" 残り時間:${timeString}"}]}`
);
}
}, 20); // 1秒ごと
}, 1); // ← 1tick 遅延(0.05秒)
}