Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package CustomDesires;
- import org.bukkit.entity.Entity;
- import java.util.*;
- import net.minecraft.server.v1_5_R3.*;
- import de.kumpelblase2.remoteentities.api.RemoteEntity;
- import de.kumpelblase2.remoteentities.api.thinking.DesireType;
- import de.kumpelblase2.remoteentities.api.thinking.goals.DesireTargetBase;
- import de.kumpelblase2.remoteentities.persistence.ParameterData;
- import de.kumpelblase2.remoteentities.persistence.SerializeAs;
- import de.kumpelblase2.remoteentities.utilities.NMSClassMap;
- import de.kumpelblase2.remoteentities.utilities.ReflectionUtil;
- public class DesireFindEnemyMinion extends DesireTargetBase{
- @SerializeAs(pos = 5)
- protected int m_targetChance;
- @SerializeAs(pos = 4)
- protected Class<? extends Entity> m_targetClass;
- protected DistanceComparator m_comparator;
- protected EntityLiving m_target;
- @SerializeAs(pos = 6)
- protected IEntitySelector m_selector;
- protected boolean m_onlyAtNight;
- public DesireFindEnemyMinion(RemoteEntity inEntity,Class<?> inTargetClass,float inDistance, boolean inShouldCheckSight, int inChance,IEntitySelector inSelecto)
- {
- this(inEntity,inTargetClass, inDistance, inShouldCheckSight, false, inChance, inSelecto);
- }
- @SuppressWarnings("unchecked")
- public DesireFindEnemyMinion(RemoteEntity inEntity, Class<?> inTargetClass, float inDistance, boolean inShouldCheckSight, boolean inShouldMelee, int inChance, IEntitySelector inSelector)
- {
- super(inEntity, inDistance, inShouldCheckSight, inShouldMelee);
- this.m_comparator = new DistanceComparator(null, this.getEntityHandle());
- this.m_targetChance = inChance;
- if(Entity.class.isAssignableFrom(inTargetClass))
- this.m_targetClass = (Class<? extends Entity>)inTargetClass;
- else
- this.m_targetClass = (Class<? extends Entity>)NMSClassMap.getNMSClass(inTargetClass);
- this.m_onlyAtNight = false;
- this.m_type = DesireType.PRIMAL_INSTINCT;
- this.m_selector = inSelector;
- }
- @SuppressWarnings("unchecked")
- @Override
- public boolean shouldExecute()
- {
- if(this.getEntityHandle() == null)
- return false;
- if(this.m_onlyAtNight && this.getEntityHandle().world.v())
- return false;
- else if(this.m_targetChance > 0 && this.getEntityHandle().aE().nextInt(this.m_targetChance) != 0)
- return false;
- else
- {
- if(this.m_targetClass == EntityHuman.class)
- {
- return false;
- }
- else
- {
- List<EntityLiving> entities = this.getEntityHandle().world.a(this.m_targetClass, this.getEntityHandle().boundingBox.grow(this.m_distance, 4, this.m_distance), this.m_selector);
- Collections.sort(entities, this.m_comparator);
- Iterator<EntityLiving> it = entities.iterator();
- while(it.hasNext())
- {
- EntityLiving entity = it.next();
- if(this.isSuitableTarget(entity, false) && !entity.getCustomName().split("[")[0].equals(this.getRemoteEntity().getBukkitEntity().getCustomName().split("[")[0]))
- {
- if(it instanceof EntityHuman){
- return false;
- }
- this.m_target = entity;
- return true;
- }
- }
- }
- return false;
- }
- }
- @Override
- public void startExecuting()
- {
- this.getEntityHandle().setGoalTarget(this.m_target);
- super.startExecuting();
- }
- @Override
- public ParameterData[] getSerializeableData()
- {
- return ReflectionUtil.getParameterDataForClass(this).toArray(new ParameterData[0]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement