package com.github.jamesnorris.ablockalypse.aspect;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Creature;
import org.bukkit.entity.LivingEntity;
import com.github.jamesnorris.ablockalypse.Ablockalypse;
import com.github.jamesnorris.ablockalypse.DataContainer;
import com.github.jamesnorris.ablockalypse.behavior.Targettable;
public class ZALiving extends PermanentAspect implements Targettable {
private static DataContainer data = Ablockalypse.getData();
private LivingEntity entity;
public ZALiving(LivingEntity entity) {
this.entity = entity;
}
public ZALiving(Map<String, Object> savings) {
this((LivingEntity) data.getEntityByUUID(Bukkit.getWorld((UUID) savings.get("world_uuid")), (UUID) savings.get("entity_uuid")));
}
public LivingEntity getEntity() {
return entity;
}
@Override public Map<String, Object> getSave() {
Map<String, Object> savings = new HashMap<String, Object>();
savings.put("entity_uuid", entity.getUniqueId());
savings.put("world_uuid", entity.getWorld().getUID());
return savings;
}
@Override public boolean isResponsive() {
return entity != null && !entity.isDead();
}
@Override public boolean isTargettedBy(ZAMob mob) {
LivingEntity other = mob.getEntity();
if (!(other instanceof Creature)) {
return false;
}
LivingEntity target = ((Creature) other).getTarget();
return target != null && target.equals(entity);
}
@Override public Location updateTarget() {
return entity.getLocation();
}
}