From 40561e41c040b135432302896d77c9f2c8a12fca Mon Sep 17 00:00:00 2001 From: Intelli Date: Wed, 9 Feb 2022 19:34:06 -0700 Subject: [PATCH] Fixed player disconnections not being logged on server shutdown --- src/main/java/net/coreprotect/CoreProtect.java | 9 +++++++++ .../listener/player/PlayerQuitListener.java | 10 +++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/coreprotect/CoreProtect.java b/src/main/java/net/coreprotect/CoreProtect.java index ba1c32c..6bd5468 100755 --- a/src/main/java/net/coreprotect/CoreProtect.java +++ b/src/main/java/net/coreprotect/CoreProtect.java @@ -4,6 +4,7 @@ import java.io.File; import org.bstats.bukkit.MetricsLite; import org.bukkit.Bukkit; +import org.bukkit.entity.Player; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.java.JavaPlugin; @@ -17,6 +18,7 @@ import net.coreprotect.database.Database; import net.coreprotect.language.Language; import net.coreprotect.language.Phrase; import net.coreprotect.listener.ListenerHandler; +import net.coreprotect.listener.player.PlayerQuitListener; import net.coreprotect.thread.CacheHandler; import net.coreprotect.thread.NetworkHandler; import net.coreprotect.utility.Chat; @@ -158,6 +160,13 @@ public final class CoreProtect extends JavaPlugin { private static void safeShutdown(CoreProtect plugin) { try { + /* if server is stopping, log disconnections of online players */ + if (plugin.getServer().isStopping()) { + for (Player player : plugin.getServer().getOnlinePlayers()) { + PlayerQuitListener.queuePlayerQuit(player); + } + } + ConfigHandler.serverRunning = false; long shutdownTime = System.currentTimeMillis(); long alertTime = shutdownTime + (10 * 1000); diff --git a/src/main/java/net/coreprotect/listener/player/PlayerQuitListener.java b/src/main/java/net/coreprotect/listener/player/PlayerQuitListener.java index 64ea6ee..b8db385 100644 --- a/src/main/java/net/coreprotect/listener/player/PlayerQuitListener.java +++ b/src/main/java/net/coreprotect/listener/player/PlayerQuitListener.java @@ -11,12 +11,16 @@ import net.coreprotect.consumer.Queue; public final class PlayerQuitListener extends Queue implements Listener { - @EventHandler(priority = EventPriority.MONITOR) - public void onPlayerQuit(PlayerQuitEvent event) { - Player player = event.getPlayer(); + public static void queuePlayerQuit(Player player) { if (Config.getConfig(player.getWorld()).PLAYER_SESSIONS) { int time = (int) (System.currentTimeMillis() / 1000L); Queue.queuePlayerQuit(player, time); } } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPlayerQuit(PlayerQuitEvent event) { + queuePlayerQuit(event.getPlayer()); + } + }