package net.minecraft.pathfinding; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.util.BlockPos; import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class PathNavigateClimber extends PathNavigateGround { private BlockPos field_179696_f; private static final String __OBFID = "CL_00002245"; public PathNavigateClimber(EntityLiving p_i45874_1_, World worldIn) { super(p_i45874_1_, worldIn); } public PathEntity func_179680_a(BlockPos p_179680_1_) { this.field_179696_f = p_179680_1_; return super.func_179680_a(p_179680_1_); } /** * Returns the path to the given EntityLiving. Args : entity */ public PathEntity getPathToEntityLiving(Entity p_75494_1_) { this.field_179696_f = new BlockPos(p_75494_1_); return super.getPathToEntityLiving(p_75494_1_); } /** * Try to find and set a path to EntityLiving. Returns true if successful. Args : entity, speed */ public boolean tryMoveToEntityLiving(Entity p_75497_1_, double p_75497_2_) { PathEntity var4 = this.getPathToEntityLiving(p_75497_1_); if (var4 != null) { return this.setPath(var4, p_75497_2_); } else { this.field_179696_f = new BlockPos(p_75497_1_); this.speed = p_75497_2_; return true; } } public void onUpdateNavigation() { if (!this.noPath()) { super.onUpdateNavigation(); } else { if (this.field_179696_f != null) { double var1 = (double)(this.theEntity.width * this.theEntity.width); if (this.theEntity.func_174831_c(this.field_179696_f) >= var1 && (this.theEntity.posY <= (double)this.field_179696_f.getY() || this.theEntity.func_174831_c(new BlockPos(this.field_179696_f.getX(), MathHelper.floor_double(this.theEntity.posY), this.field_179696_f.getZ())) >= var1)) { this.theEntity.getMoveHelper().setMoveTo((double)this.field_179696_f.getX(), (double)this.field_179696_f.getY(), (double)this.field_179696_f.getZ(), this.speed); } else { this.field_179696_f = null; } } } } }