package me.gtacraft.npccore.listeners;
import me.gtacraft.npccore.GTANPCCore;
import me.gtacraft.npccore.struct.Gang;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Skeleton;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityCombustEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityTargetEvent;
import java.util.UUID;
/**
* Created by devan_000 on 4/28/2014.
*/
public class EntityListener implements Listener {
private final GTANPCCore plugin = GTANPCCore.get();
@EventHandler(priority= EventPriority.HIGH, ignoreCancelled = true)
public void onCombust(EntityCombustEvent event) {
if (event.getEntity() == null) {
return;
}
if (plugin.entityController.entityUUIDs.contains(event.getEntity().getUniqueId())) {
event.setCancelled(true);
}
}
@EventHandler(priority= EventPriority.HIGH, ignoreCancelled = true)
public void onHit(EntityDamageByEntityEvent event) {
if (event.getEntity() == null || event.getDamager() == null) {
return;
}
if (!(event.getDamager() instanceof Player)) {
return;
}
if (!plugin.entityController.entityUUIDs.contains(event.getEntity().getUniqueId())) {
event.setCancelled(true);
return;
}
if (plugin.entityController.gangs.get(event.getEntity().getUniqueId()) == null) {
return;
}
if (!plugin.entityController.gangs.get(event.getEntity().getUniqueId()).getAngryAtPlayers().contains(event.getDamager().getUniqueId())) {
plugin.entityController.gangs.get(event.getEntity().getUniqueId()).angryAtPlayers.add(event.getDamager().getUniqueId());
}
event.setCancelled(false);
for (UUID gangMemberUUID : plugin.entityController.gangs.get(event.getEntity().getUniqueId()).getMembers()) {
if (event.getEntity().getUniqueId() == gangMemberUUID) {
continue;
}
for (Entity entity : event.getDamager().getWorld().getEntities()) {
if (entity.getUniqueId().equals(gangMemberUUID)) {
((Skeleton)entity).setTarget((Player)event.getDamager());
break;
}
}
}
}
@EventHandler(priority= EventPriority.HIGH, ignoreCancelled = true)
public void onTarget(EntityTargetEvent event) {
if (!(event.getTarget() instanceof Player)) {
event.setCancelled(true);
return;
}
if (!plugin.entityController.entityUUIDs.contains(event.getEntity().getUniqueId())) {
event.setCancelled(true);
return;
}
Gang gang = plugin.entityController.gangs.get(event.getEntity().getUniqueId());
if (gang == null) {
return;
}
if (!gang.angryAtPlayers.contains(event.getTarget().getUniqueId())) {
event.setCancelled(true);
return;
}
}
}