package net.ernioo.core.listeners.bukkit.entity; import org.bukkit.entity.*; import net.ernioo.core.configuration.*; import org.bukkit.command.*; import org.bukkit.*; import net.ernioo.core.utils.*; import net.ernioo.core.objects.*; import org.bukkit.event.*; import org.bukkit.event.entity.*; import org.bukkit.enchantments.*; import org.bukkit.inventory.*; import net.ernioo.core.*; import org.bukkit.plugin.*; import net.ernioo.core.managers.*; import net.ernioo.core.objects.guild.*; public class EntityDamageByEntityListener implements Listener { public static Integer counter; @EventHandler(priority = EventPriority.HIGHEST) public void EntityDamageByEntity(final EntityDamageByEntityEvent e) { if (e.isCancelled()) { return; } if (!(e.getEntity() instanceof Player)) { return; } final Player d = ChatUtil.getDamager(e); if (d == null) { return; } final Player p = (Player)e.getEntity(); if (p.equals(d)) { return; } final AntiLogout u = AntiLogoutManager.getCombat(p); if (u == null) { return; } if (this.is(p, d, e)) { return; } if (!u.hasFight()) { String msg = Settings.ANTILOGOUT_MESSAGE_START; msg = msg.replace("{TIME}", Integer.toString(Settings.ANTILOGOUT_TIME)); ChatUtil.sendMessage((CommandSender)p, msg); } if (EntityDamageByEntityListener.counter != null) { Bukkit.getScheduler().cancelTask((int)EntityDamageByEntityListener.counter); } this.counter(p, Settings.ANTILOGOUT_TIME); u.setLastAttactTime(System.currentTimeMillis() + TimeUtil.SECOND.getTime(Settings.ANTILOGOUT_TIME)); if (u.getLastAttactkPlayer() != d) { u.setLastAsystPlayer(u.getLastAttactkPlayer()); u.setLastAsystTime(System.currentTimeMillis() + TimeUtil.SECOND.getTime(Settings.ANTILOGOUT_TIME)); } u.setLastAttactkPlayer(d); } @EventHandler public void EntityShootBow(final EntityShootBowEvent e) { final ItemStack bow = e.getBow(); if (bow.containsEnchantment(Enchantment.ARROW_KNOCKBACK)) { if (bow.containsEnchantment(Enchantment.DURABILITY)) { bow.removeEnchantment(Enchantment.DURABILITY); } if (bow.getDurability() < 339) { bow.setDurability((short)338); } } } public void counter(final Player p, final int i) { EntityDamageByEntityListener.counter = Bukkit.getScheduler().scheduleSyncRepeatingTask((Plugin)CorePlugin.getPlugin(), (Runnable)new Runnable(i) { int time = n + 1; @Override public void run() { --this.time; if (this.time > 0) { String message = Settings.ANTILOGOUT_ACTIONBAR_START; message = message.replace("{TIME}", Integer.toString(this.time)); ChatUtil.sendActionBar(p, ChatUtil.fixColor(message)); } if (this.time == 0) { String message = Settings.ANTILOGOUT_ACTIONBAR_END; message = message.replace("{TIME}", Integer.toString(this.time)); ChatUtil.sendActionBar(p, ChatUtil.fixColor(message)); } } }, 0L, 20L); } private boolean is(final Player p, final Player d, final EntityDamageByEntityEvent e) { final Guild g = GuildManager.getGuild(p); final Guild o = GuildManager.getGuild(d); if (g == null || o == null) { return false; } if (g.equals(o)) { if (g.isPvp()) { e.setDamage(0.0); } else { e.setCancelled(true); } return true; } if (g.getAlly().contains(o.getTag())) { if (!g.isPvpAlly() || !o.isPvpAlly()) { e.setCancelled(true); } else { e.setDamage(0.0); } return true; } return false; } }