Hello, I'm dartz and this is my first OsBot script.  I've written a tab making bot on another client and recently came to osBot to write bots, improve my java skill, and not have to pay $8 a month. I know python fairly well, but I'm a noob at java. 
 
	The script is very simple, but gets the job done. 
 
	Fixed:
 
	When checking the bank for grapes/jugs of water, it will not detect the items if they are at the corner of the screen.
 
		Pros
		
				Works
			
			
				Has a Paint
			
		
	
		Cons
		
				Few comments  
			
			
				simple if statements, no functions 
			
			
				only works at the G.E.
			
			
				No GUI
			
		
	 
 
package osBots;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.util.concurrent.TimeUnit;
import org.osbot.rs07.api.ui.RS2Widget;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
@ScriptManifest(name = "CookMate", version = 1.0, info = "", author = "Dartz", logo = "")
public class CookMate extends Script{
	
	// reaction times changed prior to posting..
	public int min = 1000;
	public int low = 2000;
	public int med = 3000;
	public int high = 5000;
	// item ids
	public int grapes = 1987;
	public int water = 1937;
	// Paint //
	public int batches;
	public int estWine;
	public int fontSize;
	public long timeBegan;
	public long timeRan;
	
	// Crucial to paint time working //
	public void onStart() {
		timeBegan = System.currentTimeMillis();
	}
	
	@Override
	public int onLoop() throws InterruptedException {
		if (!myPlayer().isAnimating()) {
			log("Standing still");
			if (!inventory.contains(grapes) & !inventory.contains(water)) {
				log("Inventory lacking grapes");
				objects.closest("Grand Exchange booth").interact();
				log("Clicked bank");
				sleep(1000);
				// smart depositing + paint implementation
				if (!inventory.isEmpty()) {
					if (inventory.contains(1995) | inventory.contains(1993)) {
						batches = batches + 1;
						estWine = estWine + 14;
						log("batches: " + batches);
					}
					log("depositing all");
					bank.depositAll();
				}
				if (!bank.contains(grapes) | !bank.contains(water)) {
					stop();
				}
				sleep(random(min,low));
				bank.withdraw(grapes, 14);
				sleep(random(min,low));
				bank.withdraw(water, 14);
				sleep(random(min,low));
				bank.close();
				log("Bank Closed");
				sleep(1000);
			}
		
			if (inventory.contains(grapes) & inventory.contains(water)) {
				inventory.getItem("Grapes").interact("Use");
				sleep(1000);
				inventory.getItem("Jug of water").interact("Use");
				sleep(1000);
				RS2Widget makeInterface = getWidgets().get(270,14,38);
				if (makeInterface != null) {
					if (makeInterface.isVisible());
					log("Make interface is visible!");
					makeInterface.interact();
					/*
					 * Wine making = 2 ticks
					 * 14 Wines = 16.8 secs
					 */
					sleep(random(13000,18000));
				}
			}
		}
		
		log("Gone through onLoop()");
		sleep(1000);
		return 500;
	}
	
	// BELOW: ONLY EFFECTS PAINT //
	public void onPaint(Graphics2D g) {
		Graphics2D gr = g;
		timeRan = System.currentTimeMillis() - this.timeBegan;
		fontSize = 16;
		Font crossHair = new Font("SANS_SERIF", Font.BOLD, fontSize);
		g.setColor(Color.BLACK);
		g.setFont(crossHair);
		// 17 pixels in between each other
		g.drawString("Estimated xp: " + (estWine*200), 555, 424);
		g.drawString("Run time: " + ft(timeRan), 555, 441);
		g.drawString("Batches made: " + batches + " (wines: "+estWine+")", 555, 458);
		
		
	}
	
	private String ft(long duration) {
        String res = "";
        long days = TimeUnit.MILLISECONDS.toDays(duration);
        long hours = TimeUnit.MILLISECONDS.toHours(duration) - TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(duration));
        long minutes = TimeUnit.MILLISECONDS.toMinutes(duration) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(duration));
        long seconds = TimeUnit.MILLISECONDS.toSeconds(duration) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration));
        if (days == 0) {
            res = (hours + ":" + minutes + ":" + seconds);
        } else {
            res = (days + ":" + hours + ":" + minutes + ":" + seconds);
        }
        return res;
    }
}
	 
 
	I used several tutorials on here and greatly appreciate this community.  I want to become a better programmer and community member.  If you have any resources that proved helpful, I'd greatly appreciate those as well.  I also started working on a shrimp fisher to get familiar with walking to and from the bank.