That still has some flaws in it.
Imagine the trapdoor already being open, you will never enter the trapdoor.
You also need to null check in case the object was not found.
Also some conditional sleeps makes it alot better ^^
You want to do something like this:
RS2Object trapDoor = getObjects().closest("Trapdoor");
if (trapDoor != null) {
if (trapDoor.hasAction("Open")) {
if (trapDoor.interact("Open")) {
new ConditionalSleep(7000) {
@Override
public boolean condition() {
return trapDoor.hasAction("Climb-down");
}
}.sleep();
}
} else {
Position prevPos = myPosition();
if (trapDoor.interact("Climb-down")) {
new ConditionalSleep(5000) {
@Override
public boolean condition() {
return myPosition().distance(prevPos) > 50 || myPosition().getZ() != prevPos.getZ();
}
}.sleep();
}
}
}