package net.minecraft.entity.ai;
import net.minecraft.block.Block;
import net.minecraft.block.BlockBed;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.passive.EntityOcelot;
import net.minecraft.init.Blocks;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public class EntityAIOcelotSit extends EntityAIMoveToBlock
{
private final EntityOcelot field_151493_a;
private static final String __OBFID = "CL_00001601";
public EntityAIOcelotSit(EntityOcelot p_i45315_1_, double p_i45315_2_)
{
super(p_i45315_1_, p_i45315_2_, 8);
this.field_151493_a = p_i45315_1_;
}
/**
* Returns whether the EntityAIBase should begin execution.
*/
public boolean shouldExecute()
{
return this.field_151493_a.isTamed() && !this.field_151493_a.isSitting() && super.shouldExecute();
}
/**
* Returns whether an in-progress EntityAIBase should continue executing
*/
public boolean continueExecuting()
{
return super.continueExecuting();
}
/**
* Execute a one shot task or start executing a continuous task
*/
public void startExecuting()
{
super.startExecuting();
this.field_151493_a.getAISit().setSitting(false);
}
/**
* Resets the task
*/
public void resetTask()
{
super.resetTask();
this.field_151493_a.setSitting(false);
}
/**
* Updates the task
*/
public void updateTask()
{
super.updateTask();
this.field_151493_a.getAISit().setSitting(false);
if (!this.func_179487_f())
{
this.field_151493_a.setSitting(false);
}
else if (!this.field_151493_a.isSitting())
{
this.field_151493_a.setSitting(true);
}
}
protected boolean func_179488_a(World worldIn, BlockPos p_179488_2_)
{
if (!worldIn.isAirBlock(p_179488_2_.offsetUp()))
{
return false;
}
else
{
IBlockState var3 = worldIn.getBlockState(p_179488_2_);
Block var4 = var3.getBlock();
if (var4 == Blocks.chest)
{
TileEntity var5 = worldIn.getTileEntity(p_179488_2_);
if (var5 instanceof TileEntityChest && ((TileEntityChest)var5).numPlayersUsing < 1)
{
return true;
}
}
else
{
if (var4 == Blocks.lit_furnace)
{
return true;
}
if (var4 == Blocks.bed && var3.getValue(BlockBed.PART_PROP) != BlockBed.EnumPartType.HEAD)
{
return true;
}
}
return false;
}
}
}