/** * Returns whether or not a citizen is heading to a specific location. * * @param citizen Citizen you want to check * @param x X-coordinate * @param z Z-coordinate * @return True if citizen heads to (x, z), otherwise false */ public static boolean isPathingTo(@NotNull final EntityCitizen citizen, final int x, final int z) { final PathPoint pathpoint = citizen.getNavigator().getPath().getFinalPathPoint(); return pathpoint != null && pathpoint.x == x && pathpoint.z == z; }
private boolean isPathOnHighGround() { if (this.navigator != null && this.navigator.getPath() != null && this.navigator.getPath().getFinalPathPoint() != null) { BlockPos target = new BlockPos(this.navigator.getPath().getFinalPathPoint().x, this.navigator.getPath().getFinalPathPoint().y, this.navigator.getPath().getFinalPathPoint().z); BlockPos siren = new BlockPos(this); if (world.isAirBlock(siren.up()) && world.isAirBlock(target.up()) && target.getY() >= siren.getY()) { return true; } } return false; }
@Override public boolean shouldExecute() { if (!this.mob.isInWater() || this.mob.isRiding() || this.mob.isBeingRidden()) { return false; } Path path = this.mob.getNavigator().getPath(); if (this.mob.getRNG().nextFloat() < 0.15F ||path != null && path.getFinalPathPoint() != null && this.mob.getDistanceSq((double)path.getFinalPathPoint().x, (double)path.getFinalPathPoint().y, (double)path.getFinalPathPoint().z) < 3) { if (path != null && path.getFinalPathPoint() != null || !this.mob.getNavigator().noPath() && !isDirectPathBetweenPoints(this.mob, this.mob.getPositionVector(), new Vec3d(path.getFinalPathPoint().x, path.getFinalPathPoint().y, path.getFinalPathPoint().z))) { this.mob.getNavigator().clearPath(); } if (this.mob.getNavigator().noPath()) { BlockPos vec3 = this.findWaterTarget(); if (vec3 != null) { this.mob.getNavigator().tryMoveToXYZ(vec3.getX(), vec3.getY(), vec3.getZ(), 1.0); return true; } } } return false; }
private boolean isRunningAway() { if (runningAwayTo == null) { return false; } if (getNavigator().noPath()) { runningAwayTo = null; return false; } final Path path = getNavigator().getPath(); PathPoint dest = path != null ? path.getFinalPathPoint() : null; return dest != null && dest.equals(runningAwayTo); }
@Override public boolean shouldExecute() { if (!this.mob.isInWater()) { return false; } if (this.mob.getRNG().nextFloat() < 0.5F) { Path path = this.mob.getNavigator().getPath(); if (path != null && path.getFinalPathPoint() != null || !this.mob.getNavigator().noPath() && !this.mob.isDirectPathBetweenPoints(this.mob.getPositionVector(), new Vec3d(path.getFinalPathPoint().x, path.getFinalPathPoint().y, path.getFinalPathPoint().z))) { this.mob.getNavigator().clearPath(); } if (this.mob.getNavigator().noPath()) { Vec3d vec3 = this.findWaterTarget(); if (vec3 != null) { this.mob.getNavigator().tryMoveToXYZ(vec3.x, vec3.y, vec3.z, 1.0); return true; } } } return false; }
private boolean isStuck() { return !this.isTamed() && (!this.getNavigator().noPath() && (this.getNavigator().getPath() == null || this.getNavigator().getPath().getFinalPathPoint() != null && this.getDistanceSq(new BlockPos(this.getNavigator().getPath().getFinalPathPoint().x, this.getNavigator().getPath().getFinalPathPoint().y, this.getNavigator().getPath().getFinalPathPoint().z)) > 15) || this.airTarget != null) && ticksStill > 80 && !this.isHovering() && canMove(); }
/** * Checks to see if this entity can find a short path to the given target. */ private boolean canEasilyReach(EntityLivingBase target) { this.targetSearchDelay = 10 + this.taskOwner.getRNG().nextInt(5); Path path = this.taskOwner.getNavigator().getPathToEntityLiving(target); if (path == null) { return false; } else { PathPoint pathpoint = path.getFinalPathPoint(); if (pathpoint == null) { return false; } else { int i = pathpoint.x - MathHelper.floor(target.posX); int j = pathpoint.z - MathHelper.floor(target.posZ); return (double) (i * i + j * j) <= 2.25D; } } }
@Override public void updateTask() { Path currentPath = this.dinosaur.getNavigator().getPath(); if (this.path != null) { PathPoint finalPathPoint = this.path.getFinalPathPoint(); if (currentPath == null || !currentPath.getFinalPathPoint().equals(finalPathPoint)) { Path path = this.dinosaur.getNavigator().getPathToXYZ(finalPathPoint.x, finalPathPoint.y, finalPathPoint.z); this.dinosaur.getNavigator().setPath(path, 1.0); this.path = path; } } if (this.giveUpTime <= 0 || (this.dinosaur.getStayAwakeTime() <= 0 && (this.path == null || this.path.isFinished()))) { this.dinosaur.setSleeping(true); } this.giveUpTime--; }
@Override public boolean shouldExecute() { if (!this.mob.isInSand() || this.mob.isRiding() || this.mob.isBeingRidden()) { return false; } if (this.mob.getRNG().nextFloat() < 0.5F) { Path path = this.mob.getNavigator().getPath(); if (path != null || !this.mob.getNavigator().noPath() && !isDirectPathBetweenPoints(this.mob, this.mob.getPositionVector(), new Vec3d(path.getFinalPathPoint().x, path.getFinalPathPoint().y, path.getFinalPathPoint().z))) { this.mob.getNavigator().clearPath(); } if (this.mob.getNavigator().noPath()) { BlockPos vec3 = this.findSandTarget(); if (vec3 != null) { this.mob.getNavigator().tryMoveToXYZ(vec3.getX(), vec3.getY(), vec3.getZ(), 1.0); return true; } } } return false; }
private boolean runAway() { if (!useRunAwayTactic.get()) { return false; } runAwayTimer = 40; Vec3d targetDir = new Vec3d(attackTarget.posX, attackTarget.getEntityBoundingBox().minY, attackTarget.posZ); Vec3d entityPos = EntityUtil.getEntityPosition(entityHost); targetDir = entityPos.subtract(targetDir).normalize().scale(attackRange.get() * 0.9).add(entityPos); BlockPos probePoint = new BlockPos((int) Math.round(targetDir.x), (int) Math.round(entityHost.posY), (int) Math.round(targetDir.z)); World world = entityHost.getEntityWorld(); BlockPos clearGround = SpawnUtil.findClearGround(world, probePoint); if (clearGround == null) { return false; } boolean res = getNavigator().tryMoveToXYZ(clearGround.getX() + .5, clearGround.getY(), clearGround.getZ() + .5, mountedEntityMoveSpeed.get()); if (getNavigator().noPath()) { runningAwayTo = null; } else { final Path path = getNavigator().getPath(); runningAwayTo = path != null ? path.getFinalPathPoint() : null; } return res; }
this.delayCounter += failedPathFindingPenalty; if (this.entity.getNavigator().getPath() != null) { net.minecraft.pathfinding.PathPoint finalPathPoint = this.entity.getNavigator().getPath().getFinalPathPoint(); if (finalPathPoint != null && entitylivingbase.getDistanceSq(finalPathPoint.x, finalPathPoint.y, finalPathPoint.z) < 1) failedPathFindingPenalty = 0;
this.delayCounter += failedPathFindingPenalty; if (this.chicken.getNavigator().getPath() != null) { net.minecraft.pathfinding.PathPoint finalPathPoint = this.chicken.getNavigator().getPath().getFinalPathPoint(); if (finalPathPoint != null && entitylivingbase.getDistanceSq(finalPathPoint.x, finalPathPoint.y, finalPathPoint.z) < 1) failedPathFindingPenalty = 0;
this.delayCounter += failedPathFindingPenalty; if (this.attacker.getNavigator().getPath() != null) { net.minecraft.pathfinding.PathPoint finalPathPoint = this.attacker.getNavigator().getPath().getFinalPathPoint(); if (finalPathPoint != null && entitylivingbase.getDistanceSq(finalPathPoint.x, finalPathPoint.y, finalPathPoint.z) < 1) failedPathFindingPenalty = 0;
final Path path = attacker.getNavigator().getPath(); if (path != null) { PathPoint finalPathPoint = path.getFinalPathPoint(); if (finalPathPoint != null && entitylivingbase.getDistanceSq(finalPathPoint.x, finalPathPoint.y, finalPathPoint.z) < 1) failedPathFindingPenalty = 0;
PathPoint finalPathPoint = path.getFinalPathPoint(); if (finalPathPoint != null && target.getDistanceSq(finalPathPoint.x, finalPathPoint.y, finalPathPoint.z) < 1) { failedPathFindingPenalty = 0;
attacker.getNavigator().tryMoveToEntityLiving(entitylivingbase, speedTowardsTarget); if (attacker.getNavigator().getPath() != null) { PathPoint finalPathPoint = attacker.getNavigator().getPath().getFinalPathPoint(); if (finalPathPoint != null && entitylivingbase.getDistanceSq(finalPathPoint.x, finalPathPoint.y, finalPathPoint.z) < 1D) failedPathFindingPenalty = 0;
this.delayCounter += failedPathFindingPenalty; if (this.dragon.getNavigator().getPath() != null) { net.minecraft.pathfinding.PathPoint finalPathPoint = this.dragon.getNavigator().getPath().getFinalPathPoint(); if (finalPathPoint != null && entity.getDistanceSq(finalPathPoint.x, finalPathPoint.y, finalPathPoint.z) < 1) failedPathFindingPenalty = 0;
attacker.getNavigator().tryMoveToEntityLiving(entitylivingbase, speedTowardsTarget); if (attacker.getNavigator().getPath() != null) { PathPoint finalPathPoint = attacker.getNavigator().getPath().getFinalPathPoint(); if (finalPathPoint != null && entitylivingbase.getDistanceSq(finalPathPoint.x, finalPathPoint.y, finalPathPoint.z) < 1D) failedPathFindingPenalty = 0;
text.println("Index: " + path.getCurrentPathIndex()); PathPoint finalPoint = path.getFinalPathPoint(); text.println("Final point: " + finalPoint);
pathResult.setStatus(PathResult.Status.IN_PROGRESS_FOLLOWING); final PathPoint p = getPath().getFinalPathPoint(); if (p != null && destination == null)