@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onDamageByEntity(EntityDamageByEntityEvent event) { if (event.getDamager() instanceof Player) { if (event.getEntity() instanceof Player) { ZoneManager manager = m_plugin.getZoneManager(); if (manager.zoneExists(event.getDamager().getLocation())) { if (!manager.getZone(event.getDamager().getLocation()).canPVP()) { event.setCancelled(true); } } else { if (manager.zoneExists(event.getEntity().getLocation())) { if (!manager.getZone(event.getEntity().getLocation()).canPVP()) { event.setCancelled(true); } } else { event.setCancelled(true); } } } } else if (event.getDamager() instanceof Arrow) { if (event.getEntity() instanceof Player) { ZoneManager manager = m_plugin.getZoneManager(); if (manager.zoneExists(event.getDamager().getLocation())) { if (!manager.getZone(event.getDamager().getLocation()).canPVP()) { event.setCancelled(true); } } else { if (manager.zoneExists(event.getEntity().getLocation())) { if (!manager.getZone(event.getEntity().getLocation()).canPVP()) { event.setCancelled(true); } } else { event.setCancelled(true); } } } } }