use of net.minecraft.pathfinding.Path in project pnc-repressurized by TeamPneumatic.
the class PathfinderDrone method findPath.
@Nullable
private Path findPath(PathPoint pathFrom, PathPoint pathTo, float maxDistance) {
pathFrom.totalPathDistance = 0.0F;
pathFrom.distanceToNext = pathFrom.distanceManhattan(pathTo);
pathFrom.distanceToTarget = pathFrom.distanceToNext;
this.path.clearPath();
this.closedSet.clear();
this.path.addPoint(pathFrom);
PathPoint pathpoint = pathFrom;
int i = 0;
while (!this.path.isPathEmpty()) {
++i;
// if (i >= 200) Remove the pathpoint constraint the super class has.
// {
// break;
// }
PathPoint pathpoint1 = this.path.dequeue();
if (pathpoint1.equals(pathTo)) {
pathpoint = pathTo;
break;
}
if (pathpoint1.distanceManhattan(pathTo) < pathpoint.distanceManhattan(pathTo)) {
pathpoint = pathpoint1;
}
pathpoint1.visited = true;
int j = this.nodeProcessor.findPathOptions(this.pathOptions, pathpoint1, pathTo, maxDistance);
for (int k = 0; k < j; ++k) {
PathPoint pathpoint2 = this.pathOptions[k];
float f = pathpoint1.distanceManhattan(pathpoint2);
pathpoint2.distanceFromOrigin = pathpoint1.distanceFromOrigin + f;
pathpoint2.cost = f + pathpoint2.costMalus;
float f1 = pathpoint1.totalPathDistance + pathpoint2.cost;
if (pathpoint2.distanceFromOrigin < maxDistance && (!pathpoint2.isAssigned() || f1 < pathpoint2.totalPathDistance)) {
pathpoint2.previous = pathpoint1;
pathpoint2.totalPathDistance = f1;
pathpoint2.distanceToNext = pathpoint2.distanceManhattan(pathTo) + pathpoint2.costMalus;
if (pathpoint2.isAssigned()) {
this.path.changeDistance(pathpoint2, pathpoint2.totalPathDistance + pathpoint2.distanceToNext);
} else {
pathpoint2.distanceToTarget = pathpoint2.totalPathDistance + pathpoint2.distanceToNext;
this.path.addPoint(pathpoint2);
}
}
}
}
if (pathpoint == pathFrom) {
return null;
} else {
Path path = this.createPath(pathFrom, pathpoint);
return path;
}
}
Aggregations