/** * Modifieds the given speed value based on the current parameters. * * @param toModify * The speed value to modify * @return The modified speed */ public float modifiedSpeed(float toModify) { return toModify * speedModifier(); }
/** * @return The modified movement speed as given by {@link #baseSpeed()} multiplied by {@link #speedModifier()} */ public float speed() { return modifiedSpeed(baseSpeed); }
if (ticksCountGuard >= 30) { ticksCountGuard = 0; npc.getNavigator().getDefaultParameters().distanceMargin(SentinelPlugin.instance.guardDistanceMargin); npc.getNavigator().getDefaultParameters().range(100); npc.getNavigator().getDefaultParameters().stuckAction(TeleportStuckAction.INSTANCE); npc.getNavigator().setTarget(SentinelUtilities.pickNear(player.getLocation(), SentinelPlugin.instance.guardDistanceSelectionRange)); npc.getNavigator().getLocalParameters().speedModifier((float) speed); chased = true; npc.getNavigator().getDefaultParameters().stuckAction(TeleportStuckAction.INSTANCE); npc.getNavigator().setTarget(near); npc.getNavigator().getLocalParameters().speedModifier((float) speed); needsSafeReturn = false; chased = false;
return; getNPC().getNavigator().getDefaultParameters().stuckAction(null); getNPC().getNavigator().setTarget(entity, false); getNPC().getNavigator().getLocalParameters().speedModifier((float) sentinel.speed);
@Override public void run(final NPC npc, Block point, ListIterator<Block> path) { current = path; if (added || npc.data().<Boolean> get("running-ladder", false)) { added = true; return; } Runnable callback = new Runnable() { Location dummy = new Location(null, 0, 0, 0); @Override public void run() { if (npc.getEntity().getLocation(dummy).getBlock().getType() == Material.LADDER && current.next().getY() > current.previous().getY()) { npc.getEntity().setVelocity(npc.getEntity().getVelocity().setY(0.3)); } } }; npc.getNavigator().getLocalParameters().addSingleUseCallback(new NavigatorCallback() { @Override public void onCompletion(CancelReason cancelReason) { npc.data().set("running-ladder", false); } }); npc.getNavigator().getLocalParameters().addRunCallback(callback); added = true; } }
@Override public boolean shouldExecute() { if (targets.size() == 0 || !npc.isSpawned()) return false; Collection<Entity> nearby = npc.getEntity().getNearbyEntities(radius, radius, radius); this.target = null; for (Entity entity : nearby) { if (targets.contains(entity.getType())) { target = entity; break; } } if (target != null) { npc.getNavigator().setTarget(target, aggressive); npc.getNavigator().getLocalParameters().addSingleUseCallback(new NavigatorCallback() { @Override public void onCompletion(CancelReason cancelReason) { reason = cancelReason; finished = true; } }); return true; } return false; }
/** * Causes the NPC to immediately path over to a position. */ public void pathTo(Location target) { pauseWaypoints(); pathingTo = target; npc.getNavigator().getDefaultParameters().distanceMargin(1.5); getNPC().getNavigator().setTarget(target); chasing = null; needsSafeReturn = true; }
@Override public boolean shouldExecute() { boolean executing = !npc.getNavigator().isNavigating() && target != null; if (executing) { npc.getNavigator().setTarget(target); npc.getNavigator().getLocalParameters().addSingleUseCallback(new NavigatorCallback() { @Override public void onCompletion(CancelReason cancelReason) { finished = true; reason = cancelReason; } }); } return executing; } }