package net.minecraft.entity.ai; import net.minecraft.block.Block; import net.minecraft.block.BlockBed; import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntityChest; import net.minecraft.world.World; public class EntityAIOcelotSit extends EntityAIBase { private final EntityOcelot field_151493_a; private final double field_151491_b; private int field_151492_c; private int field_151489_d; private int field_151490_e; private int field_151487_f; private int field_151488_g; private int field_151494_h; private static final String __OBFID = "CL_00001601"; public EntityAIOcelotSit(EntityOcelot p_i45315_1_, double p_i45315_2_) { this.field_151493_a = p_i45315_1_; this.field_151491_b = p_i45315_2_; this.setMutexBits(5); } /** * Returns whether the EntityAIBase should begin execution. */ public boolean shouldExecute() { return this.field_151493_a.isTamed() && !this.field_151493_a.isSitting() && this.field_151493_a.getRNG().nextDouble() <= 0.006500000134110451D && this.func_151485_f(); } /** * Returns whether an in-progress EntityAIBase should continue executing */ public boolean continueExecuting() { return this.field_151492_c <= this.field_151490_e && this.field_151489_d <= 60 && this.func_151486_a(this.field_151493_a.worldObj, this.field_151487_f, this.field_151488_g, this.field_151494_h); } /** * Execute a one shot task or start executing a continuous task */ public void startExecuting() { this.field_151493_a.getNavigator().tryMoveToXYZ((double)((float)this.field_151487_f) + 0.5D, (double)(this.field_151488_g + 1), (double)((float)this.field_151494_h) + 0.5D, this.field_151491_b); this.field_151492_c = 0; this.field_151489_d = 0; this.field_151490_e = this.field_151493_a.getRNG().nextInt(this.field_151493_a.getRNG().nextInt(1200) + 1200) + 1200; this.field_151493_a.getAISit().setSitting(false); } /** * Resets the task */ public void resetTask() { this.field_151493_a.setSitting(false); } /** * Updates the task */ public void updateTask() { ++this.field_151492_c; this.field_151493_a.getAISit().setSitting(false); if (this.field_151493_a.getDistanceSq((double)this.field_151487_f, (double)(this.field_151488_g + 1), (double)this.field_151494_h) > 1.0D) { this.field_151493_a.setSitting(false); this.field_151493_a.getNavigator().tryMoveToXYZ((double)((float)this.field_151487_f) + 0.5D, (double)(this.field_151488_g + 1), (double)((float)this.field_151494_h) + 0.5D, this.field_151491_b); ++this.field_151489_d; } else if (!this.field_151493_a.isSitting()) { this.field_151493_a.setSitting(true); } else { --this.field_151489_d; } } private boolean func_151485_f() { int i = (int)this.field_151493_a.posY; double d0 = 2.147483647E9D; for (int j = (int)this.field_151493_a.posX - 8; (double)j < this.field_151493_a.posX + 8.0D; ++j) { for (int k = (int)this.field_151493_a.posZ - 8; (double)k < this.field_151493_a.posZ + 8.0D; ++k) { if (this.func_151486_a(this.field_151493_a.worldObj, j, i, k) && this.field_151493_a.worldObj.isAirBlock(j, i + 1, k)) { double d1 = this.field_151493_a.getDistanceSq((double)j, (double)i, (double)k); if (d1 < d0) { this.field_151487_f = j; this.field_151488_g = i; this.field_151494_h = k; d0 = d1; } } } } return d0 < 2.147483647E9D; } private boolean func_151486_a(World p_151486_1_, int p_151486_2_, int p_151486_3_, int p_151486_4_) { Block block = p_151486_1_.getBlock(p_151486_2_, p_151486_3_, p_151486_4_); int l = p_151486_1_.getBlockMetadata(p_151486_2_, p_151486_3_, p_151486_4_); if (block == Blocks.chest) { TileEntityChest tileentitychest = (TileEntityChest)p_151486_1_.getTileEntity(p_151486_2_, p_151486_3_, p_151486_4_); if (tileentitychest.numPlayersUsing < 1) { return true; } } else { if (block == Blocks.lit_furnace) { return true; } if (block == Blocks.bed && !BlockBed.isBlockHeadOfBed(l)) { return true; } } return false; } }