package tv.mineinthebox.essentials.events.customevents; import java.util.HashMap; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; 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.interfaces.EventTemplate; import tv.mineinthebox.essentials.interfaces.XPlayer; public class CallAfkSchedulerEvent extends EventTemplate implements Listener { public CallAfkSchedulerEvent(xEssentials pl) { super(pl, "Afk"); } private HashMap<String, Location> PlayerLocations = new HashMap<String, Location>(); public void onStartAfkScheduler() { Bukkit.getScheduler().scheduleSyncRepeatingTask(pl, new Runnable() { @Override public void run() { for(Player p : pl.getOnlinePlayers()) { if(PlayerLocations.containsKey(p.getName())) { Location currentLocation = p.getLocation(); if(PlayerLocations.get(p.getName()).equals(currentLocation)) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(p.getName()); if(!xp.isVanished()) { if(!xp.isFishing()) { if(!xp.isAfk()) { broadcast(ChatColor.GREEN + p.getName() + " has been afk"); xp.setAfk("no reason given in"); Bukkit.getPluginManager().callEvent(new PlayerAfkEvent(xp.getBukkitPlayer(), true, false, pl)); } } } } else { PlayerLocations.put(p.getName(), p.getLocation()); } } else { PlayerLocations.put(p.getName(), p.getLocation()); } } } },100, 3000); } @EventHandler public void onQuit(PlayerQuitEvent e) { if(PlayerLocations.containsKey(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isAfk()) { xp.removeAfk(); Bukkit.broadcastMessage(ChatColor.GREEN + e.getPlayer().getName() + " is no longer afk"); Bukkit.getPluginManager().callEvent(new PlayerAfkEvent(xp.getBukkitPlayer(), false, true, pl)); } PlayerLocations.remove(e.getPlayer().getName()); } } @EventHandler public void onQuit(PlayerKickEvent e) { if(PlayerLocations.containsKey(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isAfk()) { xp.removeAfk(); Bukkit.broadcastMessage(ChatColor.GREEN + e.getPlayer().getName() + " is no longer afk"); Bukkit.getPluginManager().callEvent(new PlayerAfkEvent(xp.getBukkitPlayer(), false, true,pl)); } PlayerLocations.remove(e.getPlayer().getName()); } } }