Pathfinder Manager
com.originmint.managers.PathfinderManager exposes the same experimental native pathfinder used by JavaScript and Node macros on every supported client family. It never mines, places blocks, or changes inventory.
import com.originmint.managers.PathfinderManager;
PathfinderManager path = PathfinderManager.getInstance();path.goTo(120.5, 70, -32.5);path.follow("FriendName", 3.0, true);if (path.isActive()) path.stop();Methods
getInstance()returns the manager.goTo(x, y, z)walks, sprinting, with the route drawn. It does not fly.goTo(x, y, z, allowFly, sprint, showPath)controls those options explicitly.follow(player)follows that name at three blocks. An empty name follows the nearest available player.follow(player, distance, sprint)selects standoff distance and sprint behavior.stop()stops only the route owned by the calling plugin.isActive()reports whether any pathfinder route is active.
Options
allowFly— defaults tofalse. Flight is opt-in: passtrueto the six-argumentgoToto allow it. It is ignored when the player cannot fly, so asking for it in survival simply walks.followtakes no flight argument and therefore always walks.sprint— defaults totrue. Sprints on longer straight runs.showPath— defaults totrue. Draws the remaining route in the world.
goTo and follow return false only when a route cannot be started at all, such as with no world
loaded. A destination that turns out to be unreachable still returns true and gives up on its own,
so poll isActive() to know when it has finished.
Calling goTo again with the same destination continues the current run instead of restarting it,
which makes it safe to call from a per-tick handler.
Routes use walking, steps, jumps, falls, ladders, water and creative flight. The pathfinder never breaks or places blocks and never touches inventory, and it moves the player by holding keys and turning the camera, so it looks like a player rather than a teleport.
Only one route owns movement at a time, so starting one replaces another plugin’s. Mint resolves the calling plugin ID from its class loader; calling this manager outside a loaded plugin throws. Disabling or unloading your plugin stops its route and releases its keys automatically — calling stop() from onDisable is still worth doing.