Originally Posted by
immortal pie
I have updated the post, as well as the credits. Thanks for the tips!
Code:
if (def.getName().contains("Ladder")) {
if (LadderActions.climbLadder(player, def, position))
return;
}
Code:
public static boolean climbLadder(Player player, ObjectDefinition def, Position pos) {
String direction = (def.interactions[0].equals("Climb-up")) ? "up" : "down";
int currHeight = player.getPosition().getZ();
int newHeight = (direction.equals("up")) ? (currHeight + 1) : (currHeight - 1);
player.getMovementQueue().reset();
if ((Math.abs(player.getPosition().getX() - pos.getX()) <= 1) ||
(Math.abs(player.getPosition().getY() - pos.getY()) <= 1)) {
player.performAnimation(new Animation(CLIMBING));
TaskManager.submit(new Task(2) {
@Override
public void execute() {
player.getPacketSender().sendMessage("You climb " + direction + " the ladder.");
player.moveTo(new Position(
player.getPosition().getX(),
player.getPosition().getY(),
newHeight)
);
stop();
}
});
return true;
}
player.getPacketSender().sendMessage("I can't reach that!");
return false;
}
You can spam it, but it will only print the message twice rather than moving up twice.