package me.vaqxine.NetworkManager.tasks; import me.vaqxine.NetworkManager.NetworkManager; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.scheduler.BukkitRunnable; public class ServerRebootTask extends BukkitRunnable { volatile int iteration = 60; public ServerRebootTask(boolean force) { NetworkManager.getPlugin().rebooting = true; if (force) { iteration = 0; } } @Override public synchronized void run() { if (iteration < 0) { return; } switch (iteration) { case 60: doBroadcast(); break; case 45: doBroadcast(); break; case 30: doBroadcast(); break; case 15: doBroadcast(); break; case 10: doBroadcast(); break; case 5: doBroadcast(); break; case 4: doBroadcast(); break; case 3: doBroadcast(); break; case 2: doBroadcast(); break; case 1: doBroadcast(); break; case 0: NetworkManager.log.debug("Saving all players...", this.getClass()); Bukkit.savePlayers(); NetworkManager.log.debug("Saving all worlds...", this.getClass()); for (World world : Bukkit.getWorlds()) { world.save(); } NetworkManager.log.debug("Stopping the server...", this.getClass()); Bukkit.shutdown(); cancel(); break; } iteration--; } private void doBroadcast() { Bukkit.broadcastMessage(""); Bukkit.broadcastMessage(NetworkManager.restartWarnMessage.replace("[time]", String.valueOf(iteration))); Bukkit.broadcastMessage(""); } }