package net.minecraft.entity.ai;
import java.util.Iterator;
import java.util.List;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.passive.EntityVillager;
import net.minecraft.util.Vec3;
public class EntityAIPlay extends EntityAIBase
{
private EntityVillager villagerObj;
private EntityLivingBase targetVillager;
private double field_75261_c;
private int playTime;
private static final String __OBFID = "CL_00001605";
public EntityAIPlay(EntityVillager p_i1646_1_, double p_i1646_2_)
{
this.villagerObj = p_i1646_1_;
this.field_75261_c = p_i1646_2_;
this.setMutexBits(1);
}
/**
* Returns whether the EntityAIBase should begin execution.
*/
public boolean shouldExecute()
{
if (this.villagerObj.getGrowingAge() >= 0)
{
return false;
}
else if (this.villagerObj.getRNG().nextInt(400) != 0)
{
return false;
}
else
{
List list = this.villagerObj.worldObj.getEntitiesWithinAABB(EntityVillager.class, this.villagerObj.boundingBox.expand(6.0D, 3.0D, 6.0D));
double d0 = Double.MAX_VALUE;
Iterator iterator = list.iterator();
while (iterator.hasNext())
{
EntityVillager entityvillager = (EntityVillager)iterator.next();
if (entityvillager != this.villagerObj && !entityvillager.isPlaying() && entityvillager.getGrowingAge() < 0)
{
double d1 = entityvillager.getDistanceSqToEntity(this.villagerObj);
if (d1 <= d0)
{
d0 = d1;
this.targetVillager = entityvillager;
}
}
}
if (this.targetVillager == null)
{
Vec3 vec3 = RandomPositionGenerator.findRandomTarget(this.villagerObj, 16, 3);
if (vec3 == null)
{
return false;
}
}
return true;
}
}
/**
* Returns whether an in-progress EntityAIBase should continue executing
*/
public boolean continueExecuting()
{
return this.playTime > 0;
}
/**
* Execute a one shot task or start executing a continuous task
*/
public void startExecuting()
{
if (this.targetVillager != null)
{
this.villagerObj.setPlaying(true);
}
this.playTime = 1000;
}
/**
* Resets the task
*/
public void resetTask()
{
this.villagerObj.setPlaying(false);
this.targetVillager = null;
}
/**
* Updates the task
*/
public void updateTask()
{
--this.playTime;
if (this.targetVillager != null)
{
if (this.villagerObj.getDistanceSqToEntity(this.targetVillager) > 4.0D)
{
this.villagerObj.getNavigator().tryMoveToEntityLiving(this.targetVillager, this.field_75261_c);
}
}
else if (this.villagerObj.getNavigator().noPath())
{
Vec3 vec3 = RandomPositionGenerator.findRandomTarget(this.villagerObj, 16, 3);
if (vec3 == null)
{
return;
}
this.villagerObj.getNavigator().tryMoveToXYZ(vec3.xCoord, vec3.yCoord, vec3.zCoord, this.field_75261_c);
}
}
}