From 0c139a27d4dff62afc49bf1519efb1db7c613677 Mon Sep 17 00:00:00 2001 From: fullwall Date: Sun, 12 Jan 2014 19:47:05 +0800 Subject: [PATCH] Better pathfinding debug --- .../npc/ai/AStarNavigationStrategy.java | 16 +++++++++++----- .../npc/ai/FlyingAStarNavigationStrategy.java | 7 +++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java b/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java index 387f3f996..f809c0299 100644 --- a/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java +++ b/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java @@ -15,6 +15,7 @@ import net.citizensnpcs.util.Util; import org.bukkit.Effect; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.util.Vector; public class AStarNavigationStrategy extends AbstractPathStrategy { @@ -50,6 +51,9 @@ public class AStarNavigationStrategy extends AbstractPathStrategy { @Override public void stop() { + if (plan != null && Setting.DEBUG_PATHFINDING.asBoolean()) { + plan.debugEnd(); + } plan = null; } @@ -61,9 +65,6 @@ public class AStarNavigationStrategy extends AbstractPathStrategy { if (npc.getEntity().getLocation(NPC_LOCATION).toVector().distanceSquared(vector) <= params.distanceMargin()) { plan.update(npc); if (plan.isComplete()) { - if (Setting.DEBUG_PATHFINDING.asBoolean()) { - plan.debugEnd(); - } return true; } vector = plan.getCurrentVector(); @@ -76,12 +77,17 @@ public class AStarNavigationStrategy extends AbstractPathStrategy { double distance = xzDistance + dY * dY; if (Setting.DEBUG_PATHFINDING.asBoolean()) { npc.getEntity().getWorld() - .playEffect(vector.toLocation(npc.getEntity().getWorld()), Effect.ENDER_SIGNAL, 0); + .playEffect(vector.toLocation(npc.getEntity().getWorld()), Effect.ENDER_SIGNAL, 0); } if (distance > 0 && dY > 0 && dY < 1 && xzDistance <= 2.75) { NMS.setShouldJump(npc.getEntity()); } - NMS.setDestination(npc.getEntity(), vector.getX(), vector.getY(), vector.getZ(), params.speed()); + double destX = vector.getX(), destZ = vector.getZ(); + if (npc.getEntity().getWorld().getBlockAt(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ()).getType() == Material.LADDER) { + destX += 0.5; + destZ += 0.5; + } + NMS.setDestination(npc.getEntity(), destX, vector.getY(), destZ, params.speed()); params.run(); plan.run(npc); return false; diff --git a/src/main/java/net/citizensnpcs/npc/ai/FlyingAStarNavigationStrategy.java b/src/main/java/net/citizensnpcs/npc/ai/FlyingAStarNavigationStrategy.java index 626ff8b8d..6e91ac569 100644 --- a/src/main/java/net/citizensnpcs/npc/ai/FlyingAStarNavigationStrategy.java +++ b/src/main/java/net/citizensnpcs/npc/ai/FlyingAStarNavigationStrategy.java @@ -1,5 +1,6 @@ package net.citizensnpcs.npc.ai; +import net.citizensnpcs.Settings.Setting; import net.citizensnpcs.api.ai.NavigatorParameters; import net.citizensnpcs.api.ai.TargetType; import net.citizensnpcs.api.ai.event.CancelReason; @@ -36,6 +37,9 @@ public class FlyingAStarNavigationStrategy extends AbstractPathStrategy { setCancelReason(CancelReason.STUCK); } else { vector = plan.getCurrentVector(); + if (Setting.DEBUG_PATHFINDING.asBoolean()) { + plan.debug(); + } } } @@ -46,6 +50,9 @@ public class FlyingAStarNavigationStrategy extends AbstractPathStrategy { @Override public void stop() { + if (plan != null && Setting.DEBUG_PATHFINDING.asBoolean()) { + plan.debugEnd(); + } plan = null; }