package net.minecraft.entity.ai;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.world.World;
public class EntityAIOcelotAttack extends EntityAIBase
{
World theWorld;
EntityLiving theEntity;
EntityLivingBase theVictim;
int attackCountdown;
private static final String __OBFID = "CL_00001600";
public EntityAIOcelotAttack(EntityLiving p_i1641_1_)
{
this.theEntity = p_i1641_1_;
this.theWorld = p_i1641_1_.worldObj;
this.setMutexBits(3);
}
/**
* Returns whether the EntityAIBase should begin execution.
*/
public boolean shouldExecute()
{
EntityLivingBase entitylivingbase = this.theEntity.getAttackTarget();
if (entitylivingbase == null)
{
return false;
}
else
{
this.theVictim = entitylivingbase;
return true;
}
}
/**
* Returns whether an in-progress EntityAIBase should continue executing
*/
public boolean continueExecuting()
{
return !this.theVictim.isEntityAlive() ? false : (this.theEntity.getDistanceSqToEntity(this.theVictim) > 225.0D ? false : !this.theEntity.getNavigator().noPath() || this.shouldExecute());
}
/**
* Resets the task
*/
public void resetTask()
{
this.theVictim = null;
this.theEntity.getNavigator().clearPathEntity();
}
/**
* Updates the task
*/
public void updateTask()
{
this.theEntity.getLookHelper().setLookPositionWithEntity(this.theVictim, 30.0F, 30.0F);
double d0 = (double)(this.theEntity.width * 2.0F * this.theEntity.width * 2.0F);
double d1 = this.theEntity.getDistanceSq(this.theVictim.posX, this.theVictim.boundingBox.minY, this.theVictim.posZ);
double d2 = 0.8D;
if (d1 > d0 && d1 < 16.0D)
{
d2 = 1.33D;
}
else if (d1 < 225.0D)
{
d2 = 0.6D;
}
this.theEntity.getNavigator().tryMoveToEntityLiving(this.theVictim, d2);
this.attackCountdown = Math.max(this.attackCountdown - 1, 0);
if (d1 <= d0)
{
if (this.attackCountdown <= 0)
{
this.attackCountdown = 20;
this.theEntity.attackEntityAsMob(this.theVictim);
}
}
}
}