From 33955027ffafcbcacff713a36f0199a2b7f5a880 Mon Sep 17 00:00:00 2001 From: fullwall Date: Fri, 3 Nov 2023 01:50:21 +0800 Subject: [PATCH] Check destination world matches NPC world in guided AI goal --- .../trait/waypoint/GuidedWaypointProvider.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/trait/waypoint/GuidedWaypointProvider.java b/main/src/main/java/net/citizensnpcs/trait/waypoint/GuidedWaypointProvider.java index a591b44db..8c9a0d86f 100644 --- a/main/src/main/java/net/citizensnpcs/trait/waypoint/GuidedWaypointProvider.java +++ b/main/src/main/java/net/citizensnpcs/trait/waypoint/GuidedWaypointProvider.java @@ -364,6 +364,11 @@ public class GuidedWaypointProvider implements EnumerableWaypointProvider { return false; this.target = destinations.get(Util.getFastRandom().nextInt(destinations.size())); + if (target.getLocation().getWorld().equals(npc.getEntity().getWorld())) { + target = null; + return false; + } + plan = ASTAR.runFully(new GuidedGoal(target), new GuidedNode(null, new Waypoint(npc.getStoredLocation()))); return plan != null; } @@ -436,12 +441,12 @@ public class GuidedWaypointProvider implements EnumerableWaypointProvider { @Override public Iterable getNeighbours() { PhTree source = getParent() == null ? tree : treePlusDestinations; - PhRangeQuery rq = source.rangeQuery( + PhRangeQuery query = source.rangeQuery( distance == -1 ? npc.getNavigator().getDefaultParameters().range() : distance, waypoint.getLocation().getBlockX(), waypoint.getLocation().getBlockY(), waypoint.getLocation().getBlockZ()); List neighbours = Lists.newArrayList(); - rq.forEachRemaining(n -> neighbours.add(new GuidedNode(this, n))); + query.forEachRemaining(wp -> neighbours.add(new GuidedNode(this, wp))); return neighbours; }