Change StuckAction implementation

This commit is contained in:
fullwall 2012-09-07 16:38:18 +08:00
parent 3d9ae92a8f
commit 073ee8a65f

View File

@ -141,8 +141,13 @@ public class CitizensNavigator implements Navigator {
return; return;
if (reason == CancelReason.STUCK) { if (reason == CancelReason.STUCK) {
StuckAction action = localParams.stuckAction(); StuckAction action = localParams.stuckAction();
if (action != null) if (action != null) {
action.run(npc, this); boolean shouldContinue = action.run(npc, this);
if (shouldContinue) {
stationaryTicks = 0;
return;
}
}
} }
Bukkit.getPluginManager().callEvent(new NavigationCancelEvent(this, reason)); Bukkit.getPluginManager().callEvent(new NavigationCancelEvent(this, reason));
stopNavigating(); stopNavigating();
@ -175,7 +180,7 @@ public class CitizensNavigator implements Navigator {
} }
private boolean updateStationaryStatus() { private boolean updateStationaryStatus() {
if (localParams.stationaryTicks() < 0 || executing.getTargetType() == TargetType.ENTITY) if (localParams.stationaryTicks() < 0)
return false; return false;
EntityLiving handle = npc.getHandle(); EntityLiving handle = npc.getHandle();
if (lastX == (int) handle.locX && lastY == (int) handle.locY && lastZ == (int) handle.locZ) { if (lastX == (int) handle.locX && lastY == (int) handle.locY && lastZ == (int) handle.locZ) {