package net.aufdemrand.denizen.utilities;
import net.aufdemrand.denizen.objects.dLocation;
import net.citizensnpcs.api.astar.AStarMachine;
import net.citizensnpcs.api.astar.pathfinder.*;
import org.bukkit.Location;
import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.List;
/**
* TODO: Potentially a separate implementation?
*/
public class PathFinder {
public static AStarMachine ASTAR = AStarMachine.createWithDefaultStorage();
public static List<dLocation> getPath(Location start, Location dest) {
VectorGoal goal = new VectorGoal(dest, 1);
Path plan = (Path) ASTAR.runFully(goal,
new VectorNode(goal, start, new ChunkBlockSource(start, 100), new MinecraftBlockExaminer()),
50000);
if (plan == null || plan.isComplete()) {
return new ArrayList<dLocation>();
}
else {
List<dLocation> path = new ArrayList<dLocation>();
while (!plan.isComplete()) {
Vector v = plan.getCurrentVector();
path.add(new dLocation(start.getWorld(), v.getX(), v.getY(), v.getZ()));
plan.update(null);
}
return path;
}
}
}