package net.minecraft.entity.ai;
import net.minecraft.entity.EntityCreature;
import net.minecraft.util.MathHelper;
import net.minecraft.village.Village;
import net.minecraft.village.VillageDoorInfo;
public class EntityAIRestrictOpenDoor extends EntityAIBase
{
private EntityCreature entityObj;
private VillageDoorInfo frontDoor;
private static final String __OBFID = "CL_00001610";
public EntityAIRestrictOpenDoor(EntityCreature p_i1651_1_)
{
this.entityObj = p_i1651_1_;
}
/**
* Returns whether the EntityAIBase should begin execution.
*/
public boolean shouldExecute()
{
if (this.entityObj.worldObj.isDaytime())
{
return false;
}
else
{
Village village = this.entityObj.worldObj.villageCollectionObj.findNearestVillage(MathHelper.floor_double(this.entityObj.posX), MathHelper.floor_double(this.entityObj.posY), MathHelper.floor_double(this.entityObj.posZ), 16);
if (village == null)
{
return false;
}
else
{
this.frontDoor = village.findNearestDoor(MathHelper.floor_double(this.entityObj.posX), MathHelper.floor_double(this.entityObj.posY), MathHelper.floor_double(this.entityObj.posZ));
return this.frontDoor == null ? false : (double)this.frontDoor.getInsideDistanceSquare(MathHelper.floor_double(this.entityObj.posX), MathHelper.floor_double(this.entityObj.posY), MathHelper.floor_double(this.entityObj.posZ)) < 2.25D;
}
}
}
/**
* Returns whether an in-progress EntityAIBase should continue executing
*/
public boolean continueExecuting()
{
return this.entityObj.worldObj.isDaytime() ? false : !this.frontDoor.isDetachedFromVillageFlag && this.frontDoor.isInside(MathHelper.floor_double(this.entityObj.posX), MathHelper.floor_double(this.entityObj.posZ));
}
/**
* Execute a one shot task or start executing a continuous task
*/
public void startExecuting()
{
this.entityObj.getNavigator().setBreakDoors(false);
this.entityObj.getNavigator().setEnterDoors(false);
}
/**
* Resets the task
*/
public void resetTask()
{
this.entityObj.getNavigator().setBreakDoors(true);
this.entityObj.getNavigator().setEnterDoors(true);
this.frontDoor = null;
}
/**
* Updates the task
*/
public void updateTask()
{
this.frontDoor.incrementDoorOpeningRestrictionCounter();
}
}