package net.minecraft.entity.ai;
import java.util.Iterator;
import java.util.List;
import net.minecraft.entity.EntityCreature;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.AxisAlignedBB;
public class EntityAIHurtByTarget extends EntityAITarget
{
private boolean entityCallsForHelp;
/** Store the previous revengeTimer value */
private int revengeTimerOld;
private final Class[] field_179447_c;
private static final String __OBFID = "CL_00001619";
public EntityAIHurtByTarget(EntityCreature p_i45885_1_, boolean p_i45885_2_, Class ... p_i45885_3_)
{
super(p_i45885_1_, false);
this.entityCallsForHelp = p_i45885_2_;
this.field_179447_c = p_i45885_3_;
this.setMutexBits(1);
}
/**
* Returns whether the EntityAIBase should begin execution.
*/
public boolean shouldExecute()
{
int var1 = this.taskOwner.getRevengeTimer();
return var1 != this.revengeTimerOld && this.isSuitableTarget(this.taskOwner.getAITarget(), false);
}
/**
* Execute a one shot task or start executing a continuous task
*/
public void startExecuting()
{
this.taskOwner.setAttackTarget(this.taskOwner.getAITarget());
this.revengeTimerOld = this.taskOwner.getRevengeTimer();
if (this.entityCallsForHelp)
{
double var1 = this.getTargetDistance();
List var3 = this.taskOwner.worldObj.getEntitiesWithinAABB(this.taskOwner.getClass(), (new AxisAlignedBB(this.taskOwner.posX, this.taskOwner.posY, this.taskOwner.posZ, this.taskOwner.posX + 1.0D, this.taskOwner.posY + 1.0D, this.taskOwner.posZ + 1.0D)).expand(var1, 10.0D, var1));
Iterator var4 = var3.iterator();
while (var4.hasNext())
{
EntityCreature var5 = (EntityCreature)var4.next();
if (this.taskOwner != var5 && var5.getAttackTarget() == null && !var5.isOnSameTeam(this.taskOwner.getAITarget()))
{
boolean var6 = false;
Class[] var7 = this.field_179447_c;
int var8 = var7.length;
for (int var9 = 0; var9 < var8; ++var9)
{
Class var10 = var7[var9];
if (var5.getClass() == var10)
{
var6 = true;
break;
}
}
if (!var6)
{
this.func_179446_a(var5, this.taskOwner.getAITarget());
}
}
}
}
super.startExecuting();
}
protected void func_179446_a(EntityCreature p_179446_1_, EntityLivingBase p_179446_2_)
{
p_179446_1_.setAttackTarget(p_179446_2_);
}
}