So basically I have recently started to write scripts (yesterday).  I have implemented the Node system and I wonder how I can  
sleep
while something is finished. 
Let's say that I am chopping down a tree, how can I stop it from clicking while I am chopping? 
  
Here is a preview of my code: 
  
@ScriptManifest(author = "Ruzi", info = "WoodCutting", name = "WoodCutting", version = 1, logo = "")
public class Main extends Script {
    private final int DELAY = 100;
    private List<Node> nodes = new ArrayList<>();
    @Override
    public void onStart() {
        Area treeArea = new Area(3086, 3275, 3074, 3263);
     
        WalkToTreeArea walkToTreeArea = new WalkToTreeArea(this, treeArea);
        nodes.add(walkToTreeArea);
     
        ChopDown chopDown = new ChopDown(this, treeArea);
        nodes.add(chopDown);
    }
    @Override
    public int onLoop() throws InterruptedException {
        nodes.forEach(node -> {
            if(node.validate())
                node.execute();
        });
        return DELAY;
    }
    @Override
    public void onExit() {
    }
}
public class ChopDown implements Node {
    private final int TREE_ID = 1276;
    private Script script;
    private Area treeArea;
    private Player player;
    private RS2Object tree;
    public ChopDown(Script script, Area treeArea) {
        this.script = script;
        this.treeArea = treeArea;
        this.player = script.myPlayer();
    }
    @Override
        public void execute() {
        chopDown();
    }
    private void chopDown() {
        tree = script.getObjects().closest(TREE_ID);
        if(tree != null){
            tree.interact("Chop down");
        }  
    }
    @Override
    public boolean validate() {
        return !inventoryIsFull() && isAtTreeArea(); 
    }
    private boolean inventoryIsFull() {
        return script.getInventory().isFull();
    }
    private boolean isAtTreeArea() {
        return treeArea.contains(player);
    }
}
Thanks!