package dev.loki.phase; import dev.loki.config.GameConfig; import dev.loki.core.GameSession; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; public class LobbyPhase implements Phase { private final GameConfig config; private int countdown; private int secondsLeft; private boolean started; public LobbyPhase(GameConfig config) { this.config = config; this.secondsLeft = config.getLobbyCountdown(); this.countdown = 0; this.started = false; } @Override public void enter(GameSession session) { Bukkit.broadcast(Component.text("[DBD] Лобби открыто! Используйте /dbd join", NamedTextColor.GREEN)); } @Override public void tick(GameSession session) { int playerCount = session.getPlayerCount(); int minPlayers = config.getMinPlayers(); if (playerCount < minPlayers) { secondsLeft = config.getLobbyCountdown(); countdown = 0; started = false; return; } countdown++; if (countdown >= 20) { countdown = 0; secondsLeft--; if (secondsLeft <= 5 || secondsLeft % 10 == 0) { Bukkit.broadcast(Component.text( "[DBD] До начала: " + secondsLeft + " сек. (" + playerCount + "/" + minPlayers + ")", NamedTextColor.YELLOW)); } } if (secondsLeft <= 0) { started = true; } } @Override public void exit(GameSession session) { Bukkit.broadcast(Component.text("[DBD] Игра начинается!", NamedTextColor.GREEN)); } @Override public boolean isComplete() { return started; } public void forceStart() { secondsLeft = 0; started = true; } public int getSecondsLeft() { return secondsLeft; } }