package tv.mineinthebox.essentials.events.players; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.enums.LogType; import tv.mineinthebox.essentials.interfaces.XPlayer; public class RemoveMemoryEvent implements Listener { private final xEssentials pl; public RemoveMemoryEvent(xEssentials pl) { this.pl = pl; } @EventHandler(priority = EventPriority.HIGHEST) public void onQuitMemory(PlayerQuitEvent e) { if(pl.getConfiguration().getDebugConfig().isEnabled()) { xEssentials.log("preparing to remove player on normal quit: " + e.getPlayer().getName(), LogType.DEBUG); } if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); xp.save(); pl.getManagers().getPlayerManager().removePlayer(xp.getName()); if(pl.getConfiguration().getDebugConfig().isEnabled()) { xEssentials.log("player found and removed!, online check returns: " + pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName()), LogType.DEBUG); } } else { if(pl.getConfiguration().getDebugConfig().isEnabled()) { xEssentials.log("player " + e.getPlayer().getName() + " was already removed due a kick event however this event shouldn't be fired see:", LogType.DEBUG); xEssentials.log("found player in xEssentialsManager?: " + (pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName()) ? ChatColor.GREEN + "yes" : ChatColor.RED + "no"), LogType.DEBUG); xEssentials.log("player is still online by this event?: "+ (e.getPlayer() instanceof Player && e.getPlayer().isOnline() ? ChatColor.GREEN + "yes" : ChatColor.RED + "no"), LogType.DEBUG); } } } @EventHandler(priority = EventPriority.HIGHEST) public void onQuitMemory(PlayerKickEvent e) { if(pl.getConfiguration().getDebugConfig().isEnabled()) { xEssentials.log("preparing to remove player on normal kick: " + e.getPlayer().getName(), LogType.DEBUG); } if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); xp.save(); pl.getManagers().getPlayerManager().removePlayer(xp.getName()); if(pl.getConfiguration().getDebugConfig().isEnabled()) { xEssentials.log("player found and removed!, online check returns: " + (pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName()) ? ChatColor.RED + "false" : ChatColor.GREEN + "true"), LogType.DEBUG); } } } }