package me.maker56.survivalgames.game.phases; import me.maker56.survivalgames.SurvivalGames; import me.maker56.survivalgames.Util; import me.maker56.survivalgames.arena.Arena; import me.maker56.survivalgames.commands.messages.MessageHandler; import me.maker56.survivalgames.game.Game; import me.maker56.survivalgames.game.GameState; import me.maker56.survivalgames.user.User; import org.bukkit.Bukkit; import org.bukkit.Sound; import org.bukkit.scheduler.BukkitTask; public class CooldownPhase { private Game game; private BukkitTask task; private boolean running; private int time; private Arena arena; public CooldownPhase(Game game, Arena arena) { this.game = game; this.arena = arena; } public void load() { game.setCurrentArena(arena); time = game.getCooldownTime(); game.setState(GameState.COOLDOWN); game.setScoreboardPhase(SurvivalGames.getScoreboardManager().getNewScoreboardPhase(GameState.COOLDOWN)); game.updateScoreboard(); start(); } public void start() { running = true; if(game.getArenas().size() > 1) { for(int i = 0; i < game.getUsers().size(); i++) { User user = game.getUsers().get(i); user.setSpawnIndex(i); user.getPlayer().teleport(arena.getSpawns().get(i)); for(User ouser : game.getUsers()) { user.getPlayer().showPlayer(ouser.getPlayer()); } } } task = Bukkit.getScheduler().runTaskTimer(SurvivalGames.instance, new Runnable() { public void run() { for(User user : game.getUsers()) { user.getPlayer().setLevel(time); user.getPlayer().setExp(Util.getExpPercent((float)time, (float)game.getCooldownTime())); } if(time == 27) { game.sendMessage(MessageHandler.getMessage("prefix") + "MAPINFO �7- �eName: �b" + arena.getName()); } if(time > 0 && (time % 5 == 0 || (time <= 10 && time > 0))) { game.sendMessage(MessageHandler.getMessage("game-cooldown").replace("%0%", Util.getFormatedTime(time))); } if(time <= 5 && time > 0) { for(User user : game.getUsers()) { user.getPlayer().playSound(user.getPlayer().getLocation(), Sound.NOTE_STICKS, 8.0F, 1.0F); } } else if(time == 0) { for(User user : game.getUsers()) { user.getPlayer().playSound(user.getPlayer().getLocation(), Sound.NOTE_PLING, 8.0F, 1.0F); user.clearInventory(); } task.cancel(); running = false; time = game.getCooldownTime(); game.startIngame(); return; } game.updateScoreboard(); time--; } }, 0L, 20L); } public int getTime() { return time; } public void cancelTask() { if(task != null) task.cancel(); running = false; time = game.getCooldownTime(); } public boolean isRunning() { return running; } }