package tv.mineinthebox.essentials.minigames.internal; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.scheduler.BukkitRunnable; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.interfaces.XPlayer; public class MemorySafetyEvent implements Listener { private final xEssentials pl; public MemorySafetyEvent(xEssentials pl) { this.pl = pl; } @EventHandler public void onQuit(PlayerQuitEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { final XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isInArena()) { new BukkitRunnable() { @Override public void run() { if(!xp.getBukkitPlayer().isOnline()) { xp.getArena().leaveArena(xp); xp.setArena(null); } } }.runTaskLater(pl, 15L); } } } @EventHandler public void onQuit(PlayerKickEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { final XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isInArena()) { new BukkitRunnable() { @Override public void run() { if(!xp.getBukkitPlayer().isOnline()) { xp.getArena().leaveArena(xp); xp.setArena(null); } } }.runTaskLater(pl, 15L); } } } @EventHandler public void onQuitSess(PlayerQuitEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.hasSession()) { xp.getSession().stopSession(e.getPlayer()); xp.setSession(null); } } } @EventHandler public void onQuitSess(PlayerKickEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.hasSession()) { xp.getSession().stopSession(e.getPlayer()); xp.setSession(null); } } } }