diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index 6fbcba0..d868908 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -9,7 +9,9 @@ import de.fanta.challenges.challenges.RandomDrops; import de.fanta.challenges.challenges.SBManager; import de.fanta.challenges.commands.CommandRegistration; +import de.fanta.challenges.events.PlayerCountChangedEvent; import de.fanta.challenges.events.ServerStatusChangedEvent; +import de.fanta.challenges.events.TimerChangedEvent; import de.fanta.challenges.listeners.BlockCreateListener; import de.fanta.challenges.listeners.BlockDestroyListener; import de.fanta.challenges.listeners.DamageListener; @@ -78,6 +80,8 @@ private Player currentEditor; + private boolean waitingForShutdown; + @Override public void onEnable() { plugin = this; @@ -123,6 +127,9 @@ World world = Bukkit.getWorld("world"); world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); checkMLGWorld(); + Bukkit.getPluginManager().callEvent(new ServerStatusChangedEvent(true)); + Bukkit.getPluginManager().callEvent(new TimerChangedEvent(false)); + Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size())); }, 1L); if (getConfig().getBoolean("World_Reset")) { @@ -137,7 +144,7 @@ this.backpack.loadInventoryFromConfig(); } - Bukkit.getPluginManager().callEvent(new ServerStatusChangedEvent(true)); + } @Override @@ -244,4 +251,12 @@ public Timer getTimer() { return timer; } + + public boolean isWaitingForShutdown() { + return waitingForShutdown; + } + + public void setWaitingForShutdown(boolean waitingForShutdown) { + this.waitingForShutdown = waitingForShutdown; + } } diff --git a/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java index b1128e9..83741b6 100644 --- a/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java +++ b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java @@ -37,7 +37,7 @@ } plugin.saveConfig(); - Bukkit.getPluginManager().callEvent(new ServerStatusChangedEvent(false)); + plugin.setWaitingForShutdown(true); Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { Bukkit.shutdown(); diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java index b1771f0..5b97fa6 100644 --- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java @@ -8,6 +8,7 @@ import java.util.stream.Collectors; import de.fanta.challenges.events.PlayerCountChangedEvent; +import de.fanta.challenges.events.ServerStatusChangedEvent; import de.fanta.challenges.utils.ChatUtil; import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; @@ -15,7 +16,9 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.objectweb.asm.commons.SerialVersionUIDAdder; public class QuitJoinListener implements Listener { @@ -59,6 +62,14 @@ } @EventHandler + public void onPlayerLogin(PlayerLoginEvent e) { + if (plugin.isWaitingForShutdown()) { + e.setResult(PlayerLoginEvent.Result.KICK_OTHER); + e.setKickMessage("Der Server wird gerade neu gestartet."); + } + } + + @EventHandler public void onPlayerQuit(PlayerQuitEvent e) { Player player = e.getPlayer(); Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatColor.of("#3D98DC") + player.getName() + ChatColor.of("#C45B3D") + " hat die Lobby verlassen! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - 1) + "/" + Bukkit.getServer().getMaxPlayers() + "]"); @@ -97,5 +108,11 @@ } Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - 1)); + + if (plugin.isWaitingForShutdown() && Bukkit.getOnlinePlayers().size() == 1) { + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + Bukkit.getPluginManager().callEvent(new ServerStatusChangedEvent(false)); + }, 1L); + } } }