From 77d34b53e61552e6db64fa3cf9ff30432517e884 Mon Sep 17 00:00:00 2001 From: fullwall Date: Sun, 21 Apr 2024 23:24:28 +0800 Subject: [PATCH] Fix inconsistency in canNavigate where flyable/living status was not respected --- .../java/net/citizensnpcs/npc/ai/CitizensNavigator.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/main/src/main/java/net/citizensnpcs/npc/ai/CitizensNavigator.java b/main/src/main/java/net/citizensnpcs/npc/ai/CitizensNavigator.java index 0a7eca469..2b34e126d 100644 --- a/main/src/main/java/net/citizensnpcs/npc/ai/CitizensNavigator.java +++ b/main/src/main/java/net/citizensnpcs/npc/ai/CitizensNavigator.java @@ -31,6 +31,7 @@ import net.citizensnpcs.api.ai.event.NavigationReplaceEvent; import net.citizensnpcs.api.ai.event.NavigationStuckEvent; import net.citizensnpcs.api.ai.event.NavigatorCallback; import net.citizensnpcs.api.astar.pathfinder.DoorExaminer; +import net.citizensnpcs.api.astar.pathfinder.FlyingBlockExaminer; import net.citizensnpcs.api.astar.pathfinder.MinecraftBlockExaminer; import net.citizensnpcs.api.astar.pathfinder.SwimmingExaminer; import net.citizensnpcs.api.npc.NPC; @@ -93,7 +94,10 @@ public class CitizensNavigator implements Navigator, Runnable { @Override public boolean canNavigateTo(Location dest, NavigatorParameters params) { - if (defaultParams.useNewPathfinder()) { + if (defaultParams.useNewPathfinder() || !(npc.getEntity() instanceof LivingEntity)) { + if (npc.isFlyable()) { + params.examiner(new FlyingBlockExaminer()); + } AStarPlanner planner = new AStarPlanner(params, npc.getStoredLocation(), dest); planner.tick(Setting.MAXIMUM_ASTAR_ITERATIONS.asInt(), Setting.MAXIMUM_ASTAR_ITERATIONS.asInt()); return planner.plan != null;