package tv.mineinthebox.essentials.events.players; import org.bukkit.Bukkit; 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.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.EntityTargetLivingEntityEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerMoveEvent; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.events.customevents.PlayerAfkEvent; import tv.mineinthebox.essentials.interfaces.EventTemplate; import tv.mineinthebox.essentials.interfaces.XPlayer; @SuppressWarnings("deprecation") public class AfkCheckEvent extends EventTemplate implements Listener { public AfkCheckEvent(xEssentials pl) { super(pl, "Afk"); } @EventHandler public void removeAfk(PlayerMoveEvent e) { if(e.getFrom().distanceSquared(e.getTo()) > 0.04) { double distanceXmin = Math.min(e.getFrom().getX(), e.getTo().getX()); double distanceXmax = Math.max(e.getFrom().getX(), e.getTo().getX()); double distanceZmin = Math.min(e.getFrom().getZ(), e.getTo().getZ()); double distanceZmax = Math.max(e.getFrom().getZ(), e.getTo().getZ()); double destx = (distanceXmax - distanceXmin); double destz = (distanceZmax - distanceZmin); if(destx > 0.0) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isAfk()) { if(xp.isVanished()) { return; } xp.removeAfk(); broadcast(ChatColor.GREEN + e.getPlayer().getName() + " is no longer afk"); Bukkit.getPluginManager().callEvent(new PlayerAfkEvent(xp.getBukkitPlayer(), false, true, pl)); } } else if(destz > 0.0) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isAfk()) { if(xp.isVanished()) { return; } xp.removeAfk(); broadcast(ChatColor.GREEN + e.getPlayer().getName() + " is no longer afk"); Bukkit.getPluginManager().callEvent(new PlayerAfkEvent(xp.getBukkitPlayer(), false, true, pl)); } } } } @EventHandler public void isGodModeAfk(EntityDamageEvent e) { if(e.isCancelled()) { return; } if(e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); if(pl.getConfiguration().getPlayerConfig().isGodModeInAfkEnabled()) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(p.getName()); if(xp.isAfk()) { e.setCancelled(true); } } } } @EventHandler(priority = EventPriority.LOW) public void isGodModeAfk(EntityDamageByEntityEvent e) { if(e.isCancelled()) { return; } if(e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); if(pl.getConfiguration().getPlayerConfig().isGodModeInAfkEnabled()) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(p.getName()); if(xp.isAfk()) { e.setDamage(0.0F); e.setCancelled(true); } } } } @EventHandler public void isGodModeAfk(EntityTargetEvent e) { if(e.getTarget() instanceof Player) { Player p = (Player) e.getTarget(); if(pl.getConfiguration().getPlayerConfig().isGodModeInAfkEnabled()) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(p.getName()); if(xp.isAfk()) { e.setCancelled(true); } } } } @EventHandler public void isGodModeAfk(EntityTargetLivingEntityEvent e) { if(e.getTarget() instanceof Player) { Player p = (Player) e.getTarget(); if(pl.getConfiguration().getPlayerConfig().isGodModeInAfkEnabled()) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(p.getName()); if(xp.isAfk()) { e.setCancelled(true); } } } } @EventHandler public void isGodModeAfk(FoodLevelChangeEvent e) { if(e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); if(pl.getConfiguration().getPlayerConfig().isGodModeInAfkEnabled()) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(p.getName()); if(xp.isAfk()) { e.setCancelled(true); } } } } @EventHandler public void chatAfk(PlayerChatEvent e) { for(XPlayer xp : pl.getManagers().getPlayerManager().getPlayers()) { if(e.getMessage().contains(xp.getBukkitPlayer().getName())) { if(xp.isAfk()) { sendMessage(e.getPlayer(), ChatColor.GREEN + xp.getBukkitPlayer().getName() + " has been afk [ " + xp.getAfkReason() + " ]"); } } } } }