Hi guys. I just got into script making yesterday. I finished my first script today at the request of someone. Its a cadava berry picker that banks. I would appreciate any feedback and constructive criticism. Thank you!
 
	 
 
import org.osbot.rs07.api.Settings;
import org.osbot.rs07.api.map.Area;
import org.osbot.rs07.api.map.Position;
import org.osbot.rs07.api.model.Entity;
import org.osbot.rs07.api.ui.Tab;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;
import java.awt.*;
import java.util.concurrent.TimeUnit;
@ScriptManifest(name = "Bubba's Berries", author = "bubbajim", version = 1.0, info = "", logo = "")
public class BubbasBerries extends Script {
    private long startTime;
    private int berriesCounter;
    private int startWorld = 460;
    private int endWorld = 451;
    private int currentWorld = startWorld;
    private long currentInventoryCapacity = -5;
    Position pathInBetween = new Position(3290, 3397, 0);
    Position pathFromBank = new Position(3273, 3370, 0);
    Position pathToBank = new Position(3252, 3420, 0);
    Area bankArea = new Area(new Position(3257, 3423, 0),
            new Position(3250, 3420, 0));
    @Override
    public void onStart() {
        startTime = System.currentTimeMillis();
    }
    @Override
    public void onExit() {
    }
    @Override
    public int onLoop() throws InterruptedException {
        if (getInventory().getAmount(753) == currentInventoryCapacity + 1) {
            berriesCounter += 1;
        }
        currentInventoryCapacity = getInventory().getAmount(753);
        Settings settings = getSettings();
        int runEnergy = settings.getRunEnergy();
        if (runEnergy > 50 && !settings.isRunning()) {
            settings.setRunning(true);
        }
        if (getInventory().isFull()) {
            getWalking().webWalk(pathInBetween);
            getWalking().webWalk(pathToBank);
            getBank().open();
            sleep(random(1500,2500));
            getBank().depositAll();
            new ConditionalSleep(10000) {
                @Override
                public boolean condition() {
                    return getInventory().isEmpty();
                }
            }.sleep();
        }
        Entity cadavaBush = getObjects().closest(23625, 23626);
        if (bankArea.contains(myPosition())) {
            getWalking().webWalk(pathInBetween);
            getWalking().webWalk(pathFromBank);
        }
        else if (cadavaBush != null && cadavaBush.interact("Pick-from")) {
            int cadavaBushX = cadavaBush.getX();
            int cadavaBushY = cadavaBush.getY();
            Position cadavaBushPosition = new Position(cadavaBushX, cadavaBushY, 0);
            if (cadavaBush.getId() == 23625) {
                new ConditionalSleep(10000) {
                    @Override
                    public boolean condition() {
                        return getObjects().closest(o -> o.getPosition().equals(cadavaBushPosition)).getId() == 23626;
                    }
                }.sleep();
            } else if (cadavaBush.getId() == 23626) {
                new ConditionalSleep(10000) {
                    @Override
                    public boolean condition() {
                        return getObjects().closest(o -> o.getPosition().equals(cadavaBushPosition)).getId() == 23627;
                    }
                }.sleep();
            }
        } else {
            if (endWorld == currentWorld) {
                currentWorld = startWorld;
            }
            currentWorld -= 1;
            getTabs().open(Tab.LOGOUT);
            getWorlds().hop(currentWorld);
            sleep(random(2000,3000));
            getTabs().open(Tab.INVENTORY);
            new ConditionalSleep(10000) {
                @Override
                public boolean condition() {
                    return getWorlds().getCurrentWorld() == currentWorld;
                }
            }.sleep();
        }
        return random(300, 600);
    }
    @Override
    public void onPaint(Graphics2D g) {
        final long runTime = (System.currentTimeMillis() - startTime);
        String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(runTime),
                TimeUnit.MILLISECONDS.toMinutes(runTime) % TimeUnit.HOURS.toMinutes(1),
                TimeUnit.MILLISECONDS.toSeconds(runTime) % TimeUnit.MINUTES.toSeconds(1));
        Font font = new Font("Open Sans", Font.PLAIN, 12);
        g.setFont(font);
        g.setColor(Color.green);
        g.drawString("Time elapsed: " + hms, 15, 300);
        g.drawString("Berries picked: " + berriesCounter, 15, 315);
    }
}