- 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;
- }
- }