Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package CustomDesires;
- import org.bukkit.Bukkit;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.Player;
- import Resources.Factions.FactionsMain;
- 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 DesireFindEnemyPlayer 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 boolean m_onlyAtNight;
- FactionsMain FM = new FactionsMain();
- public DesireFindEnemyPlayer(RemoteEntity inEntity,Class<?> inTargetClass,float inDistance, boolean inShouldCheckSight, int inChance)
- {
- this(inEntity,inTargetClass, inDistance, inShouldCheckSight, false, inChance,null);
- }
- @SuppressWarnings("unchecked")
- public DesireFindEnemyPlayer(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;
- }
- @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)
- {
- EntityHuman human = this.getEntityHandle().world.findNearbyVulnerablePlayer(this.getEntityHandle(), this.m_distance);
- Bukkit.broadcastMessage(FM.getFactionTag((Player) human));
- Bukkit.broadcastMessage(this.getRemoteEntity().getBukkitEntity().getCustomName().split("[")[0]);
- if(this.isSuitableTarget(human, false) && FM.getFactionTag((Player) human).equals(this.getRemoteEntity().getBukkitEntity().getCustomName().split("[")[0]))
- {
- this.m_target = human;
- 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