All pastes #2060940 Raw Edit

Miscellany

public text v1 · immutable
#2060940 ·published 2011-05-16 06:49 UTC
rendered paste body
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import java.io.*;
import java.nio.channels.*;
import java.net.*;
import java.util.List;
import java.util.logging.Level;
import java.lang.reflect.Method;
import javax.accessibility.*;
import javax.swing.*;
import org.rsbot.*;
import org.rsbot.bot.Bot;
import org.rsbot.script.*;
import org.rsbot.script.wrappers.*;
import org.rsbot.event.listeners.*;
import org.rsbot.event.events.ServerMessageEvent;
import org.rsbot.util.ScreenshotUtil;
import javax.imageio.ImageIO;

@ScriptManifest(authors = { "Conderoga" }, keywords = "Woodcutting", name = "Conderoga's Chopper", version = 1.261,description = "Chops trees and stuff.")
/*UpdateLog:
   v1.00 - New Combined Script
   v1.01 - New GUI, Added Grand Exchange Ivy
   v1.02 - Added Taverly and Yanille Ivy, Willow Chopping in Draynor
   v1.03 - Nothing really..
   v1.04 - Added Seer's Village yew and maple chopping, new walking method, Ardougne and Varrock Palace Ivy
   v1.05 - Walking fixes and autoupdate
   v1.06 - More options with autoupdate, tweaked banking and walking
   v1.07 - Fixed Maple Chopping, added mage training area magics and Falador yews
   v1.08 - Fixed Falador Yew Chopping and banking problems in Seer's village
   v1.09 - Improved Tree Clicking, added Mouse Hovering, new paint, falador ivy locations
   v1.10 - Quick walking, banking, and animation fixes
   v1.11 - Added Timeout feature to get rid of script stopping error
   v1.12 - Failed attempt at fixing stuff
   v1.13 - Fixed walking problems, added cool mouse stuff.
   v1.14 - Added Draynor Yews - new Walking Method - Fixed Mage Training Area Problems
   v1.15 - Fixed lag issues added breaking antiban fixed Draynor yews improved mouse hover
   v1.16 - Reverted to old version of walking, added Tree Gnome Stronghold Yews
   v1.17 - Lag gone for good, fixed south falador and edgeville, Merry Christmas!
   v1.18 - Fixed lots of problems
   v1.19 - Fixed South Falador Banking problems, Draynor Yew banking, Catherby Bee Hive error
   v1.20 - Fixed small banking errors and errors in South Falador Yews
   v1.21 - Added Failsafe for banking problems, shortened break length
   v1.22 - Fixed walking methods, fixed Mage Training magics, added Port Salim Willows and Draynor Oaks
   v1.23 - Added failsafe fixed run issues
   v1.24 - Fixed new Tree ids in Port Sarim, Rimmington and South Falador
   v1.25 - Fixed Edgeville banking, Seer's Village yews screw up, Rimmington Sticking error, South Falador tree bug
   v1.26 - fixed more problems due to updates
   v1.261 - Fixed Rimmington
 */

public class CChop extends Script implements PaintListener, ServerMessageListener, MouseListener{

private boolean guiWait = true;
private boolean guiExit = true;
private String location;
private RSTile tree1, tree2, tree3, tree4, tree5, tree6, tree7;
private RSTile [] treesToBank;
private RSTile [] bankToTrees;
private boolean tree1Status, tree2Status, tree3Status, tree4Status, tree5Status, tree6Status, tree7Status;
private long tree1TimeDead, tree2TimeDead, tree3TimeDead, tree4TimeDead, tree5TimeDead, tree6TimeDead, tree7TimeDead;
private long tree1DeadTime, tree2DeadTime, tree3DeadTime, tree4DeadTime, tree5DeadTime, tree6DeadTime, tree7DeadTime;
private long tree1TimeAlive, tree2TimeAlive, tree3TimeAlive, tree4TimeAlive, tree5TimeAlive, tree6TimeAlive, tree7TimeAlive;
private long tree1AliveTime, tree2AliveTime, tree3AliveTime, tree4AliveTime, tree5AliveTime, tree6AliveTime, tree7AliveTime;
private int nextTree = 0;
private int bankerID;
private int yewPrice = 0;
private int magicPrice = 0;
private int willowPrice = 0;
private int maplePrice = 0;
private int oakPrice = 0;

public CChopGUI gui;
private boolean nearest;
private boolean takeBreaks;
private boolean breakActive;
private int breakLength;
private long breakStart;
private Point stump1, stump2, stump3, stump4, stump5, stump6, stump7;
public int [] BNIDs = {5070, 5071, 5072, 5073, 5074, 5075, 5076, 7413, 11966};
public int [] hatchetIDs = {1349, 1351, 1353, 1355, 1357, 1359, 1361, 6739, 13470};
private int yewsCut = 0;
private int magicsCut = 0;
private int ivyCut = 0;
private int willowsCut = 0;
private int maplesCut = 0;
private int oaksCut = 0;
private int nests = 0;
private boolean full = false;
private int startLevel;
private int startExp;
private int expGained;
private int lvlsGained;
private long startTime, failSafeTimer;
private double startTimeDbl;
private long ExpHr;
private int safety = 0;
private String status;
private int tempX = 0;
private int tempY = 0;
private Point p;
private int randomInt;
private String version = "v1.261";
private String currentVersion = "";
private String treeType = ".";
private int treeID;
private ArrayList<Integer> ivyIDs = new ArrayList<Integer>();
private ArrayList<Integer> stumpIDs = new ArrayList<Integer>();
private int stumpID;
private RSTile bankLocation;
private String chopType;
private String command;
private boolean done = false;
private boolean showPaint = true;
private boolean fancyPaint = true;
private final Image img1 = getImage("http://i263.photobucket.com/albums/ii158/zpogo/Logo.png");
private final Image img2 = getImage("http://i263.photobucket.com/albums/ii158/zpogo/Bar.png");
private final Image img4 = getImage("http://i263.photobucket.com/albums/ii158/zpogo/EXPback-1copy.png");
private Color mouseColor = new Color(51,153,0,255);

 	public boolean onStart() {
	if(checkCurrentVersion())
	  log(Color.BLUE, "You have the latest version! :)");
      startTime = System.currentTimeMillis();
      startTimeDbl = System.currentTimeMillis();
      //Credits to Zombieknight for this:-----------------
      final int welcome = JOptionPane.showConfirmDialog(null,"Before using my script, would you like to thank me\nby clicking some adverts?","Welcome", JOptionPane.YES_NO_OPTION);
	  if (welcome == 0) {
		final String message = "<html>Thank you for your support!<br /></html>";
		JOptionPane.showMessageDialog(null, message);
		openURL("http://adf.ly/317631/agsn");
		}
	//=================================Yeah, I wrote all the rest of this...



      gui = new CChopGUI();
      gui.setVisible(true);
      while(guiWait)
      {
        sleep(100);
      }
      		     return !guiExit;
    }
 	public void pickUpNest()
 {
   RSGroundItem o = groundItems.getNearest(BNIDs);
   if(o!=null && !inventory.isFull())
   {
     status = "Nest!";
     sleep(random(600,800));
    if(o.doAction("Take"))
    	nests++;
    sleep(random(600,800));
   }
 }
 	public boolean chopCheck()
 {
 if(!treeType.equals("ivy"))
 {
   if(players.getMyPlayer().getAnimation()==867||players.getMyPlayer().getAnimation()==2846||players.getMyPlayer().getAnimation()==10251||players.getMyPlayer().getAnimation()==875||players.getMyPlayer().getAnimation()==869)
   {status = "Chopping!";
    return true;}
    else
     status = "Not chopping.";
 }
 else
 {
 	for(int i = 0; i<5;i++){
   if(players.getMyPlayer().getAnimation()==870||players.getMyPlayer().getAnimation()==872||players.getMyPlayer().getAnimation()==10251)
   {status = "Chopping!";
    return true;}
    sleep(random(200,300));
     }
     status = "Not chopping.";
 }
 return false;
 }
 	public void updateStatus()
 {
 	antiBan(random(1,100));
 	boolean temp = chopCheck();
 	if(!temp&&!tree7Status&&!tree6Status&&!tree5Status&&!tree4Status&&!tree3Status&&!tree2Status&&!tree1Status)
 	{
 		status = "Waiting.";
 	}
 }
 	public void setUp()
{
	status = "Starting up.";
	command = location+ " - "+chopType;
	if(command.equals("Draynor - Oaks"))
	{
		treeType = "oaks";
		treeID = 1281;
		stumpID = 1356;
		bankerID = 494;
		tree1 = new RSTile(3102,3242);
		tree2 = new RSTile(3107,3248);
		tree3 = new RSTile(0,0);
		tree4 = new RSTile(0,0);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [3];
		bankToTrees = new RSTile [2];

		treesToBank[0] = new RSTile(3107,3250);
		treesToBank[1] = new RSTile(3101,3244);
		treesToBank[2] = new RSTile(3092,3244);

		bankToTrees[0] = new RSTile(3092,3244);
		bankToTrees[1] = new RSTile(3101,3244);

	}
	else if(command.equals("Grand Exchange - Yews"))
	{
		treeType = "yews";
		treeID = 1309;
		stumpID = 7402;
		bankerID = 6533;
		tree1 = new RSTile(3205,3504);
		tree2 = new RSTile(3210,3504);
		tree3 = new RSTile(3222,3503);
		tree4 = new RSTile(0,0);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [6];
		bankToTrees = new RSTile [6];

		bankToTrees[0] = new RSTile(3167, 3489);
		bankToTrees[1] = new RSTile(3173, 3491);
		bankToTrees[2] = new RSTile(3183, 3490);
		bankToTrees[3] = new RSTile(3195, 3494);
		bankToTrees[4] = new RSTile(3204, 3502);
		bankToTrees[5] = new RSTile(3208, 3502);

		treesToBank[0] = new RSTile(3208, 3502);
		treesToBank[1] = new RSTile(3204, 3502);
		treesToBank[2] = new RSTile(3195, 3494);
		treesToBank[3] = new RSTile(3183, 3490);
		treesToBank[4] = new RSTile(3173, 3491);
		treesToBank[5] = new RSTile(3167, 3489);
	}
	else if(command.equals("Edgeville - Yews"))
	{
		treeType = "yews";
		treeID = 1309;
		stumpID = 7402;
		bankerID = 553;
		tree1 = new RSTile(3086,3481);
		tree2 = new RSTile(3086,3469);
		tree3 = new RSTile(0,0);
		tree4 = new RSTile(0,0);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [5];
		bankToTrees = new RSTile [5];

		bankToTrees[0] = new RSTile(3093, 3490);
		bankToTrees[1] = new RSTile(3088, 3487);
		bankToTrees[2] = new RSTile(3093, 3482);
		bankToTrees[3] = new RSTile(3094, 3476);
		bankToTrees[4] = new RSTile(3087, 3475);

		treesToBank[0] = new RSTile(3087, 3475);
		treesToBank[1] = new RSTile(3094, 3476);
		treesToBank[2] = new RSTile(3093, 3482);
		treesToBank[3] = new RSTile(3088, 3487);
		treesToBank[4] = new RSTile(3093, 3490);
	}
	else if(command.equals("Rimmington - Yews"))
	{
		treeType = "yews";
		treeID = 38755;
		stumpID = 38759;
		bankerID = 6200;
		tree1 = new RSTile(2941,3233);
		tree2 = new RSTile(2934,3234);
		tree3 = new RSTile(2926,3229);
		tree4 = new RSTile(2935,3226);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [15];
		bankToTrees = new RSTile [15];


		bankToTrees[0] = new RSTile(3047, 3236);
		bankToTrees[1] = new RSTile(3037, 3235);
		bankToTrees[2] = new RSTile(3027, 3241);
		bankToTrees[3] = new RSTile(3016, 3242);
		bankToTrees[4] = new RSTile(3004, 3238);
		bankToTrees[5] = new RSTile(2993, 3235);
		bankToTrees[6] = new RSTile(2988, 3225);
		bankToTrees[7] = new RSTile(2979, 3223);
		bankToTrees[8] = new RSTile(2969, 3223);
		bankToTrees[9] = new RSTile(2959, 3223);
		bankToTrees[10] = new RSTile(2950, 3228);
		bankToTrees[11] = new RSTile(2942, 3230);
		bankToTrees[12] = new RSTile(2938, 3231);
		bankToTrees[13] = new RSTile(2930, 3230);
		bankToTrees[14] = new RSTile(2925, 3231);

		treesToBank = walking.reversePath(bankToTrees);

	}
	else if(command.equals("Catherby - Yews"))
	{
		treeType = "yews";
		treeID = 1309;
		stumpID = 7402;
		if(random(1,2)==1)
		bankerID = 494;
		else
		bankerID = 495;

		tree1 = new RSTile(2766,3428);
		tree2 = new RSTile(2760,3428);
		tree3 = new RSTile(2761,3432);
		tree4 = new RSTile(2771,3438);
		tree5 = new RSTile(2756,3431);
		tree6 = new RSTile(2758,3434);
		tree7 = new RSTile(2755,3434);

		treesToBank = new RSTile [5];
		bankToTrees = new RSTile [5];


		bankToTrees[0] = new RSTile(2809, 3440);
		bankToTrees[1] = new RSTile(2801, 3434);
		bankToTrees[2] = new RSTile(2789, 3436);
		bankToTrees[3] = new RSTile(2777, 3436);
		bankToTrees[4] = new RSTile(2767, 3431);

		treesToBank[0] = new RSTile(2767, 3431);
		treesToBank[1] = new RSTile(2777, 3436);
		treesToBank[2] = new RSTile(2789, 3436);
		treesToBank[3] = new RSTile(2801, 3434);
		treesToBank[4] = new RSTile(2809, 3440);
	}
	else if(command.equals("Seer's Village - Yews"))
	{
		treeType = "yews";
		treeID = 1309;
		stumpID = 7402;
		bankerID = 495;
		tree1 = new RSTile(2715,3460);
		tree2 = new RSTile(2706,3460);
		tree3 = new RSTile(2706,3465);
		tree4 = new RSTile(0,0);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [4];
		bankToTrees = new RSTile [4];


		bankToTrees[0] = new RSTile(2726, 3493);
		bankToTrees[1] = new RSTile(2724, 3483);
		bankToTrees[2] = new RSTile(2723, 3474);
		bankToTrees[3] = new RSTile(2714, 3462);

		treesToBank[0] = new RSTile(2714, 3462);
		treesToBank[1] = new RSTile(2723, 3474);
		treesToBank[2] = new RSTile(2724, 3483);
		treesToBank[3] = new RSTile(2726, 3493);
	}
	else if(command.equals("South Falador - Yews"))
	{
		treeType = "yews";
		treeID = 38755;
		stumpID = 38759;
		bankerID = 6200;
		tree1 = new RSTile(2999,3315);
		tree2 = new RSTile(3017,3322);
		tree3 = new RSTile(3047,3318);
		tree4 = new RSTile(0,0);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [11];
		bankToTrees = new RSTile [6];


		bankToTrees[0] = new RSTile(3012, 3356);
		bankToTrees[1] = new RSTile(3006, 3357);
		bankToTrees[2] = new RSTile(3006, 3346);
		bankToTrees[3] = new RSTile(3006, 3339);
		bankToTrees[4] = new RSTile(3006, 3331);
		bankToTrees[5] = new RSTile(3007, 3322);


		treesToBank[0] = new RSTile(3045, 3318);
		treesToBank[1] = new RSTile(3040, 3320);
		treesToBank[2] = new RSTile(3036, 3321);
		treesToBank[3] = new RSTile(3028, 3321);
		treesToBank[4] = new RSTile(3016, 3320);
		treesToBank[5] = new RSTile(3007, 3322);
		treesToBank[6] = new RSTile(3006, 3331);
		treesToBank[7] = new RSTile(3006, 3339);
		treesToBank[8] = new RSTile(3006, 3346);
		treesToBank[9] = new RSTile(3006, 3357);
		treesToBank[10] = new RSTile(3012, 3356);
	}
	else if(command.equals("Draynor - Yews"))
	{
		treeType = "yews";
		treeID = 1309;
		stumpID = 7402;
		bankerID = 494;
		tree1 = new RSTile(3147,3255);
		tree2 = new RSTile(3152,3231);
		tree3 = new RSTile(3166,3220);
		tree4 = new RSTile(3185,3227);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [19];
		bankToTrees = new RSTile [7];

		treesToBank[0] = new RSTile(3185,3227);
		treesToBank[1] = new RSTile(3177,3226);
		treesToBank[2] = new RSTile(3172,3226);
		treesToBank[3] = new RSTile(3166,3222);
		treesToBank[4] = new RSTile(3161,3227);
		treesToBank[5] = new RSTile(3158,3232);
		treesToBank[6] = new RSTile(3153,3239);
		treesToBank[7] = new RSTile(3152,3245);
		treesToBank[8] = new RSTile(3147,3252);
		treesToBank[9] = new RSTile(3146,3244);
		treesToBank[10] = new RSTile(3147,3235);
		treesToBank[11] = new RSTile(3145,3230);
		treesToBank[12] = new RSTile(3137,3228);
		treesToBank[13] = new RSTile(3126,3226);
		treesToBank[14] = new RSTile(3119,3226);
		treesToBank[15] = new RSTile(3110,3229);
		treesToBank[16] = new RSTile(3105,3235);
		treesToBank[17] = new RSTile(3101,3242);
		treesToBank[18] = new RSTile(3092,3244);

		bankToTrees[0] = new RSTile(3092,3244);
		bankToTrees[1] = new RSTile(3104,3238);
		bankToTrees[2] = new RSTile(3114,3229);
		bankToTrees[3] = new RSTile(3126,3225);
		bankToTrees[4] = new RSTile(3137,3226);
		bankToTrees[5] = new RSTile(3144,3229);
		bankToTrees[6] = new RSTile(3150,3231);
	}
	else if(command.equals("Tree Gnome - Yews"))
	{
		treeType = "yews";
		treeID = 1309;
		stumpID = 7402;
		bankerID = 166;
		tree1 = new RSTile(2439,3436);
		tree2 = new RSTile(2433,3441);
		tree3 = new RSTile(2433,3426);
		tree4 = new RSTile(0,0);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [2];
		bankToTrees = new RSTile [2];

		treesToBank[0] = new RSTile(2442,3438);
		treesToBank[1] = new RSTile(2445,3427);

		bankToTrees[0] = new RSTile(2445,3425);
		bankToTrees[1] = new RSTile(2440,3434);

	}
	else if(command.equals("Seer's Village - Maples"))
	{
		treeType = "maples";
		treeID = 1307;
		stumpID = 7400;
		bankerID = 495;
		tree1 = new RSTile(2722,3502);
		tree2 = new RSTile(2728,3502);
		tree3 = new RSTile(2731,3501);
		tree4 = new RSTile(2733,3500);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [2];
		bankToTrees = new RSTile [2];

		bankToTrees[0] = new RSTile(2726, 3493);
		bankToTrees[1] = new RSTile(2729, 3501);


		treesToBank[0] = new RSTile(2729, 3501);
		treesToBank[1] = new RSTile(2726, 3493);


	}
	else if(command.equals("Seer's Village - Magics"))
	{
		treeType = "magics";
		treeID = 1306;
		stumpID = 7401;
		bankerID = 495;
		tree1 = new RSTile(2697,3424);
		tree2 = new RSTile(2692,3425);
		tree3 = new RSTile(2691,3428);
		tree4 = new RSTile(0,0);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [9];
		bankToTrees = new RSTile [9];

		bankToTrees[0] = new RSTile(2726, 3493);
		bankToTrees[1] = new RSTile(2725, 3487);
		bankToTrees[2] = new RSTile(2725, 3477);
		bankToTrees[3] = new RSTile(2723, 3466);
		bankToTrees[4] = new RSTile(2724, 3456);
		bankToTrees[5] = new RSTile(2713, 3449);
		bankToTrees[6] = new RSTile(2707, 3439);
		bankToTrees[7] = new RSTile(2703, 3429);
		bankToTrees[8] = new RSTile(2694, 3424);

		treesToBank[0] = new RSTile(2694, 3424);
		treesToBank[1] = new RSTile(2703, 3429);
		treesToBank[2] = new RSTile(2707, 3439);
		treesToBank[3] = new RSTile(2713, 3449);
		treesToBank[4] = new RSTile(2724, 3456);
		treesToBank[5] = new RSTile(2723, 3466);
		treesToBank[6] = new RSTile(2725, 3477);
		treesToBank[7] = new RSTile(2725, 3487);
		treesToBank[8] = new RSTile(2726, 3493);
	}
	else if(command.equals("Sorcerer's Tower - Magics"))
	{
		treeType = "magics";
		treeID = 1306;
		stumpID = 7401;
		bankerID = 495;
		tree1 = new RSTile(2705,3397);
		tree2 = new RSTile(2705,3399);
		tree3 = new RSTile(2699,3399);
		tree4 = new RSTile(2699,3397);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [12];
		bankToTrees = new RSTile [12];

		bankToTrees[0] = new RSTile(2726, 3493);
		bankToTrees[1] = new RSTile(2725, 3487);
		bankToTrees[2] = new RSTile(2725, 3477);
		bankToTrees[3] = new RSTile(2723, 3466);
		bankToTrees[4] = new RSTile(2724, 3456);
		bankToTrees[5] = new RSTile(2713, 3449);
		bankToTrees[6] = new RSTile(2707, 3439);
		bankToTrees[7] = new RSTile(2703, 3429);
		bankToTrees[8] = new RSTile(2709, 3418);
		bankToTrees[9] = new RSTile(2715, 3406);
		bankToTrees[10] = new RSTile(2714, 3396);
		bankToTrees[11] = new RSTile(2701, 3398);

		treesToBank[0] = new RSTile(2701, 3398);
		treesToBank[1] = new RSTile(2714, 3396);
		treesToBank[2] = new RSTile(2715, 3406);
		treesToBank[3] = new RSTile(2709, 3418);
		treesToBank[4] = new RSTile(2703, 3429);
		treesToBank[5] = new RSTile(2707, 3439);
		treesToBank[6] = new RSTile(2713, 3449);
		treesToBank[7] = new RSTile(2724, 3456);
		treesToBank[8] = new RSTile(2723, 3466);
		treesToBank[9] = new RSTile(2725, 3477);
		treesToBank[10] = new RSTile(2725, 3487);
		treesToBank[11] = new RSTile(2726, 3493);
	}
	else if(command.equals("Mage Training Area - Magics"))
	{
		treeType = "magics";
		treeID = 1306;
		stumpID = 7401;
		bankLocation = new RSTile(3381,3269);

		tree1 = new RSTile(3357,3312);
		tree2 = new RSTile(3369,3312);
		tree3 = new RSTile(0,0);
		tree4 = new RSTile(0,0);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [7];
		bankToTrees = new RSTile [7];

		bankToTrees[0] = new RSTile(3381, 3268);
		bankToTrees[1] = new RSTile(3370, 3266);
		bankToTrees[2] = new RSTile(3358, 3265);
		bankToTrees[3] = new RSTile(3349, 3274);
		bankToTrees[4] = new RSTile(3348, 3282);
		bankToTrees[5] = new RSTile(3360, 3287);
		bankToTrees[6] = new RSTile(3363, 3298);


		treesToBank[0] = new RSTile(3363, 3298);
		treesToBank[1] = new RSTile(3360, 3287);
		treesToBank[2] = new RSTile(3348, 3282);
		treesToBank[3] = new RSTile(3349, 3274);
		treesToBank[4] = new RSTile(3358, 3265);
		treesToBank[5] = new RSTile(3370, 3266);
		treesToBank[6] = new RSTile(3382, 3268);

	}
	else if(command.equals("Castle Wars - Ivy"))
	{
		bankLocation = new RSTile(2445,3083);
		treeType = "ivy";

		if(random(1,2)==1)
		camera.setAngle(random(1,30));
		else
		camera.setAngle(random(340,359));


		tree1 = new RSTile(2430,3068);
		tree2 = new RSTile(2429,3068);
		tree3 = new RSTile(2428,3068);
		tree4 = new RSTile(2426,3068);
		tree5 = new RSTile(2425,3068);
		tree6 = new RSTile(2424,3068);
		tree7 = new RSTile(2423,3068);

		treesToBank = new RSTile [3];
		bankToTrees = new RSTile [3];


		bankToTrees[0] = new RSTile(2443, 3084);
		bankToTrees[1] = new RSTile(2444, 3073);
		bankToTrees[2] = new RSTile(2429, 3068);

		treesToBank[0] = new RSTile(2429, 3068);
		treesToBank[1] = new RSTile(2444, 3073);
		treesToBank[2] = new RSTile(2443, 3084);
	}

	else if(command.equals("Grand Exchange - Ivy"))
	{
		treeType = "ivy";
		bankerID = 6533;

		camera.setAngle(random(170,190));


		tree1 = new RSTile(3219,3498);
		tree2 = new RSTile(3218,3498);
		tree3 = new RSTile(3217,3498);
		tree4 = new RSTile(3216,3498);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [6];
		bankToTrees = new RSTile [6];

		bankToTrees[0] = new RSTile(3167, 3489);
		bankToTrees[1] = new RSTile(3173, 3491);
		bankToTrees[2] = new RSTile(3183, 3490);
		bankToTrees[3] = new RSTile(3195, 3494);
		bankToTrees[4] = new RSTile(3204, 3502);
		bankToTrees[5] = new RSTile(3217, 3500);

		treesToBank[0] = new RSTile(3217, 3500);
		treesToBank[1] = new RSTile(3204, 3502);
		treesToBank[2] = new RSTile(3195, 3494);
		treesToBank[3] = new RSTile(3183, 3490);
		treesToBank[4] = new RSTile(3173, 3491);
		treesToBank[5] = new RSTile(3167, 3489);
	}

	else if(command.equals("Taverly - Ivy"))
	{
		treeType = "ivy";
		log("Nest banking is unavailable at the Taverly location.");

		camera.setAngle(random(260,280));

		tree1 = new RSTile(2943,3416);
		tree2 = new RSTile(2943,3417);
		tree3 = new RSTile(2943,3418);
		tree4 = new RSTile(2943,3419);
		tree5 = new RSTile(2943,3420);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

	}
	else if(command.equals("Yanille - Ivy"))
	{
		bankerID = 494;
		treeType = "ivy";

		camera.setAngle(random(170,190));


		tree1 = new RSTile(2597,3111);
		tree2 = new RSTile(2596,3111);
		tree3 = new RSTile(2595,3111);
		tree4 = new RSTile(2593,3111);
		tree5 = new RSTile(2592,3111);
		tree6 = new RSTile(2591,3111);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [4];
		bankToTrees = new RSTile [4];


		bankToTrees[0] = new RSTile(2613, 3094);
		bankToTrees[1] = new RSTile(2616, 3106);
		bankToTrees[2] = new RSTile(2603, 3113);
		bankToTrees[3] = new RSTile(2597, 3111);

		treesToBank[0] = new RSTile(2597, 3111);
		treesToBank[1] = new RSTile(2603, 3113);
		treesToBank[2] = new RSTile(2616, 3106);
		treesToBank[3] = new RSTile(2613, 3094);
	}
	else if(command.equals("Ardougne - Ivy"))
	{
		bankerID = 494;
		treeType = "ivy";

		camera.setAngle(random(80,100));


		tree1 = new RSTile(2622,3304);
		tree2 = new RSTile(2622,3305);
		tree3 = new RSTile(2622,3307);
		tree4 = new RSTile(2622,3308);
		tree5 = new RSTile(2622,3310);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [5];
		bankToTrees = new RSTile [5];


		bankToTrees[0] = new RSTile(2614, 3333);
		bankToTrees[1] = new RSTile(2607, 3326);
		bankToTrees[2] = new RSTile(2607, 3314);
		bankToTrees[3] = new RSTile(2614, 3312);
		bankToTrees[4] = new RSTile(2622, 3310);

		treesToBank[0] = new RSTile(2622, 3310);
		treesToBank[1] = new RSTile(2614, 3312);
		treesToBank[2] = new RSTile(2607, 3314);
		treesToBank[3] = new RSTile(2607, 3326);
		treesToBank[4] = new RSTile(2614, 3333);
	}
	else if(command.equals("Varrock Palace - Ivy"))
	{
		bankerID = 5912;
		treeType = "ivy";

		camera.setAngle(random(250,280));


		tree1 = new RSTile(3233,3456);
		tree2 = new RSTile(3233,3457);
		tree3 = new RSTile(3233,3459);
		tree4 = new RSTile(3233,3460);
		tree5 = new RSTile(3233,3461);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [5];
		bankToTrees = new RSTile [5];


		bankToTrees[0] = new RSTile(3253, 3420);
		bankToTrees[1] = new RSTile(3246, 3431);
		bankToTrees[2] = new RSTile(3245, 3441);
		bankToTrees[3] = new RSTile(3244, 3454);
		bankToTrees[4] = new RSTile(3233, 3460);

		treesToBank[0] = new RSTile(3233, 3460);
		treesToBank[1] = new RSTile(3244, 3454);
		treesToBank[2] = new RSTile(3245, 3441);
		treesToBank[3] = new RSTile(3246, 3431);
		treesToBank[4] = new RSTile(3253, 3420);
	}
	else if(command.equals("South Falador - Ivy"))
	{
		bankerID = 6200;
		treeType = "ivy";

		if(random(1,2)==1)
		camera.setAngle(random(1,30));
		else
		camera.setAngle(random(340,359));


		tree1 = new RSTile(3052,3328);
		tree2 = new RSTile(3051,3328);
		tree3 = new RSTile(3049,3328);
		tree4 = new RSTile(3048,3328);
		tree5 = new RSTile(3047,3328);
		tree6 = new RSTile(3045,3328);
		tree7 = new RSTile(3044,3328);

		treesToBank = new RSTile [10];
		bankToTrees = new RSTile [10];


		bankToTrees[0] = new RSTile(3012, 3356);
		bankToTrees[1] = new RSTile(3006, 3357);
		bankToTrees[2] = new RSTile(3006, 3346);
		bankToTrees[3] = new RSTile(3006, 3339);
		bankToTrees[4] = new RSTile(3006, 3331);
		bankToTrees[5] = new RSTile(3007, 3322);
		bankToTrees[6] = new RSTile(3017, 3323);
		bankToTrees[7] = new RSTile(3027, 3326);
		bankToTrees[8] = new RSTile(3036, 3326);
		bankToTrees[9] = new RSTile(3044, 3327);

		treesToBank[0] = new RSTile(3044, 3327);
		treesToBank[1] = new RSTile(3036, 3326);
		treesToBank[2] = new RSTile(3027, 3326);
		treesToBank[3] = new RSTile(3017, 3323);
		treesToBank[4] = new RSTile(3007, 3322);
		treesToBank[5] = new RSTile(3006, 3331);
		treesToBank[6] = new RSTile(3006, 3339);
		treesToBank[7] = new RSTile(3006, 3346);
		treesToBank[8] = new RSTile(3006, 3357);
		treesToBank[9] = new RSTile(3012, 3356);
	}
	else if(command.equals("North Falador - Ivy"))
	{
		bankerID = 6200;
		treeType = "ivy";


		camera.setAngle(random(170,190));

		tree1 = new RSTile(3018,3392);
		tree2 = new RSTile(3017,3392);
		tree3 = new RSTile(3016,3392);
		tree4 = new RSTile(3015,3392);
		tree5 = new RSTile(3014,3392);
		tree6 = new RSTile(3012,3392);
		tree7 = new RSTile(3011,3392);

		treesToBank = new RSTile [11];
		bankToTrees = new RSTile [11];


		bankToTrees[0] = new RSTile(2946, 3368);
		bankToTrees[1] = new RSTile(2948, 3376);
		bankToTrees[2] = new RSTile(2952, 3381);
		bankToTrees[3] = new RSTile(2963, 3386);
		bankToTrees[4] = new RSTile(2968, 3397);
		bankToTrees[5] = new RSTile(2974, 3397);
		bankToTrees[6] = new RSTile(2980, 3397);
		bankToTrees[7] = new RSTile(2989, 3397);
		bankToTrees[8] = new RSTile(2994, 3396);
		bankToTrees[9] = new RSTile(3005, 3397);
		bankToTrees[10] = new RSTile(3012, 3393);

		treesToBank[0] = new RSTile(3012, 3393);
		treesToBank[1] = new RSTile(3005, 3397);
		treesToBank[2] = new RSTile(2994, 3396);
		treesToBank[3] = new RSTile(2989, 3397);
		treesToBank[4] = new RSTile(2980, 3397);
		treesToBank[5] = new RSTile(2974, 3397);
		treesToBank[6] = new RSTile(2968, 3397);
		treesToBank[7] = new RSTile(2963, 3386);
		treesToBank[8] = new RSTile(2952, 3381);
		treesToBank[9] = new RSTile(2948, 3376);
		treesToBank[10] = new RSTile(2946, 3368);
	}
	else if(command.equals("Draynor - Willows"))
	{
		treeType = "willows";
		bankerID = 494;
		tree1 = new RSTile(3089,3228);
		tree2 = new RSTile(3088,3232);
		tree3 = new RSTile(3089,3235);
		tree4 = new RSTile(3086,3236);
		tree5 = new RSTile(3084,3238);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [2];
		bankToTrees = new RSTile [2];

		bankToTrees[0] = new RSTile(3092, 3245);
		bankToTrees[1] = new RSTile(3087, 3237);

		treesToBank[0] = new RSTile(3090, 3236);
		treesToBank[1] = new RSTile(3092, 3245);
	}
	else if(command.equals("Port Salim - Willows"))
	{
		treeType = "willows";
		tree1 = new RSTile(3062,3263);
		tree2 = new RSTile(3065,3258);
		tree3 = new RSTile(3062,3253);
		tree4 = new RSTile(3058,3251);
		tree5 = new RSTile(0,0);
		tree6 = new RSTile(0,0);
		tree7 = new RSTile(0,0);

		treesToBank = new RSTile [4];

		treesToBank[0] = new RSTile(3059, 3252);
		treesToBank[1] = new RSTile(3049, 3246);
		treesToBank[2] = new RSTile(3042, 3240);
		treesToBank[3] = new RSTile(3047, 3236);

		bankToTrees = walking.reversePath(treesToBank);

	}
	else
	{
		log("Incorrect combination of chop type / location");
	}
	if(treeType.equals("ivy"))
	{
		ivyIDs.add(46318);
		ivyIDs.add(46320);
		ivyIDs.add(46322);
		ivyIDs.add(46324);
		stumpIDs.add(46321);
		stumpIDs.add(46323);
		stumpIDs.add(46325);
		stumpIDs.add(46319);
	}
	if(treeType.equals("willows"))
	{

		ivyIDs.add(38616);
		ivyIDs.add(38627);
		ivyIDs.add(139);
		ivyIDs.add(142);
		ivyIDs.add(2372);
		stumpIDs.add(5554);
		stumpIDs.add(38725);
	}
	status = "Finished set up.";
}
	public int floorHeight(){
		RSNPC testNPC = npcs.getNearest(bankerID);
		if(testNPC!=null)
			return 1;
		else
			return 0;
	}
 	public void checkTrees()
{
	RSObject[] check1 = objects.getAllAt(tree1);
		for(int i = 0; i< check1.length; i++)
		{
		    if(check1[i].getID()==stumpID&&tree1Status)
			{	tree1Status = false;
				tree1DeadTime = System.currentTimeMillis();
				tree1TimeAlive = -1;
			}
			else if(check1[i].getID()==treeID&&!tree1Status)
			{	tree1Status = true;
				tree1AliveTime = System.currentTimeMillis();
				tree1TimeDead = -1;
			}
			else if(check1[i].getID()==treeID)
			{	tree1Status = true;
				tree1TimeAlive = System.currentTimeMillis()-tree1AliveTime;}
			else if(check1[i].getID()==stumpID)
			{	tree1Status = false;
				tree1TimeDead = System.currentTimeMillis()-tree1DeadTime;}
		}
	RSObject[] check2 = objects.getAllAt(tree2);
		for(int i = 0; i< check2.length; i++)
		{
			if(check2[i].getID()==stumpID&&tree2Status)
			{	tree2Status = false;
				tree2DeadTime = System.currentTimeMillis();
				tree2TimeAlive = -1;
			}
			else if(check2[i].getID()==treeID&&!tree2Status)
			{	tree2Status = true;
				tree2AliveTime = System.currentTimeMillis();
				tree2TimeDead = -1;
			}
			else if(check2[i].getID()==treeID)
			{	tree2Status = true;
				tree2TimeAlive = System.currentTimeMillis()-tree2AliveTime;}
			else if(check2[i].getID()==stumpID)
			{	tree2Status = false;
				tree2TimeDead = System.currentTimeMillis()-tree2DeadTime;}
		}
	if(tree3.getX()!=0)
	{
	RSObject[] check3 = objects.getAllAt(tree3);
	{
		for(int i = 0; i< check3.length; i++)
		{
			if(check3[i].getID()==stumpID&&tree3Status)
			{	tree3Status = false;
				tree3DeadTime = System.currentTimeMillis();
				tree3TimeAlive = -1;
			}
			else if(check3[i].getID()==treeID&&!tree3Status)
			{	tree3Status = true;
				tree3AliveTime = System.currentTimeMillis();
				tree3TimeDead = -1;
			}
			else if(check3[i].getID()==treeID)
			{	tree3Status = true;
				tree3TimeAlive = System.currentTimeMillis()-tree3AliveTime;}
			else if(check3[i].getID()==stumpID)
			{	tree3Status = false;
				tree3TimeDead = System.currentTimeMillis()-tree3DeadTime;}
		}
	}
	}
	else
	{
		tree3Status=false;
		tree3TimeDead = 0;
		tree3TimeAlive = 0;
	}
	if(tree4.getX()!=0)
	{
		RSObject[] check4 = objects.getAllAt(tree4);
	{
		for(int i = 0; i< check4.length; i++)
		{
			if(check4[i].getID()==stumpID&&tree4Status)
			{	tree4Status = false;
				tree4DeadTime = System.currentTimeMillis();
				tree4TimeAlive = -1;
			}
			else if(check4[i].getID()==treeID&&!tree4Status)
			{	tree4Status = true;
				tree4AliveTime = System.currentTimeMillis();
				tree4TimeDead = -1;
			}
			else if(check4[i].getID()==treeID)
			{	tree4Status = true;
				tree4TimeAlive = System.currentTimeMillis()-tree4AliveTime;}
			else if(check4[i].getID()==stumpID)
			{	tree4Status = false;
				tree4TimeDead = System.currentTimeMillis()-tree4DeadTime;}
		}
	}
	}
	else
	{
		tree4Status=false;
		tree4TimeDead = 0;
		tree4TimeAlive = 0;
	}
	if(tree5.getX()!=0)
	{
		RSObject[] check5 = objects.getAllAt(tree5);
	{
		for(int i = 0; i< check5.length; i++)
		{
			if(check5[i].getID()==stumpID&&tree5Status)
			{	tree5Status = false;
				tree5DeadTime = System.currentTimeMillis();
				tree5TimeAlive = -1;
			}
			else if(check5[i].getID()==treeID&&!tree5Status)
			{	tree5Status = true;
				tree5AliveTime = System.currentTimeMillis();
				tree5TimeDead = -1;
			}
			else if(check5[i].getID()==treeID)
			{	tree5Status = true;
				tree5TimeAlive = System.currentTimeMillis()-tree5AliveTime;}
			else if(check5[i].getID()==stumpID)
			{	tree5Status = false;
				tree5TimeDead = System.currentTimeMillis()-tree5DeadTime;}
		}
	}
	}
	else
	{
		tree5Status=false;
		tree5TimeDead = 0;
		tree5TimeAlive = 0;
	}
	if(tree6.getX()!=0)
	{
		RSObject[] check6 = objects.getAllAt(tree6);
	{
		for(int i = 0; i< check6.length; i++)
		{
			if(check6[i].getID()==stumpID&&tree6Status)
			{	tree6Status = false;
				tree6DeadTime = System.currentTimeMillis();
				tree6TimeAlive = -1;
			}
			else if(check6[i].getID()==treeID&&!tree6Status)
			{	tree6Status = true;
				tree6AliveTime = System.currentTimeMillis();
				tree6TimeDead = -1;
			}
			else if(check6[i].getID()==treeID)
			{	tree6Status = true;
				tree6TimeAlive = System.currentTimeMillis()-tree6AliveTime;}
			else if(check6[i].getID()==stumpID)
			{	tree6Status = false;
				tree6TimeDead = System.currentTimeMillis()-tree6DeadTime;}
		}
	}
	}
	else
	{
		tree6Status=false;
		tree6TimeDead = 0;
		tree6TimeAlive = 0;
	}
	if(tree7.getX()!=0)
	{
		RSObject[] check7 = objects.getAllAt(tree7);
	{
		for(int i = 0; i< check7.length; i++)
		{
			if(check7[i].getID()==stumpID&&tree7Status)
			{	tree7Status = false;
				tree7DeadTime = System.currentTimeMillis();
				tree7TimeAlive = -1;
			}
			else if(check7[i].getID()==treeID&&!tree7Status)
			{	tree7Status = true;
				tree7AliveTime = System.currentTimeMillis();
				tree7TimeDead = -1;
			}
			else if(check7[i].getID()==treeID)
			{	tree7Status = true;
				tree7TimeAlive = System.currentTimeMillis()-tree7AliveTime;}
			else if(check7[i].getID()==stumpID)
			{	tree7Status = false;
				tree7TimeDead = System.currentTimeMillis()-tree7DeadTime;}
		}
	}
	}
	else
	{
		tree7Status=false;
		tree7TimeDead = 0;
		tree7TimeAlive = 0;
	}
}
 	public void checkIvy()
 {
 	RSObject[] check1 = objects.getAllAt(tree1);
		for(int i = 0; i< check1.length; i++)
		{
		    if(stumpIDs.contains(check1[i].getID())&&tree1Status)
			{	tree1Status = false;
				tree1DeadTime = System.currentTimeMillis();
				tree1TimeAlive = -1;
			}
			else if(ivyIDs.contains(check1[i].getID())&&!tree1Status)
			{	tree1Status = true;
				tree1AliveTime = System.currentTimeMillis();
				tree1TimeDead = -1;
			}
			else if(ivyIDs.contains(check1[i].getID()))
			{	tree1Status = true;
				tree1TimeAlive = System.currentTimeMillis()-tree1AliveTime;}
			else if(stumpIDs.contains(check1[i].getID()))
			{	tree1Status = false;
				tree1TimeDead = System.currentTimeMillis()-tree1DeadTime;}
		}
	RSObject[] check2 = objects.getAllAt(tree2);
		for(int i = 0; i< check2.length; i++)
		{
			if(stumpIDs.contains(check2[i].getID())&&tree2Status)
			{	tree2Status = false;
				tree2DeadTime = System.currentTimeMillis();
				tree2TimeAlive = -1;
			}
			else if(ivyIDs.contains(check2[i].getID())&&!tree2Status)
			{	tree2Status = true;
				tree2AliveTime = System.currentTimeMillis();
				tree2TimeDead = -1;
			}
			else if(ivyIDs.contains(check2[i].getID()))
			{	tree2Status = true;
				tree2TimeAlive = System.currentTimeMillis()-tree2AliveTime;}
			else if(stumpIDs.contains(check2[i].getID()))
			{	tree2Status = false;
				tree2TimeDead = System.currentTimeMillis()-tree2DeadTime;}
		}
	if(tree3.getX()!=0)
	{
	RSObject[] check3 = objects.getAllAt(tree3);
	{
		for(int i = 0; i< check3.length; i++)
		{
			if(stumpIDs.contains(check3[i].getID())&&tree3Status)
			{	tree3Status = false;
				tree3DeadTime = System.currentTimeMillis();
				tree3TimeAlive = -1;
			}
			else if(ivyIDs.contains(check3[i].getID())&&!tree3Status)
			{	tree3Status = true;
				tree3AliveTime = System.currentTimeMillis();
				tree3TimeDead = -1;
			}
			else if(ivyIDs.contains(check3[i].getID()))
			{	tree3Status = true;
				tree3TimeAlive = System.currentTimeMillis()-tree3AliveTime;}
			else if(stumpIDs.contains(check3[i].getID()))
			{	tree3Status = false;
				tree3TimeDead = System.currentTimeMillis()-tree3DeadTime;}
		}
	}
	}
	else
	{
		tree3Status=false;
		tree3TimeDead = 0;
		tree3TimeAlive = 0;
	}
	if(tree4.getX()!=0)
	{
		RSObject[] check4 = objects.getAllAt(tree4);
	{
		for(int i = 0; i< check4.length; i++)
		{
			if(stumpIDs.contains(check4[i].getID())&&tree4Status)
			{	tree4Status = false;
				tree4DeadTime = System.currentTimeMillis();
				tree4TimeAlive = -1;
			}
			else if(ivyIDs.contains(check4[i].getID())&&!tree4Status)
			{	tree4Status = true;
				tree4AliveTime = System.currentTimeMillis();
				tree4TimeDead = -1;
			}
			else if(ivyIDs.contains(check4[i].getID()))
			{	tree4Status = true;
				tree4TimeAlive = System.currentTimeMillis()-tree4AliveTime;}
			else if(stumpIDs.contains(check4[i].getID()))
			{	tree4Status = false;
				tree4TimeDead = System.currentTimeMillis()-tree4DeadTime;}
		}
	}
	}
	else
	{
		tree4Status=false;
		tree4TimeDead = 0;
		tree4TimeAlive = 0;
	}
	if(tree5.getX()!=0)
	{
		RSObject[] check5 = objects.getAllAt(tree5);
	{
		for(int i = 0; i< check5.length; i++)
		{
			if(stumpIDs.contains(check5[i].getID())&&tree5Status)
			{	tree5Status = false;
				tree5DeadTime = System.currentTimeMillis();
				tree5TimeAlive = -1;
			}
			else if(ivyIDs.contains(check5[i].getID())&&!tree5Status)
			{	tree5Status = true;
				tree5AliveTime = System.currentTimeMillis();
				tree5TimeDead = -1;
			}
			else if(ivyIDs.contains(check5[i].getID()))
			{	tree5Status = true;
				tree5TimeAlive = System.currentTimeMillis()-tree5AliveTime;}
			else if(stumpIDs.contains(check5[i].getID()))
			{	tree5Status = false;
				tree5TimeDead = System.currentTimeMillis()-tree5DeadTime;}
		}
	}
	}
	else
	{
		tree5Status=false;
		tree5TimeDead = 0;
		tree5TimeAlive = 0;
	}
	if(tree6.getX()!=0)
	{
		RSObject[] check6 = objects.getAllAt(tree6);
	{
		for(int i = 0; i< check6.length; i++)
		{
			if(stumpIDs.contains(check6[i].getID())&&tree6Status)
			{	tree6Status = false;
				tree6DeadTime = System.currentTimeMillis();
				tree6TimeAlive = -1;
			}
			else if(ivyIDs.contains(check6[i].getID())&&!tree6Status)
			{	tree6Status = true;
				tree6AliveTime = System.currentTimeMillis();
				tree6TimeDead = -1;
			}
			else if(ivyIDs.contains(check6[i].getID()))
			{	tree6Status = true;
				tree6TimeAlive = System.currentTimeMillis()-tree6AliveTime;}
			else if(stumpIDs.contains(check6[i].getID()))
			{	tree6Status = false;
				tree6TimeDead = System.currentTimeMillis()-tree6DeadTime;}
		}
	}
	}
	else
	{
		tree6Status=false;
		tree6TimeDead = 0;
		tree6TimeAlive = 0;
	}
	if(tree7.getX()!=0)
	{
		RSObject[] check7 = objects.getAllAt(tree7);
	{
		for(int i = 0; i< check7.length; i++)
		{
			if(stumpIDs.contains(check7[i].getID())&&tree7Status)
			{	tree7Status = false;
				tree7DeadTime = System.currentTimeMillis();
				tree7TimeAlive = -1;
			}
			else if(ivyIDs.contains(check7[i].getID())&&!tree7Status)
			{	tree7Status = true;
				tree7AliveTime = System.currentTimeMillis();
				tree7TimeDead = -1;
			}
			else if(ivyIDs.contains(check7[i].getID()))
			{	tree7Status = true;
				tree7TimeAlive = System.currentTimeMillis()-tree7AliveTime;}
			else if(stumpIDs.contains(check7[i].getID()))
			{	tree7Status = false;
				tree7TimeDead = System.currentTimeMillis()-tree7DeadTime;}
		}
	}
	}
	else
	{
		tree7Status=false;
		tree7TimeDead = 0;
		tree7TimeAlive = 0;
	}

 }
 	public void calculateNextTree()
 {
 	if(!tree7Status&&!tree6Status&&!tree5Status&&!tree4Status&&!tree3Status&&!tree2Status&&!tree1Status)
 {
 	long num = -2;
 	int index = -1;
 	long [] temp = {tree1TimeDead,tree2TimeDead,tree3TimeDead,tree4TimeDead,tree5TimeDead,tree6TimeDead,tree7TimeDead};
 	for(int i =0; i < temp.length; i++)
 	{
 		if(temp[i]>=num)
 		{index = i;
 		num = temp[i];
 		}
 	}
 	nextTree = index+1;
 }
 else if(nearest){
 	RSTile [] trees = {tree1, tree2, tree3, tree4, tree5, tree6, tree7};
 	int [] distances = new int [7];
 	boolean [] temp = {tree1Status,tree2Status,tree3Status,tree4Status,tree5Status,tree6Status,tree7Status};
 	for(int i = 0; i<temp.length;i++)
 		if(temp[i])
 			distances[i] = distanceTo(trees[i]);
 		else
 			distances[i] = 500;
 	int min = 500;
 	int index = -1;
 	if(!status.equals("Chopping!")){
 	for(int i =0; i<distances.length;i++)
 		if(distances[i]<min)
 		{index = i;
 		min  = distances[i];
 		}
 	}
 	else{
 		min=499;
 		int index2 = -1;
 		for(int i =0; i<distances.length;i++){
 		if(distances[i]<min&&min==499)
 		{index2 = i;
 		min  = distances[i];
 		}
 		else if(distances[i]<min&&min!=499)
 		{
 		index=index2;
 		index2=i;
 		}
 		}
 	}
 	nextTree = index+1;
 }
 else{
 	long num = -2;
 	int index = -1;
 	long [] temp = {tree1TimeAlive,tree2TimeAlive,tree3TimeAlive,tree4TimeAlive,tree5TimeAlive,tree6TimeAlive,tree7TimeAlive};
 	if(!status.equals("Chopping!")){
 	for(int i =0; i < temp.length; i++)
 	{
 		if(temp[i]>=num)
 		{index = i;
 		num = temp[i];
 		}
 	}
 	}
 	else{
 	int index2 = -1;
 	for(int i =0; i < temp.length; i++){
 	if(temp[i]>=num&&num==-2)
 	{
 		index2 = i;
 		num = temp[i];
 	}
 	else if(temp[i]>=num)
 	{
 		index=index2;
 		index2=i;
 	}
 	}
 	}
 	nextTree = index+1;
 }
 }
 	public RSObject getNextTree()
 {
 	if(!treeType.equals("ivy")&&!treeType.equals("willows"))
 	{
 	RSObject [] temp = new RSObject [10];
 	if(nextTree==1)
 	temp = objects.getAllAt(tree1);
 	if(nextTree==2)
 	temp = objects.getAllAt(tree2);
 	if(nextTree==3)
 	temp = objects.getAllAt(tree3);
 	if(nextTree==4)
 	temp = objects.getAllAt(tree4);
 	if(nextTree==5)
 	temp = objects.getAllAt(tree5);
 	if(nextTree==6)
 	temp = objects.getAllAt(tree6);
 	if(nextTree==7)
 	temp = objects.getAllAt(tree7);
 	for(int i = 0; i<temp.length;i++)
 		if(temp[i].getID()==treeID)
 			return temp[i];
 	}
 	else
 	{
 	RSObject [] temp = new RSObject [10];
 	if(nextTree==1)
 	temp = objects.getAllAt(tree1);
 	if(nextTree==2)
 	temp = objects.getAllAt(tree2);
 	if(nextTree==3)
 	temp = objects.getAllAt(tree3);
 	if(nextTree==4)
 	temp = objects.getAllAt(tree4);
 	if(nextTree==5)
 	temp = objects.getAllAt(tree5);
 	if(nextTree==6)
 	temp = objects.getAllAt(tree6);
 	if(nextTree==7)
 	temp = objects.getAllAt(tree7);
 	for(int i = 0; i<temp.length;i++)
 		if(ivyIDs.contains(temp[i].getID()))
 			return temp[i];
 	}
 	return null;
 }
 	public RSTile getMidTile(RSTile tile1, RSTile tile2)
 {
 	int x1 = tile1.getX();
 	int y1 = tile1.getY();
 	int x2 = tile2.getX();
 	int y2 = tile2.getY();

 	return new RSTile((int)(x1+x2)/2,(int)(y1+y2)/2);
 }
 	public void moveToNextTree()
 {
 	status = "Moving to tree: "+nextTree;
 	RSTile [] trees = {tree1,tree2,tree3,tree4,tree5,tree6,tree7};
 	RSTile tileToWalkTo = getMidTile(players.getMyPlayer().getLocation(),trees[nextTree-1]);
 	if(!walking.isRunEnabled()&&walking.getEnergy()>20){
 	 	walking.setRun(true);
 	 	sleep(random(600,800));
 	 	}
 if(command.equals("South Falador - Yews")||command.equals("Draynor - Yews"))
 {
 	moveToNextTreeLong();
 }
 else if(command.equals("Edgeville - Yews")){
 	if(nextTree == 1&& calc.tileOnMap(tree1))
 	tileToWalkTo = new RSTile(tree1.getX(),tree1.getY()-2);
 	if(nextTree == 2&& calc.tileOnMap(tree2))
 	tileToWalkTo = new RSTile(tree2.getX(),tree2.getY()+2);
 }
 else if(command.equals("Grand Exchange - Yews")){
 	if(nextTree == 1&& calc.tileOnMap(tree1))
 	tileToWalkTo = new RSTile(tree1.getX()+2,tree1.getY());
 	if(nextTree == 2&& calc.tileOnMap(tree2))
 	tileToWalkTo = new RSTile(tree2.getX(),tree2.getY());
 	if(nextTree == 3&& calc.tileOnMap(tree3))
 	tileToWalkTo = new RSTile(tree3.getX()-2,tree2.getY());
 }
 else if(command.equals("Catherby - Yews")){
 	if(nextTree == 1&& calc.tileOnMap(tree1))
 	tileToWalkTo = new RSTile(tree1.getX(),tree1.getY()-2);
 	if(nextTree == 2&& calc.tileOnMap(tree2))
 	tileToWalkTo = new RSTile(tree2.getX(),tree2.getY()-2);
 	if(nextTree == 3&& calc.tileOnMap(tree3))
 	tileToWalkTo = new RSTile(tree3.getX(),tree3.getY()-2);
 	if(nextTree == 4&& calc.tileOnMap(tree4))
 	tileToWalkTo = new RSTile(tree4.getX(),tree4.getY()-2);
 	if(nextTree == 5&& calc.tileOnMap(tree5))
 	tileToWalkTo = new RSTile(tree5.getX(),tree5.getY()-2);
  	if(nextTree == 6&& calc.tileOnMap(tree6))
 	tileToWalkTo = new RSTile(tree6.getX(),tree6.getY()-2);
 	if(nextTree == 7&& calc.tileOnMap(tree7))
 	tileToWalkTo = new RSTile(tree7.getX(),tree7.getY()-2);
 }
  else if(command.equals( "Catherby - Yews")){
 	if(nextTree == 1&& calc.tileOnMap(tree1))
 	tileToWalkTo = new RSTile(tree1.getX(),tree1.getY()+2);
 	if(nextTree == 2&& calc.tileOnMap(tree2))
 	tileToWalkTo = new RSTile(tree2.getX(),tree2.getY()+2);
 	if(nextTree == 3&& calc.tileOnMap(tree3))
 	tileToWalkTo = new RSTile(tree3.getX(),tree3.getY()-2);
 }
 else{
 	if(nextTree == 1&& calc.tileOnMap(tree1))
 	tileToWalkTo = tree1;
 	if(nextTree == 2&& calc.tileOnMap(tree2))
 	tileToWalkTo = tree2;
 	if(nextTree == 3&& calc.tileOnMap(tree3))
 	tileToWalkTo = tree3;
 	if(nextTree == 4&& calc.tileOnMap(tree4))
 	tileToWalkTo = tree4;
 	if(nextTree == 5&& calc.tileOnMap(tree5))
 	tileToWalkTo = tree5;
 	if(nextTree == 6&& calc.tileOnMap(tree6))
 	tileToWalkTo = tree6;
 	if(nextTree == 7&& calc.tileOnMap(tree7))
 	tileToWalkTo = tree7;
 }
 if(!command.equals("South Falador - Yews")&&!command.equals("Draynor - Yews"))
 {
 boolean didClick = false;
 	if(calc.tileOnScreen(tileToWalkTo)&&!command.equals("Mage Training Area - Magics"))
 	{if(walking.walkTileOnScreen(tileToWalkTo))
 			didClick=true;}
 	else
 		if(walking.walkTileMM(tileToWalkTo))
 			didClick= true;
 	if(command.equals("Mage Training Area - Magics")&&didClick)
 		while(getMyPlayer().isMoving())
 			sleep(random(600,800));
 	sleep(random(600,800));
 	if(didClick){
 	long start = System.currentTimeMillis();
 	while (!playerIsNear(trees[nextTree-1],4)) {
 	if(System.currentTimeMillis()-start>2000)
 		break;
 	if(System.currentTimeMillis()-start>random(600,800)&&!getMyPlayer().isMoving())
 		walking.walkTileMM(tileToWalkTo);
	sleep(random(100, 200));
	}
	if(!playerIsNear(trees[nextTree-1],4)) //try again
		walking.walkTileMM(tileToWalkTo);
 	}
 }
 }
 	public void moveToNextTreeLong()
 	{
 		RSTile[] trees = {tree1,tree2,tree3,tree4,tree5,tree6,tree7};
 		long start = System.currentTimeMillis();
 		if(location.equals("South Falador")){
 			RSTile[] p1to3 = { tree1, new RSTile(3007, 3318), tree2, new RSTile(3030, 3321), new RSTile(3038,3321), tree3 };
 			RSTile[] p3to1 = walking.reversePath(p1to3);
 			RSTile[] p1to2 = { tree1,new RSTile(3007, 3318), tree2};
 			RSTile[] p2to1 = walking.reversePath(p1to2);
 			RSTile[] p2to3 = { tree2,new RSTile(3030, 3321),new RSTile(3038,3321), tree3 };
 			RSTile[] p3to2 = walking.reversePath(p2to3);

 			RSTile[][] paths = {p1to3,p3to1,p1to2,p2to1,p2to3,p3to2};

 			int choice = -1;
 			if(nextTree ==1 && !atTrees())
 				choice = 1;
 			if(nextTree ==1 && atTrees())
 				choice = 3;
 			else if(nextTree == 2 && playerIsNear(tree3,4))
 				choice = 5;
 			else if(nextTree == 2 && playerIsNear(tree1,4))
 				choice = 2;
 			else if(nextTree == 3)
 				choice = 0;
 			else if(nextTree == 2)
 				choice = 2;

 			if(choice>=0){
 			status = "Moving to tree: "+nextTree;
 			int lastTileToWalkTo = -1;
 			int tempTileToWalkTo = walkPath(paths[choice]);
 			boolean clickedLastTile = false;
 			while(!playerIsNear(trees[nextTree-1],4)&&System.currentTimeMillis()-start<20000){
 				boolean clicked = false;
       		tempTileToWalkTo = walkPath(paths[choice]);
       		if(!clickedLastTile){
       			if(tempTileToWalkTo>lastTileToWalkTo){
       			if(calc.tileOnScreen(paths[choice][tempTileToWalkTo])){
       				if(!walking.walkTileOnScreen(paths[choice][tempTileToWalkTo]))
       					if(walking.walkTileMM(paths[choice][tempTileToWalkTo],1,1))
       						clicked = true;
       					else
       						clicked = false;
       				else
       					clicked = true;
       			}
       			else
       				clicked = walking.walkTileMM(paths[choice][tempTileToWalkTo],1,1);
       		}


       		if(clicked){
       			lastTileToWalkTo = tempTileToWalkTo;
       			if(tempTileToWalkTo==paths[choice].length-1)
       					{
       						clickedLastTile = true;
       					}
       				}
       		}
       		sleep(random(200, 300));
 			}
 			}
 		}
 	   if(location.equals("Draynor")){
 	   		RSTile[] p1to2 = {tree1,new RSTile(3149,3244),tree2};
 	   		RSTile[] p2to1 = walking.reversePath(p1to2);
			RSTile[] p2to3 = {tree2,new RSTile(3161,3222), tree3};
			RSTile[] p3to2 = walking.reversePath(p2to3);
			RSTile[] p3to4 = {tree3, new RSTile(3176,3224), tree4};
			RSTile[] p4to3 = walking.reversePath(p3to4);
			RSTile[] p2to4 = {tree2, new RSTile(3162,3227), new RSTile(3171,3227),tree4};
			RSTile[] p4to2 = walking.reversePath(p2to4);
			RSTile[] p1to3 = {tree1, new RSTile(3151,3248), new RSTile(3153,3241), new RSTile(3161,3228),tree3};
			RSTile[] p3to1 = walking.reversePath(p1to3);
			RSTile[] p1to4 = {tree1, new RSTile(3156,3244), new RSTile(3165,3235), new RSTile(3175,3229), tree4};
			RSTile[] p4to1 = walking.reversePath(p1to4);

			RSTile[][] paths = {p1to2,p2to1,p2to3,p3to2,p3to4,p4to3,p2to4,p4to2,p1to3,p3to1,p1to4,p4to1};

			int choice = -1;
			status = "Moving to tree: "+nextTree;
			if(nextTree ==1 && playerIsNear(tree3,6))
 				choice = 9;
 			else if(nextTree == 1 && playerIsNear(tree2,6))
 				choice = 1;
 			else if(nextTree == 2 && playerIsNear(tree3,6))
 				choice = 3;
 			else if(nextTree == 2 && playerIsNear(tree1,6))
 				choice = 0;
 			else if(nextTree == 3 && playerIsNear(tree1,6))
 				choice = 8;
 			else if(nextTree == 3 && playerIsNear(tree2,6))
 				choice = 2;
 			else if(nextTree == 4 && playerIsNear(tree3,6))
 				choice = 4;
 			else if(nextTree == 3 && playerIsNear(tree4,6))
 				choice = 5;
 			else if(nextTree == 4 && playerIsNear(tree2,6))
 				choice = 6;
 			else if(nextTree == 2 && playerIsNear(tree4,6))
 				choice = 7;
 			else if(nextTree == 4 && playerIsNear(tree1,6))
 				choice = 10;
 			else if(nextTree == 1 && playerIsNear(tree4,6))
 				choice = 11;
 			else if(playerIsNear(new RSTile(3149,3237),6))
 				choice = 0;
 			else if(playerIsNear(new RSTile(3161,3222),6))
 				choice = 2;
 			else if(playerIsNear(new RSTile(3176,3224),6))
 				choice = 4;
 			else if(playerIsNear(new RSTile(3171,3227),6)||playerIsNear(new RSTile(3162,3227),6))
 				choice = 6;
 			else if(playerIsNear(new RSTile(3151,3248),6)||playerIsNear(new RSTile(3153,3241),6)||playerIsNear(new RSTile(3161,3228),6))
 				choice = 8;
 			else if(playerIsNear(new RSTile(3156,3240),6)||playerIsNear(new RSTile(3166,3232),6)||playerIsNear(new RSTile(3176,3229),6))
 				choice = 10;



			if(choice>=0){
			int lastTileToWalkTo = -1;
 			int tempTileToWalkTo = walkPath(paths[choice]);
 			boolean clickedLastTile = false;
 			while(!playerIsNear(trees[nextTree-1],4)&&System.currentTimeMillis()-start<20000){
 				boolean clicked = false;
       		tempTileToWalkTo = walkPath(paths[choice]);
       		if(!clickedLastTile){
       		if(tempTileToWalkTo>lastTileToWalkTo){
       			if(calc.tileOnScreen(paths[choice][tempTileToWalkTo])){
       				if(!walking.walkTileOnScreen(paths[choice][tempTileToWalkTo]))
       					if(walking.walkTileMM(paths[choice][tempTileToWalkTo],1,1))
       						clicked = true;
       					else
       						clicked = false;
       				else
       					clicked = true;
       			}
       			else
       				clicked = walking.walkTileMM(paths[choice][tempTileToWalkTo],1,1);

       		}
       		if(clicked){
       			lastTileToWalkTo = tempTileToWalkTo;
       			if(tempTileToWalkTo==paths[choice].length-1)
       					{
       						clickedLastTile = true;
       					}
       			}
       		}
       		sleep(random(200, 300));
 			}
 			}
 	   }
 	}
 	public void chop(boolean secondTry)
{
	safety = 1;
	if(!treeType.equals("ivy")){
	RSObject treeToChop = getNextTree();
	RSModel m = treeToChop.getModel();
	Point temp = m.getPoint();
    mouse.move(temp);
	}
	RSTile [] ivys = {tree1,tree2,tree3,tree4,tree5,tree6,tree7};


   	if(!secondTry&&treeType.equals("ivy")){

   	if(command.equals("Castle Wars - Ivy")||command.equals("South Falador - Ivy"))
   	{
   		camera.setPitch(false);
   		int tempNum = random(1,2);
		if(tempNum==1)
		camera.setAngle(random(1,30));
		if(tempNum==2)
		camera.setAngle(random(340,359));
   	}
   	if(command.equals("Grand Exchange - Ivy")||command.equals("Yanille - Ivy")||command.equals("North Falador - Ivy"))
   	{
   		camera.setPitch(false);
   		camera.setAngle(random(170,190));
   	}
   	if(command.equals("Taverly - Ivy")||command.equals("Varrock Palace - Ivy"))
   	{
   		camera.setPitch(false);
   		camera.setAngle(random(260,280));
   	}
   	if(command.equals("Ardougne - Ivy"))
   	{
   		camera.setPitch(false);
   		camera.setAngle(random(80,100));
   	}
   	}

   	if(treeType.equals("yews"))
   	menu.doAction("Chop down Yew");
   	else if(treeType.equals("magics"))
   	menu.doAction("Chop down Magic tree");
   	else if(treeType.equals("ivy")){
   	Point p = calc.tileToScreen(ivys[nextTree-1]);
   	p.y-=(random(40,80));
   	p.x+=(random(-10,10));
   	mouse.move(p);
   	menu.doAction("Chop Ivy");
   	}
   	else if(treeType.equals("willows"))
    menu.doAction("Chop down Willow");
   	else if(treeType.equals("maples"))
   	menu.doAction("Chop down Maple tree");
	else if(treeType.equals("oaks"))
	menu.doAction("Chop down Oak");

    sleep(random(600,800));
   	while (players.getMyPlayer().isMoving()) {
						sleep(random(100, 200));
	}
	if(!chopCheck()&&!secondTry)
		chop(true);
}
	public void hoverMouse(){
		if(!players.getMyPlayer().isMoving()){
		RSTile [] trees = {tree1,tree2,tree3,tree4,tree5,tree6,tree7};
		if(calc.tileOnScreen(trees[nextTree-1])){
		Point temp = calc.tileToScreen(trees[nextTree-1]);
		try{
		if(temp.getY()-50>1)
		mouse.move(new Point((int)temp.getX(),(int)temp.getY()-50),1,1);
		else
		mouse.move(new Point((int)temp.getX(),(int)temp.getY()),1,1);
		}catch(Exception e){};
		}
		}
	}
 	public boolean atBank(){
	boolean temp = false;
	if(command.equals("Grand Exchange - Yews")||command.equals("Grand Exchange - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<3171&&getMyPlayer().getLocation().getX()>=3167)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3486&&getMyPlayer().getLocation().getY()<=3492)
		return true;
	}
	if(command.equals("Edgeville - Yews"))
	{
	if(getMyPlayer().getLocation().getX()<3096&&getMyPlayer().getLocation().getX()>=3091)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3488&&getMyPlayer().getLocation().getY()<=3494)
		return true;
	}
	if(command.equals("South Falador - Yews")||command.equals("South Falador - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<3016&&getMyPlayer().getLocation().getX()>=3010)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3355&&getMyPlayer().getLocation().getY()<=3359)
		return true;
	}
	if(command.equals("Rimmington - Yews")||command.equals("Port Salim - Willows")){
		return (getMyPlayer().getLocation().getX()>=3045&&getMyPlayer().getLocation().getY()<=3237&&getMyPlayer().getLocation().getY()>=3234);
	}

	if(command.equals("Catherby - Yews"))
	{
	if(getMyPlayer().getLocation().getX()<=2811&&getMyPlayer().getLocation().getX()>=2807)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3439&&getMyPlayer().getLocation().getY()<=3441)
		return true;
	}
	if(command.equals("Tree Gnome - Yews"))
	{
	if(getMyPlayer().getLocation().getX()<=2446&&getMyPlayer().getLocation().getX()>=2445)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3423&&getMyPlayer().getLocation().getY()<=3428)
		return true;
	}
	if(location.equals("Seer's Village")||command.equals("Sorcerer's Tower - Magics"))
	{
	if(getMyPlayer().getLocation().getX()>=2724&&getMyPlayer().getLocation().getX()<=2728)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3491&&getMyPlayer().getLocation().getY()<=3495)
		return true;
	}
	if(command.equals("Mage Training Area - Magics"))
	{
	return playerIsNear(bankLocation,5);
	}
	if(command.equals("Castle Wars - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<2445&&getMyPlayer().getLocation().getX()>=3086)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3083&&getMyPlayer().getLocation().getY()<=3086)
		return true;
	}
	if(command.equals("Yanille - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<2614&&getMyPlayer().getLocation().getX()>=2611)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3092&&getMyPlayer().getLocation().getY()<=3095)
		return true;
	}
	if(command.equals("Ardougne - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<2616&&getMyPlayer().getLocation().getX()>=2613)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3332&&getMyPlayer().getLocation().getY()<=3334)
		return true;
	}
	if(command.equals("Varrock Palace - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<3255&&getMyPlayer().getLocation().getX()>=3250)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3252&&getMyPlayer().getLocation().getY()<=3422)
		return true;
	}
	if(command.equals("North Falador - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<2948&&getMyPlayer().getLocation().getX()>=2944)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3368&&getMyPlayer().getLocation().getY()<=3371)
		return true;
	}
	if(location.equals("Draynor"))
	{
	if(getMyPlayer().getLocation().getX()<3094&&getMyPlayer().getLocation().getX()>=3092)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3244&&getMyPlayer().getLocation().getY()<=3246)
		return true;
	}
	return false;
}
 	public boolean atTrees()
{
	boolean temp = false;
	if(command.equals("Draynor - Oaks"))
		return playerIsNear(tree1,4)||playerIsNear(tree2,4);
	if(command.equals("Grand Exchange - Yews"))
	{
	if(getMyPlayer().getLocation().getX()>=3203&&getMyPlayer().getLocation().getX()<=3222)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3500&&getMyPlayer().getLocation().getY()<=3505)
		return true;
	}
	if(command.equals("Edgeville - Yews"))
	{
	if(getMyPlayer().getLocation().getX()<3090&&getMyPlayer().getLocation().getX()>=3085)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3468&&getMyPlayer().getLocation().getY()<=3482)
		return true;
	}
	if(command.equals("Rimmington - Yews"))
	{
	if(getMyPlayer().getLocation().getX()<2946&&getMyPlayer().getLocation().getX()>=2923)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3223&&getMyPlayer().getLocation().getY()<=3242)
		return true;
	}
	if(command.equals("Catherby - Yews"))
	{
	if(getMyPlayer().getLocation().getX()<2769&&getMyPlayer().getLocation().getX()>=2751)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3427&&getMyPlayer().getLocation().getY()<=3438)
		return true;
	}
	if(command.equals("Seer's Village - Yews"))
	{
	if(getMyPlayer().getLocation().getX()<2717&&getMyPlayer().getLocation().getX()>=2712)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3462&&getMyPlayer().getLocation().getY()<=3464)
		return true;
	}
	if(command.equals("South Falador - Yews"))
	{
	if(getMyPlayer().getLocation().getX()<3010&&getMyPlayer().getLocation().getX()>=3004)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3317&&getMyPlayer().getLocation().getY()<=3325)
		return true;
	}
	if(command.equals("Draynor - Yews"))
	{
		return playerIsNear(tree2,5);
	}
	if(command.equals("Tree Gnome - Yews"))
	{
		return floorHeight()==0&&playerIsNear(new RSTile (2444,3434),5);
	}
	if(command.equals("Seer's Village - Magics"))
	{
	if(getMyPlayer().getLocation().getX()>=2690&&getMyPlayer().getLocation().getX()<=2699)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3422&&getMyPlayer().getLocation().getY()<=3426)
		return true;
	}
	if(command.equals("Sorcerer's Tower - Magics"))
	{
	if(getMyPlayer().getLocation().getX()<=2704&&getMyPlayer().getLocation().getX()>=2700)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3396&&getMyPlayer().getLocation().getY()<=3400)
		return true;
	}
	if(command.equals("Mage Training Area - Magics"))
	{
	if(getMyPlayer().getLocation().getX()<=3365&&getMyPlayer().getLocation().getX()>=3361)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3296&&getMyPlayer().getLocation().getY()<=3300)
		return true;
	}
	if(command.equals("Castle Wars - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<2431&&getMyPlayer().getLocation().getX()>=2423)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3067&&getMyPlayer().getLocation().getY()<=3068)
		return true;
	}
	if(command.equals("Grand Exchange - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<3220&&getMyPlayer().getLocation().getX()>=3215)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3498&&getMyPlayer().getLocation().getY()<=3502)
		return true;
	}
	if(command.equals("Yanille - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<2599&&getMyPlayer().getLocation().getX()>=2594)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3111&&getMyPlayer().getLocation().getY()<=3112)
		return true;
	}
	if(command.equals("Ardougne - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<2624&&getMyPlayer().getLocation().getX()>=2622)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3304&&getMyPlayer().getLocation().getY()<=3310)
		return true;
	}
	if(command.equals("Varrock Palace - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<3234&&getMyPlayer().getLocation().getX()>=3232)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3456&&getMyPlayer().getLocation().getY()<=3461)
		return true;
	}
	if(command.equals("South Falador - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<3053&&getMyPlayer().getLocation().getX()>=3044)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3326&&getMyPlayer().getLocation().getY()<=3328)
		return true;
	}
	if(command.equals("North Falador - Ivy"))
	{
	if(getMyPlayer().getLocation().getX()<3019&&getMyPlayer().getLocation().getX()>=3010)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3392&&getMyPlayer().getLocation().getY()<=3394)
		return true;
	}
	if(command.equals("Draynor - Willows"))
	{
	if(getMyPlayer().getLocation().getX()<3092&&getMyPlayer().getLocation().getX()>=3083)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3233&&getMyPlayer().getLocation().getY()<=3239)
		return true;
	}
	if(command.equals("Port Salim - Willows"))
	{
	if(getMyPlayer().getLocation().getX()<3064&&getMyPlayer().getLocation().getX()>=3056)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3250&&getMyPlayer().getLocation().getY()<=3256)
		return true;
	}
	if(command.equals("Seer's Village - Maples"))
	{
	if(getMyPlayer().getLocation().getX()<2731&&getMyPlayer().getLocation().getX()>=2727)
		temp=true;
	else
		return false;
	if(getMyPlayer().getLocation().getY()>=3499&&getMyPlayer().getLocation().getY()<=3502)
		return true;
	}
	return false;
}
	public void gate()
   {
   	if(calc.tileToScreen(new RSTile(3348,3279)).x!=-1)
 	{
 		RSObject gate = getGate();
 		while(isGateClosed()){
 			status = "Opening gate.";
 			walking.walkTileMM(new RSTile(3348,3279),1,1);
			RSModel m = gate.getModel();
			Point temp = m.getPoint();
			mouse.move(temp,1,1);
			if(menu.doAction("Open Gate"))
			status = "Gate opened.";
			sleep(random(1000,1200));
 		}
 	}
   }
  	public boolean isGateClosed()
  {
 		RSObject [] test = objects.getAllAt(new RSTile(3348,3279));
 		for(int i = 0; i<test.length;i++)
 		{
 			if(test[i].getID()==27852){
 			return true;
 			}
 		}
 		return false;
  }
  	public RSObject getGate(){
  		RSObject [] test = objects.getAllAt(new RSTile(3348,3279));
 		RSObject gate = null;
 		for(int i = 0; i<test.length;i++)
 		{
 			if(test[i].getID()==27852){
 			gate = test[i];
 			}
 		}
 		return gate;
  }
 	public void walkToBank(){
 	long startTime = System.currentTimeMillis();
 	status = "Walking to bank.";
 	if(random(1,3)==2)
 	camera.setPitch(true);
 	int lastTileToWalkTo = -1;
 	int tempTileToWalkTo = 0;
 	boolean clickedLastTile = false;
 	while(!atBank())
 	{
 		if(!walking.isRunEnabled()&&walking.getEnergy()>20){
 	 	 	walking.setRun(true);
 	 	 	sleep(random(600,800));
 	 	 	}
 	status = "Walking to bank..";
 	if(command.equals("Mage Training Area - Magics"))
 	{
 		gate();
 	}
 	/*if(command.equals("Rimmington - Yews"))
 	{
 		if(!getMyPlayer().isMoving()&&(playerIsNear(new RSTile(2933,3236),3)||playerIsNear(tree4,3)))
 			{walking.walkTileMM(treesToBank[0],1,1);
 			sleep(random(600,800));
 			while(getMyPlayer().isMoving())
 			sleep(random(100,200));}
 	}*/
 	/*if(command.equals("South Falador - Yews"))
 	{
 		if(playerIsNear(tree3,4))
 		{
 		walking.walkTileMM(new RSTile(3030,3321),1,1);
 		while(calc.tileToMinimap(tree2).getX()==-1){
						sleep(random(100, 200));
		}
		walking.walkTileMM(tree2,1,1);
		sleep(random(1200,1500));
 		while (players.getMyPlayer().isMoving()) {
						sleep(random(100, 200));
		}
 		}
 	}*/
 	if(command.equals("Tree Gnome - Yews"))
 	{
 		if(floorHeight()==0)
 		{
 			if(!playerIsNear(new RSTile(2444,3434),4))
 			{
 				walking.walkTileMM(new RSTile(2444,3434));
 				while(getMyPlayer().isMoving())
 					sleep(random(100,200));
 			}
 			else{
 			for(int inc = 0; inc<3;inc++){
 			RSObject stairs = null;
 			RSObject [] tester = objects.getAllAt(new RSTile(2446,3435));
 			for(int i = 0; i<tester.length;i++)
 			{
 				if(tester[i].getID()==1742)
 					stairs = tester[i];
 			}
 			if(stairs!=null){
 				RSModel m = stairs.getModel();
 				Point toClick = m.getPoint();
 				mouse.move(toClick);
 				mouse.click(true);
 				sleep(random(1000,1500));
 			}
 			}
 			if(floorHeight()==1)
 				break;
 			}
 		}
 	}
 	if(command.equals("Grand Exchange - Yews")){
 		if(playerIsNear(tree3,5)){
 			walking.walkTileMM(tree2);
 			sleep(random(600,800));
 		}
 	}

 		if(!getMyPlayer().isMoving()){
 			sleep(random(600,800));
 			if(!getMyPlayer().isMoving())
 				lastTileToWalkTo=-1;
 		}
 			boolean clicked = false;
       		tempTileToWalkTo = walkPath(treesToBank);
       		if(tempTileToWalkTo>lastTileToWalkTo){
       				if(walking.walkTileMM(treesToBank[tempTileToWalkTo],1,1))
       						clicked = true;
       				sleep(random(400,500));
       				if(getMyPlayer().isMoving())
       					clicked = true;
       		}
       		if(clicked){
       			lastTileToWalkTo = tempTileToWalkTo;
       		}
       		sleep(random(200, 300));
 	}
 	}
	public boolean compareTiles(RSTile t1, RSTile t2){
		return t1.getX()==t2.getX()&&t1.getY()==t2.getY();
	}
	public int walkPath(RSTile [] path)
  	{
  		//if(playerIsNear(path[path.length-2],5))
  		//	walking.walkTileMM(path[path.length-1],1,1);
  		//else{
  		int temp = 0;
  		boolean nearSomething = false;
  		for(int i = 0; i<path.length;i++)
  		{
  			if(playerIsNear(path[i],5))
  			{
  			nearSomething = true;
  			temp = i+1;
  			antiBan(random(1,200));
  			for(int j = i; j<path.length; j++)
  			{
  				if(calc.tileToMinimap(path[j]).x<0)
  				{
  					temp=j-1;
  					break;
  				}
  				if(j==path.length-1&&calc.tileToMinimap(path[j]).x>0)
  				{
  					temp=j;
  					break;
  				}
  			}
  			return temp;
  			}
  		}
  		if(!nearSomething){
  			RSTile tempTileToCompare = walking.nextTile(path);
  			for(int i = 0; i<path.length;i++)
  			{
  				if(compareTiles(path[i],tempTileToCompare))
  					return i;
  			}

  		}
  		return 0;
  	}
	public RSItem[] getNestLocations()
	{
		RSItem [] inv = inventory.getItems();
		int length = 0;
		for(int i = 0; i<inv.length;i++)
			for(int j = 0; j<BNIDs.length;j++)
				if(inv[i].getID()==BNIDs[j])
					length++;
		RSItem [] toReturn  = new RSItem [length];
		int index = 0;
		for(int i = 0; i<inv.length;i++)
			for(int j = 0; j<BNIDs.length;j++)
				if(inv[i].getID()==BNIDs[j])
					toReturn[index++] = inv[i];
			return toReturn;
	}
 	public void bank(boolean npc){
 		mouse.setSpeed(random(7,8));
 		if(command.equals("Rimmington - Yews")||command.equals("Port Salim - Willows")){
 			mouse.setSpeed(random(7,8));
 			boolean tryAgain = true;
 			while(inventory.isFull()){
 				tryAgain = true;
 					while(tryAgain) {
 						status = "Opening bank.";
 						RSObject [] test = objects.getAllAt(new RSTile(3047,3237));
 						RSObject bankBox = null;
 						for(int i = 0; i<test.length;i++)
 							if(test[i].getID()==36788)
 								bankBox = test[i];
 						RSModel m = bankBox.getModel();
 						Point p = m.getPoint();
 						mouse.move(p,1,1);
 						if(menu.doAction("Deposit Bank deposit box"))
 							tryAgain = false;
 					}
 				sleep(random(3000,4000));
 	status = "Depositing.";
  	RSItem[] tempArray = getNestLocations();
  	if(tempArray.length!=0)
  	{
  		for(int i = 0; i < tempArray.length;i++)
  			tempArray[i].doAction("Deposit Bird's nest");
  	}
  	bank.depositAllExcept(hatchetIDs);
  	}

    }
 	else 	if(npc)
 	{
 	RSNPC banker = npcs.getNearest(bankerID);
 	if(banker!=null)
    {
    	do{
    	while(!bank.isOpen()) {
    	camera.setAngle(random(1,359));
    	status = "Opening bank.";
    	if(location.equals("Grand Exchange")||location.equals("Draynor")){
   		mouse.move(banker.getModel().getPoint(),1,1);
   		mouse.click(false);
   		menu.doAction("Bank banker");
   		sleep(random(600,800));
   		}
   		if(!bank.isOpen())
       	bank.open();
    	}
    	if(inventory.getCount(hatchetIDs)>0)
    	{status = "Depositing.";
    	RSItem[] tempArray = getNestLocations();
    	if(tempArray.length!=0)
    	{
    		for(int i = 0; i < tempArray.length;i++)
    			tempArray[i].doAction("Deposit Bird's nest");
    	}
    	bank.depositAllExcept(hatchetIDs);}
    	else
    	{
    	status = "Depositing All.";
    	bank.depositAll();
    	sleep(random(600,800));
    	antiBan(random(100,200));
    	}
    	} while(inventory.isFull());
    	full = inventory.isFull();
    	bank.close();
    }
    else
    log("Can't find banker.");
 	}
 	else
 	{
 	RSTile banker = bankLocation;
 	if(calc.tileOnScreen(banker))
 	{
 	do{
 		while(!bank.isOpen()){
    	status = "Opening bank.";
    	mouse.move(calc.tileToScreen(banker));
    	sleep(random(600,800));
    	mouse.click(false);
    	menu.doAction("Bank");
    	sleep(random(1000,2000));
 		}
    	if(inventory.getCount(hatchetIDs)>0)
    	{status = "Depositing.";
    	RSItem[] tempArray = getNestLocations();
    	if(tempArray.length!=0)
    	{
    		for(int i = 0; i < tempArray.length;i++)
    			tempArray[i].doAction("Deposit Bird's nest");
    	}
    	bank.depositAllExcept(hatchetIDs);}
    	else
    	{
    	status = "Depositing All.";
    	bank.depositAll();
    	}
    	sleep(random(1000,2000));
    	} while(inventory.isFull());
    	full = inventory.isFull();
 	}
 	else
 	log("Can't find banker.");
 }
 }
 	public void walkToTrees(){
 		long startTime = System.currentTimeMillis();
 		status = "Walking to trees.";
 		int lastTileToWalkTo = -1;
 		int tempTileToWalkTo = walkPath(bankToTrees);
 		boolean clickedLastTile = false;
 		while(!atTrees()){
 			if(!walking.isRunEnabled()&&walking.getEnergy()>20){
 		 	 	walking.setRun(true);
 		 	 	sleep(random(600,800));
 		 	 	}
 			status = "Walking to trees.";
 			if(command.equals("Mage Training Area - Magics")){
 				gate();
 			}
 			if(command.equals("Tree Gnome - Yews")){
 				if(floorHeight()==1){
 					if(!playerIsNear(new RSTile(2445,3433),5)){
 						walking.walkTileMM(new RSTile(2445,3433));
 						while(getMyPlayer().isMoving())
 							sleep(random(100,200));
 					}
 					else{
 						RSObject temp = objects.getNearest(1744);
 						if(temp!=null)
 							mouse.move(temp.getModel().getPoint());
 						mouse.click(true);
 						sleep(random(600,800));
 					}
 				}
 			}
 			if(!getMyPlayer().isMoving()){
 				sleep(random(600,800));
 				if(!getMyPlayer().isMoving())
 						lastTileToWalkTo=-1;
 			}
 			boolean clicked = false;
 			tempTileToWalkTo = walkPath(bankToTrees);
 			if(tempTileToWalkTo>lastTileToWalkTo){
 				if(walking.walkTileMM(bankToTrees[tempTileToWalkTo],1,1))
 					clicked = true;
 				sleep(random(400,500));
   				if(getMyPlayer().isMoving())
   					clicked = true;
 				}
 			if(clicked){
 				lastTileToWalkTo = tempTileToWalkTo;
 			}
 			sleep(random(200, 300));
		}
 	}
 	public void doBank(int num)
{	if(num==0)
	{
	walkToBank();
	sleep(random(600,800));
	}
	if(!command.equals("Castle Wars - Ivy")&&!command.equals("Mage Training Area - Magics"))
	bank(true);
	else
	bank(false);
	sleep(random(600,800));
	walkToTrees();
	sleep(random(600,800));
}
 	public void serverMessageRecieved(final ServerMessageEvent a){
    final String serverString = a.getMessage();
    if (serverString.toLowerCase().contains("you get some yew logs"))
      yewsCut++;
    else if (serverString.toLowerCase().contains("you get some magic logs"))
      magicsCut++;
    else if(serverString.toLowerCase().contains("your inventory is too full to hold any more logs"))
      full = true;
    else if(serverString.toLowerCase().contains("you successfully chop away some ivy"))
      ivyCut++;
    else if(serverString.toLowerCase().contains("you get some willow logs"))
      willowsCut++;
    else if(serverString.toLowerCase().contains("you get some maple logs"))
      maplesCut++;
  }
  	public boolean playerIsNear(RSTile tile, int d)
  	{
  		return (Math.abs(getMyPlayer().getLocation().getX()-tile.getX())<d&&Math.abs(getMyPlayer().getLocation().getY()-tile.getY())<d);
  	}
  	public boolean checkCurrentVersion()
  	{
  		try{
  			URL checkPage = new URL("http://www.conderogascripts.99k.org/CChopVersion.txt");
  			BufferedReader reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(checkPage.openConnection().getInputStream())));
  			currentVersion = reader.readLine().trim();
  			reader.close();
  		} catch (Exception E){};
  		if(currentVersion.equals(version))
  		return true;
  		else{
  		for(int i = 0; i<5;i++){
  		log(Color.RED, "Your version of the script is out of date.");
  		log(Color.RED, "Please update to version: "+currentVersion);
  		}
  		}
  		return false;
  	}
  	public boolean update()
  	{
  		try{

  	saveUrl("http://www.conderogascripts.99k.org/CChop.txt","CChop.java");


  	log("Update was successful. The new CChop.java file is wherever your RSBot file is.");
  	log("Copy the file into your RSBot/Scripts/Sources folder, compile, and restart the script.");
  	stopScript();
  	}catch(Exception e){log("Update was unsuccessful."); return false;};
  	return true;
  	}
  	public void saveUrl(String urlString, String filename) throws MalformedURLException, IOException
    {
        BufferedInputStream in = null;
        FileOutputStream fout = null;
        try
        {
                in = new BufferedInputStream(new URL(urlString).openStream());
                fout = new FileOutputStream(filename);

                byte data[] = new byte[1024];
                int count;
                while ((count = in.read(data, 0, 1024)) != -1)
                {
                        fout.write(data, 0, count);
                }
        }
        finally
        {
                if (in != null)
                        in.close();
                if (fout != null)
                        fout.close();
        }
    }
    public void mouseExited(MouseEvent e) {
    }
    public void mouseEntered(MouseEvent e) {
    }
    public void mouseReleased(MouseEvent e) {
    	mouseColor = new Color(51,153,0,255);
    }
    public void mousePressed(MouseEvent e) {
    	mouseColor = new Color(255,0,0,100);
    }
    public void mouseClicked(MouseEvent e) {
    p = e.getPoint();
        if(showPaint && p.getX()>447&&p.getX()<513&& p.getY()>458&&p.getY()<473)
            showPaint = false;
        else if(!showPaint && p.getX()>447&&p.getX()<513&& p.getY()>458&&p.getY()<473)
            showPaint = true;
        else if(showPaint && fancyPaint && p.getX()>397&&p.getX()<448&& p.getY()>458&&p.getY()<473)
        	fancyPaint = false;
        else if(showPaint && !fancyPaint && p.getX()>397&&p.getX()<448&& p.getY()>458&&p.getY()<473)
        	fancyPaint = true;
    mouseColor = new Color(255,0,0,100);
    }
    public int distanceTo(RSTile test){
    	RSTile myLoc = players.getMyPlayer().getLocation();
    	return (int)Math.pow(Math.pow(test.getY()-myLoc.getY(),2)+Math.pow(test.getX()-myLoc.getX(),2),.5);
    }
    public int distanceBetween(RSTile t1, RSTile t2){
    	return (int)Math.pow(Math.pow(t1.getY()-t2.getY(),2)+Math.pow(t1.getX()-t2.getX(),2),.5);
    }
    public ArrayList<RSTile> fixPath(ArrayList<RSTile> path){
    	boolean madeSwap = false;
    	do{
    		madeSwap = false;
    		for(int i = 0; i<path.size()-1;i++)
    			if(distanceBetween(path.get(i),path.get(i+1))>7){
    				path.add(i+1,getMidTile(path.get(i),path.get(i+1)));
    				madeSwap = true;
    			}
    	}while(madeSwap);
    	return path;
    }
    public void getUnstuck(){
    	log("Stuck! Moving to Closest Tree/Bank");
    	RSTile [] trees = {tree1,tree2,tree3,tree4,tree5,tree6,tree7};
    	int [] distances  = new int [8];
    	for(int i = 0;i < 7;i++)
    		distances[i] = distanceTo(trees[i]);
    	if(treesToBank.length>0)
    		distances[7] = distanceTo(treesToBank[treesToBank.length-1]);
    	else
    		distances[7] = 9999;
    	int min = 9998;
    	int minIndex = -1;
    	for(int i = 0; i < distances.length;i++){
    		if(distances[i]<min){
    			min = distances[i];
    			minIndex = i;
    		}
    	}
    	//log("Moving to: "+minIndex);
    	RSTile toWalkTo = (minIndex==7) ? treesToBank[treesToBank.length-1] : trees[minIndex];
    	ArrayList<RSTile> path = new ArrayList<RSTile>();
    	path.add(getMyPlayer().getLocation());
    	path.add(toWalkTo);
    	path = fixPath(path);
    	RSTile [] toWalk = new RSTile [path.size()];
    	for(int i = 0; i<path.size();i++)
    		toWalk[i] = path.get(i);
    	//log("Path Length: "+path.size());
    	long start = System.currentTimeMillis();
    	int lastTileToWalkTo = -1;
			int tempTileToWalkTo = walkPath(toWalk);
			boolean clickedLastTile = false;
			while(!playerIsNear(toWalkTo,5)&&System.currentTimeMillis()-start<20000){
				boolean clicked = false;
   		tempTileToWalkTo = walkPath(toWalk);
   		if(!clickedLastTile){
   		if(tempTileToWalkTo>lastTileToWalkTo){
   			if(calc.tileOnScreen(toWalk[tempTileToWalkTo])){
   				if(!walking.walkTileOnScreen(toWalk[tempTileToWalkTo]))
   					if(walking.walkTileMM(toWalk[tempTileToWalkTo],1,1))
   						clicked = true;
   					else
   						clicked = false;
   				else
   					clicked = true;
   			}
   			else
   				clicked = walking.walkTileMM(toWalk[tempTileToWalkTo],1,1);

   		}
   		if(clicked){
   			lastTileToWalkTo = tempTileToWalkTo;
   			if(tempTileToWalkTo==toWalk.length-1)
   					{
   						clickedLastTile = true;
   					}
   			}
   		}
   		sleep(random(200, 300));
			}
    }
    public static int getGEValue(String name, int id){
    	try{
    		String [] temp = name.split(" ");
    		String newName = "";
    		for(int i = 0; i<temp.length; i++)
    			if(i==temp.length-1)
    				newName+=temp[i];
    			else
    				newName+="_"+temp[i];
    		URL url = new URL("http://services.runescape.com/m=itemdb_rs/"+newName+"/viewitem.ws?obj="+id);
    		InputStream is = url.openStream();
    		InputStreamReader isr = new InputStreamReader(is);
    		BufferedReader br = new BufferedReader(isr);
    		String line;
    		String num = "";
    		while((line=br.readLine())!=null){
    			if(line.contains("Current guide price:"))
    			 num = line;
    		}
    		System.out.println(num);
    		if(num.length()<29)
    			return -1;
    		else{
    			num = num.substring(28);
    			num = num.replaceAll(",", "");
    			return Integer.parseInt(num);
    		}

    		}catch(Exception e){
    			return -1;
    		}
    		}
//LOOP====================================================================================================================
	public int loop() {
        try{
        if(safety<1)
          {
          	if(!game.isFixed())
          		for(int i = 0; i<3;i++)
          		log("For best results, please set your window mode to 'fixed'.");
          	setUp();
          	log("Chopping Command: "+command);
          	if(treeType.equals("yews")||treeType.equals("magics")||treeType.equals("willows")||treeType.equals("maples")||treeType.equals("oaks"))
          	{
          	status = "Looking up GE data.";
          	log("Looking up log prices...");
          	if(treeType.equals("yews"))
          		{
          			for(int i = 0; i < 3; i++)
          				{yewPrice = getGEValue("Yew logs",1515);
          				if(yewPrice!=-1)
          					break;
          				}
          			log("Yew log price: "+yewPrice);
          		}
           	else if(treeType.equals("magics"))
           		{
           			for(int i = 0; i < 3; i++){
          				magicPrice = getGEValue("Magic logs",1513);
           			if(magicPrice!=-1)
      					break;
           		}
          			log("Magic logs price: "+magicPrice);
           		}
           	else if(treeType.equals("willows"))
           		{
           			for(int i = 0; i < 3; i++){
          				willowPrice = getGEValue("Willow logs",1519);
           			if(willowPrice!=-1)
      					break;
           		}
          			log("Willow logs price: "+willowPrice);
           		}
           	else if(treeType.equals("maples"))
           		{
           			for(int i = 0; i < 3; i++){
          				maplePrice = getGEValue("Maple logs",1517);
           			if(maplePrice!=-1)
      					break;
           		}
           			log("Maple logs price: "+maplePrice);
           		}
           	else if(treeType.equals("oaks"))
       		{
       			for(int i = 0; i < 3; i++){
      				oakPrice = getGEValue("Oak logs",1521);
       			if(oakPrice!=-1)
  					break;
       		}
       			log("Oak logs price: "+oakPrice);
       		}
           		camera.setPitch(true);
          	}
          	else
          		camera.setPitch(false);
          safety=1;
          full = inventory.isFull();
          if(!full&&atBank())
          	while(!atTrees())
          		walkToTrees();
          if(full&&atBank())
          	doBank(1);
          if(full&&atTrees())
          	doBank(0);
         }

          RSTile [] trees = {tree1,tree2,tree3,tree4,tree5,tree6,tree7};
		  mouse.setSpeed(random(5,8));
          antiBan(random(1,120));
          updateStatus();
		  full = inventory.isFull();

          if(!full) //NEST PICKUP
          pickUpNest();
		  if(full&&!atBank())
		  {
		  	walkToBank();
		  }
		  else if(!full&&atBank()){
			  walkToTrees();
		  }
		  else if(full) //BANK
		  {
		  	if(!location.equals("Taverly"))
		  	doBank(0);
		  }
		  if(status.equals("Chopping!"))
		  {
		  	if(safety<3)
		  	{hoverMouse();
		  	safety++;
		  	}
		  }
          else if(status.equals("Not chopping.")||status.contains("Moving to tree"))
          {
          	long tempTimer = System.currentTimeMillis();
          	while(!getNextTree().isOnScreen()&&System.currentTimeMillis()-tempTimer<5000)
          	moveToNextTree();
          	if(!getNextTree().isOnScreen()){
          	  //log("else");
          	  if(!getMyPlayer().isMoving()&&failSafeTimer==0)
          		  failSafeTimer = System.currentTimeMillis();
          	  if(!getMyPlayer().isMoving()&&System.currentTimeMillis()-failSafeTimer>10000){
          		  getUnstuck();
          		  failSafeTimer = 0;
          	  }
          	}
          	if(!getMyPlayer().isMoving()&&status.contains("Moving to tree")&&System.currentTimeMillis()-tempTimer>15000)
          		getUnstuck();
            chop(false);
          }
          else if(status.equals("Waiting."))
          {
          	if(safety==3)
          	{
          	long tempTimer = System.currentTimeMillis();
          	while(!playerIsNear(trees[nextTree-1],4))
          		moveToNextTree();
          	if(!chopType.equals("ivy"))
          	camera.turnToTile(trees[nextTree-1]);
          	camera.setPitch(random(20,50));
          	}
          	if(safety<5)
          		hoverMouse();
          	safety++;
          }
          else{

          }
        }
    catch (Exception e){/*log("Error: "+e);
    	log(e.getMessage()+"");*/}
    return random(300,500);
    }
//LOOP====================================================================================================================
    public void antiBan(int rand){
	status += "(AB)";
	mouse.setSpeed(random(7,8));
	if(rand==1)
      if(random(1, 8) == 2)
            mouse.moveRandomly(900,1200);
   if(rand==2)
      if(random(1, 8) == 2)
            mouse.moveRandomly(400,800);
   if(rand==3)
      if(random(1, 8) == 2)
            mouse.moveRandomly(200,700);

   if(rand==4) //THIS CHECKS THE WOODCUTTING STAT
      if(random(1, 12) == 2)
        {
            game.openTab(game.TAB_STATS);
            sleep(random(600,800));
            mouse.move(random(681, 690), random(365, 370),0,0);
            sleep(random(1900,2000));
            game.openTab(game.TAB_INVENTORY);
        }
   if(rand==5) //THIS CLICKS THE XP BUTTON UNDER THE COMPASS
   	  if(random(1, 12) == 2 && game.isFixed())
   	  {
   	  	mouse.move(random(527, 540), random(58, 65),0,0);
   	  	sleep(random(800,1000));
   	  	mouse.click(true);
   	  	mouse.moveRandomly(20,50);
   	  	sleep(random(1000,1500));
   	  }
   if(takeBreaks)
   if(rand==6)
   	 if(random(1,6)==2){
   	 	if(random(1,2)==1)
   	 	mouse.moveRandomly(50,75);
   	 	breakActive = true;
   	 	breakLength = random(5,13);
   	 	breakStart = System.currentTimeMillis();
   	 	sleep(breakLength*1000);
   	 	breakActive = false;
   	 }
   	  if(rand==7) //RANDOM SPIN
       if(random(1, 3) == 2)
       {int r = random(1,2);
       	camera.setAngle(random(1,359));
       	if(r!=1)
        camera.setPitch(random(1,99));}

     if(rand==8) //THIS CHECKS A RANDOM TAB
      if(random(1, 4) == 2)
        {
        	int[] tabs = {0,2,3,5,6,7,9,10,11,12,13,14,15};
            game.openTab(tabs[random(0,tabs.length-1)]);
            mouse.moveRandomly(175,200);
            sleep(random(1600,1800));
            sleep(random(900,1000));

        }
     if(rand==9)
     	if(random(1,10)==2)
     	mouse.moveOffScreen();
     status=status.substring(0,status.indexOf('('));

}
    public void onRepaint(Graphics g)
    {
        if(game.isLoggedIn())
         {
         	try{
         	if(breakActive){
         		g.setColor(new Color(0,0,0,100));
         		g.fillRect(0,0,764,501);
         		g.setColor(new Color(255,0,0));
         		long timeLeft = (breakLength*1000)-(System.currentTimeMillis()-breakStart);
         		long secondsLeft=timeLeft/1000;
         		timeLeft-=secondsLeft*1000;
         		String toOutput = "";
         		if(timeLeft<10)
         			toOutput = "00"+timeLeft;
         		else if(timeLeft<100)
         			toOutput = "0"+timeLeft;
         		else
         			toOutput = ""+timeLeft;

         		timeLeft-=secondsLeft*1000;
         		g.drawString("Script will resume in: "+secondsLeft+":"+toOutput,50,200);
         	}
         	if(!treeType.equals("ivy")&&!treeType.equals(".")&&!treeType.equals("willows"))
          		checkTrees();
          	else
          		checkIvy();
          	calculateNextTree();
         	if(startExp==0)
          		{
            		startExp = skills.getCurrentExp(skills.getIndex("woodcutting"));
            		startLevel = skills.getCurrentLevel(skills.getIndex("woodcutting"));
          		}
           	lvlsGained = skills.getCurrentLevel(skills.getIndex("woodcutting")) - startLevel;
           	expGained =  skills.getCurrentExp(skills.getIndex("woodcutting")) - startExp;
		   	long expToLvl = skills.getExpToNextLevel(skills.getIndex("woodcutting"));
       		//setting up the time
          	long ms = System.currentTimeMillis() - startTime;
          	double ms2 = System.currentTimeMillis() - startTimeDbl;
        	long hours = ms/3600000;
         	ms = ms-(hours*3600000);
        	long minutes = ms/60000;
          	ms = ms-(minutes*60000);
         	long seconds =  ms/1000;
          	long time2Lvl = 0;
    		long time2LvlHrs = 0;
			long time2LvlMins = 0;
    		long time2LvlSec = 0;
    		if(ms2!=0&&expGained!=0){
    		time2Lvl = (long)(expToLvl/(expGained/(ms2/3600000))*3600000);
    		time2LvlHrs = time2Lvl/3600000;
    		time2Lvl -= time2LvlHrs*3600000;
    		time2LvlMins = time2Lvl/60000;
    		time2Lvl -= time2LvlMins*60000;
   	 		time2LvlSec = time2Lvl/1000;
   			}
   			yewsCut = expGained/175;
   			magicsCut = expGained/250;
   			ivyCut = (int)((expGained+1)/332.5);
   			willowsCut = (int)((expGained+1)/67.5);
   			maplesCut = expGained/100;
   			oaksCut = (int)((expGained+1)/37.5);

         	if(fancyPaint)
         	{
					if(showPaint){
        			onRepaint2(g,true);

                //Text Color and Output
                g.setColor(new Color(0,0,0,255));
                g.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
                g.drawString("  "+version,450,360);
            	g.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
                g.drawString("Levels Gained: "+lvlsGained,16,40);
                if(treeType.equals("yews"))
                g.drawString("Yews Chopped: "+yewsCut,395,22);
                else if(treeType.equals("magics"))
                g.drawString("Magics Chopped: "+magicsCut,395,22);
                else if(treeType.equals("ivy"))
                g.drawString("Ivy Chopped: "+ivyCut,395,22);
                else if(treeType.equals("willows"))
                g.drawString("Willows Chopped: "+willowsCut,395,22);
                else if(treeType.equals("maples"))
                g.drawString("Maples Chopped: "+maplesCut,395,22);
                else if(treeType.equals("oaks"))
                g.drawString("Oaks Chopped: "+oaksCut,395,22);
                g.drawString("Exp Gained: "+expGained,16,55);
                g.drawString("Time Running: "+hours+":"+minutes+":"+seconds,16,97);

		        //Determine Length:
		        double difference = skills.XP_TABLE[skills.getCurrentLevel(skills.getIndex("woodcutting"))+1]-skills.XP_TABLE[skills.getCurrentLevel(skills.getIndex("woodcutting"))];
	        	double barLength = ((difference-expToLvl)/difference)*512;

	        	  //Progress Bar
	        	g.setColor(new Color(255,0,0,255));
                g.fillRoundRect(4,320,512,18,8,8); //Bar background
                g.setColor(new Color(51,153,0,255)); //GREEN
                g.fillRoundRect(4,320,(int)barLength,18,4,4);
                g.setColor(new Color(0,0,0,255));
                g.drawString(skills.getPercentToNextLevel(skills.getIndex("woodcutting"))+"% to: "+(skills.getCurrentLevel(skills.getIndex("woodcutting"))+1)+" ("+expToLvl+" exp)",215,334);
            	g.setColor(new Color(255,255,255,100));
            	g.fillRoundRect(4,320,512,9,4,4);


                if(ms2!=0)
	        	g.setColor(new Color(0,0,0,255));
                g.drawString("Exp/Hr: "+(int)(expGained/(ms2/3600000)),16,69);
             	g.drawString("Status: "+status,16,22);

             	if(treeType.equals("yews"))
             		{
             		g.drawString("Money Gained: "+yewPrice*yewsCut,154,22);
             		if(ms2!=0)
             			g.drawString("Money/Hr: "+(int)((yewPrice*yewsCut)/(ms2/3600000)),289,22);
             		}
             	else if(treeType.equals("magics"))
             		{
             		g.drawString("Money Gained: "+magicPrice*magicsCut,154,22);
             		if(ms2!=0)
     					g.drawString("Money/Hr: "+(int)((magicPrice*magicsCut)/(ms2/3600000)),289,22);
          	      	}
             	else if(treeType.equals("ivy"))
            	{
             		g.drawString("Nests Collected: "+nests,154,22);
             		if(ms2!=0)
             			g.drawString("Nests/Hr: "+(int)(nests/(ms2/3600000)),289,22);
           	  	}
                else if(treeType.equals("willows"))
                {
                   	g.drawString("Money Gained: "+willowPrice*willowsCut,154,22);
                     if(ms2!=0)
                     	g.drawString("Money/Hr: "+(int)((willowPrice*willowsCut)/(ms2/3600000)),289,22);
                }
                else if(treeType.equals("maples"))
                {
     	           g.drawString("Money Gained: "+maplePrice*maplesCut,154,22);
     	           if(ms2!=0)
     		           g.drawString("Money/Hr: "+(int)((maplePrice*maplesCut)/(ms2/3600000)),289,22);
                }
                else if(treeType.equals("oaks"))
                {
     	           g.drawString("Money Gained: "+oakPrice*oaksCut,154,22);
     	           if(ms2!=0)
     		           g.drawString("Money/Hr: "+(int)((oakPrice*oaksCut)/(ms2/3600000)),289,22);
                }
                g.drawString("Est. Time to Lvl: "+time2LvlHrs+":"+time2LvlMins+":"+time2LvlSec,16,83);
                //Mouse Stuff
                   Point tempPoint = mouse.getLocation();
                   int tempXCoordinate = (int)tempPoint.getX();
                   int tempYCoordinate = (int)tempPoint.getY();
                   g.setColor(mouseColor);
        		   g.drawLine(tempXCoordinate,0,tempXCoordinate,501);
        		   g.drawLine(0,tempYCoordinate,764,tempYCoordinate);
        		   g.fillRect(tempXCoordinate-1,tempYCoordinate-1,3,3);
        		   Color tempColor = new Color(255,0,0,100);
        		   if(mouseColor.equals(tempColor))
        		   	mouseColor=new Color(51,153,0,255);
        	//Stump time drawing
       g.setColor(Color.GREEN);
       stump1 = calc.tileToScreen(tree1);
       stump2 = calc.tileToScreen(tree2);
       stump3 = calc.tileToScreen(tree3);
       stump4 = calc.tileToScreen(tree4);
       stump5 = calc.tileToScreen(tree5);
       stump6 = calc.tileToScreen(tree6);
       stump7 = calc.tileToScreen(tree7);
       //ALIVE TREES
       if(tree1Status&&tree1AliveTime!=0)
       g.drawString((int)(tree1TimeAlive/1000)+"s",(int)stump1.getX(),(int)stump1.getY());
       if(tree2Status&&tree2AliveTime!=0)
       g.drawString((int)(tree2TimeAlive/1000)+"s",(int)stump2.getX(),(int)stump2.getY());
       if(tree3Status&&tree3AliveTime!=0)
       g.drawString((int)(tree3TimeAlive/1000)+"s",(int)stump3.getX(),(int)stump3.getY());
       if(tree4Status&&tree4AliveTime!=0)
       g.drawString((int)(tree4TimeAlive/1000)+"s",(int)stump4.getX(),(int)stump4.getY());
       if(tree5Status&&tree5AliveTime!=0)
       g.drawString((int)(tree5TimeAlive/1000)+"s",(int)stump5.getX(),(int)stump5.getY());
       if(tree6Status&&tree6AliveTime!=0)
       g.drawString((int)(tree6TimeAlive/1000)+"s",(int)stump6.getX(),(int)stump6.getY());
       if(tree7Status&&tree7AliveTime!=0)
       g.drawString((int)(tree7TimeAlive/1000)+"s",(int)stump7.getX(),(int)stump7.getY());
       //DEAD TREES
       g.setColor(Color.MAGENTA);
       if(!tree1Status&&tree1DeadTime!=0)
       g.drawString((int)(tree1TimeDead/1000)+"s",(int)stump1.getX(),(int)stump1.getY());
       if(!tree2Status&&tree2DeadTime!=0)
       g.drawString((int)(tree2TimeDead/1000)+"s",(int)stump2.getX(),(int)stump2.getY());
       if(!tree3Status&&tree3DeadTime!=0)
       g.drawString((int)(tree3TimeDead/1000)+"s",(int)stump3.getX(),(int)stump3.getY());
       if(!tree4Status&&tree4DeadTime!=0)
       g.drawString((int)(tree4TimeDead/1000)+"s",(int)stump4.getX(),(int)stump4.getY());
       if(!tree5Status&&tree5DeadTime!=0)
       g.drawString((int)(tree5TimeDead/1000)+"s",(int)stump5.getX(),(int)stump5.getY());
       if(!tree6Status&&tree6DeadTime!=0)
       g.drawString((int)(tree6TimeDead/1000)+"s",(int)stump6.getX(),(int)stump6.getY());
       if(!tree7Status&&tree7DeadTime!=0)
       g.drawString((int)(tree7TimeDead/1000)+"s",(int)stump7.getX(),(int)stump7.getY());
					}
		else
		{
		g.setColor(new Color(51,153,0,255));
		g.fillRect(448,459,(512-448),(472-459));
		g.setColor(new Color(0,0,0,255));
		g.drawRect(448,459,(512-448),(472-459));
		g.drawString("Hide/Show",450,470);
		}

       }
       else
       {
       	if(showPaint){
       	onRepaint2(g,false);
       	g.setColor(new Color(0, 0, 0, 205));
    	g.fillRoundRect(333, 160, 181, 179, 6, 6);
       	g.setColor(new Color(255,0,0,255));
        g.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
        g.drawString("Conderoga's Chopper "+version,338,177);
    	g.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
        g.drawString("Levels Gained: "+lvlsGained,344,192);
        if(treeType.equals("yews"))
        g.drawString("Yews Chopped: "+yewsCut,344,207);
        else if(treeType.equals("magics"))
        g.drawString("Magics Chopped: "+magicsCut,344,207);
        else if(treeType.equals("ivy"))
        g.drawString("Ivy Chopped: "+ivyCut,344,207);
        else if(treeType.equals("willows"))
        g.drawString("Willows Chopped: "+willowsCut,344,207);
        else if(treeType.equals("maples"))
        g.drawString("Maples Chopped: "+maplesCut,344,207);
        else if(treeType.equals("oaks"))
        g.drawString("Oaks Chopped: "+oaksCut,344,207);
        g.drawString("Exp Gained: "+expGained,344,222);
        g.drawString("Time Running: "+hours+":"+minutes+":"+seconds,344, 237);

        //Progress Bar

    	g.setColor(new Color(255,0,0,255));
        g.fillRoundRect(344,241,150,20,8,8); //Bar background
        g.setColor(new Color(0,255,0,255)); //GREEN
        g.fillRoundRect(344,241,(int)(skills.getPercentToNextLevel(skills.getIndex("woodcutting"))*1.5),20,8,8);
        g.setColor(new Color(255,255,255,100));
        g.drawString(skills.getPercentToNextLevel(skills.getIndex("woodcutting"))+"% to: "+(skills.getCurrentLevel(skills.getIndex("woodcutting"))+1)+" ("+expToLvl+" exp)",348,256);
    	g.fillRoundRect(345,251,148,10,8,8);
    	g.setColor(new Color(0,0,0,255));
        g.drawString(skills.getPercentToNextLevel(skills.getIndex("woodcutting"))+"% to: "+(skills.getCurrentLevel(skills.getIndex("woodcutting"))+1)+" ("+expToLvl+" exp)",347,255);
        g.setColor(new Color(255,0,0,255));
        if(ms2!=0)
         g.drawString("Exp/Hr: "+(int)(expGained/(ms2/3600000)),344,274);
     g.drawString("Status: "+status,344,289);

     if(treeType.equals("yews"))
     	{
     	g.drawString("Money Gained: "+yewPrice*yewsCut,344,304);
     	if(ms2!=0)
     		g.drawString("Money/Hr: "+(int)((yewPrice*yewsCut)/(ms2/3600000)),344,319);
     	}
     else if(treeType.equals("magics"))
     	{
     	g.drawString("Money Gained: "+magicPrice*magicsCut,344,304);
     	if(ms2!=0)
     		g.drawString("Money/Hr: "+(int)((magicPrice*magicsCut)/(ms2/3600000)),344,319);
     	}
     else if(treeType.equals("ivy"))
     {
     	g.drawString("Nests Collected: "+nests,344,304);
     	if(ms2!=0)
     		g.drawString("Nests/Hr: "+(int)(nests/(ms2/3600000)),344,319);
     }
     else if(treeType.equals("willows"))
     {
     	g.drawString("Money Gained: "+willowPrice*willowsCut,344,304);
     	if(ms2!=0)
     		g.drawString("Money/Hr: "+(int)((willowPrice*willowsCut)/(ms2/3600000)),344,319);
     }
     else if(treeType.equals("maples"))
     {
     	g.drawString("Money Gained: "+maplePrice*maplesCut,344,304);
     	if(ms2!=0)
     		g.drawString("Money/Hr: "+(int)((maplePrice*maplesCut)/(ms2/3600000)),344,319);
     }
     else if(treeType.equals("oaks"))
     {
     	g.drawString("Money Gained: "+oakPrice*oaksCut,344,304);
     	if(ms2!=0)
     		g.drawString("Money/Hr: "+(int)((oakPrice*oaksCut)/(ms2/3600000)),344,319);
     }
     g.drawString("Est. Time to Lvl: "+time2LvlHrs+":"+time2LvlMins+":"+time2LvlSec,344,334);
     //Mouse Stuff
        Point tempPoint = mouse.getLocation();
        int tempXCoordinate = (int)tempPoint.getX();
        int tempYCoordinate = (int)tempPoint.getY();
        g.setColor(new Color(0,255,0,100));
        	g.drawLine(tempXCoordinate,0,tempXCoordinate,501);
        	g.drawLine(0,tempYCoordinate,764,tempYCoordinate);
       //Stump time drawing
       g.setColor(Color.GREEN);
       stump1 = calc.tileToScreen(tree1);
       stump2 = calc.tileToScreen(tree2);
       stump3 = calc.tileToScreen(tree3);
       stump4 = calc.tileToScreen(tree4);
       stump5 = calc.tileToScreen(tree5);
       stump6 = calc.tileToScreen(tree6);
       stump7 = calc.tileToScreen(tree7);
       //ALIVE TREES
       if(tree1Status&&tree1AliveTime!=0)
       g.drawString((int)(tree1TimeAlive/1000)+"s",(int)stump1.getX(),(int)stump1.getY());
       if(tree2Status&&tree2AliveTime!=0)
       g.drawString((int)(tree2TimeAlive/1000)+"s",(int)stump2.getX(),(int)stump2.getY());
       if(tree3Status&&tree3AliveTime!=0)
       g.drawString((int)(tree3TimeAlive/1000)+"s",(int)stump3.getX(),(int)stump3.getY());
       if(tree4Status&&tree4AliveTime!=0)
       g.drawString((int)(tree4TimeAlive/1000)+"s",(int)stump4.getX(),(int)stump4.getY());
       if(tree5Status&&tree5AliveTime!=0)
       g.drawString((int)(tree5TimeAlive/1000)+"s",(int)stump5.getX(),(int)stump5.getY());
       if(tree6Status&&tree6AliveTime!=0)
       g.drawString((int)(tree6TimeAlive/1000)+"s",(int)stump6.getX(),(int)stump6.getY());
       if(tree7Status&&tree7AliveTime!=0)
       g.drawString((int)(tree7TimeAlive/1000)+"s",(int)stump7.getX(),(int)stump7.getY());
       //DEAD TREES
       g.setColor(Color.MAGENTA);
       if(!tree1Status&&tree1DeadTime!=0)
       g.drawString((int)(tree1TimeDead/1000)+"s",(int)stump1.getX(),(int)stump1.getY());
       if(!tree2Status&&tree2DeadTime!=0)
       g.drawString((int)(tree2TimeDead/1000)+"s",(int)stump2.getX(),(int)stump2.getY());
       if(!tree3Status&&tree3DeadTime!=0)
       g.drawString((int)(tree3TimeDead/1000)+"s",(int)stump3.getX(),(int)stump3.getY());
       if(!tree4Status&&tree4DeadTime!=0)
       g.drawString((int)(tree4TimeDead/1000)+"s",(int)stump4.getX(),(int)stump4.getY());
       if(!tree5Status&&tree5DeadTime!=0)
       g.drawString((int)(tree5TimeDead/1000)+"s",(int)stump5.getX(),(int)stump5.getY());
       if(!tree6Status&&tree6DeadTime!=0)
       g.drawString((int)(tree6TimeDead/1000)+"s",(int)stump6.getX(),(int)stump6.getY());
       if(!tree7Status&&tree7DeadTime!=0)
       g.drawString((int)(tree7TimeDead/1000)+"s",(int)stump7.getX(),(int)stump7.getY());

       	}
       	else
       	{
       	g.setColor(new Color(51,153,0,255));
		g.fillRect(448,459,(512-448),(472-459));
		g.setColor(new Color(0,0,0,255));
		g.drawRect(448,459,(512-448),(472-459));
		g.drawString("Hide/Show",450,470);
       	}
       }
       }catch (Exception e){};
    }
    }
	private Image getImage(String url) {
        try {
            return ImageIO.read(new URL(url));
        } catch(IOException e) {
            return null;
        }
    }
    private final Color color1 = new Color(1, 1, 1);
    private final Font font1 = new Font("Arial", 0, 12);
    public void onRepaint2(Graphics g1 , boolean fancy) {
        Graphics2D g = (Graphics2D)g1;
        if(fancy){
        g.drawImage(img1, 342, 350, null);
        g.drawImage(img2, 5, 6, null);
        g.drawImage(img4, 5, 29, null);
        }
        g.setColor(new Color(51,153,0,255));
		g.fillRect(448,459,(512-448),(472-459));
		g.fillRect(398,459,(448-398),(472-459));
		g.setColor(new Color(0,0,0,255));
		g.drawRect(448,459,(512-448),(472-459));
		g.drawRect(398,459,(448-398),(472-459));
		g.drawString("Hide/Show",450,470);
		if(fancy)
		g.drawString("Simple",405,470);
		else
		g.drawString("Adv.",415,470);
		}
    public void onFinish() {
        log("Exp gained: "+expGained);
        log("Levels gained: "+lvlsGained);
        log("Thanks for using Conderoga's Chopper!");
    }
	public void openURL(final String url) { // Credits ZombieKnight
    //who gave credits to Dave who gave credits
    // to
    // some guy who made this.
    final String osName = System.getProperty("os.name");
    try {
      if (osName.startsWith("Mac OS")) {
        final Class<?> fileMgr = Class
            .forName("com.apple.eio.FileManager");
        final Method openURL = fileMgr.getDeclaredMethod("openURL",new Class[]{String.class});
        openURL.invoke(null, new Object[]{url});
      } else if (osName.startsWith("Windows")) {
        Runtime.getRuntime().exec(
            "rundll32 url.dll,FileProtocolHandler " + url);
      } else { // assume Unix or Linux
        final String[] browsers = {"firefox", "opera", "konqueror",
            "epiphany", "mozilla", "netscape"};
        String browser = null;
        for (int count = 0; count < browsers.length && browser == null; count++) {
          if (Runtime.getRuntime().exec(
              new String[]{"which", browsers[count]})
              .waitFor() == 0) {
            browser = browsers[count];
          }
        }
        if (browser == null) {
          throw new Exception("Could not find web browser");
        } else {
          Runtime.getRuntime().exec(new String[]{browser, url});
        }
      }
    } catch (final Exception e) {
    }
  }
   	public class CChopGUI extends JFrame {
		private static final long serialVersionUID = 1L;
		public CChopGUI() {
		initComponents();
		}

	  private void button4ActionPerformed(ActionEvent e)
      	  {
      	  	try{
          	guiWait = false;
       		guiExit = true;
       		dispose();
      	  	}catch(Exception ex){log("WTF?!?");};
          }

      private void button2ActionPerformed(ActionEvent e)
      	  {
      	  	try{
        	location = comboBox2.getSelectedItem().toString();
        	takeBreaks = checkBox1.isSelected();
        	nearest = true;
        	guiExit = false;
        	guiWait = false;
        	dispose();
        	}
      	  	catch(Exception ex){log("WTF?!?1");};
          }
      private void button1ActionPerformed(ActionEvent e)
      {
      	try{
      	 chopType = comboBox1.getSelectedItem().toString();
      	 initializeStage2Components();
      	 }
      	  	catch(Exception ex){log("WTF?!?2");};
      }
      /*private void button3ActionPerformed(ActionEvent e)
      {
      	 initComponents();
      	 chopType = null;
      }*/
	private void initComponents() {
		label1 = new JLabel();
		label2 = new JLabel();
		label3 = new JLabel();
		button1 = new JButton();
		comboBox1 = new JComboBox();
		button4 = new JButton();


		//======== this ========
		setAlwaysOnTop(true);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		setFont(new Font("Dialog", Font.PLAIN, 16));
		setResizable(false);
		setTitle("Conderoga's Chopper");
		Container contentPane = getContentPane();
		contentPane.setLayout(null);

		//---- label1 ----
		label1.setText("Conderoga's Chopper Settings");
		label1.setFont(new Font("Comic Sans MS", Font.PLAIN, 20));
		contentPane.add(label1);
		label1.setBounds(25, 15, 315, 39);

		//---- label2 ----
		label2.setText("Version: "+version);
		contentPane.add(label2);
		label2.setBounds(new Rectangle(new Point(25, 50), label2.getPreferredSize()));

		//---- label3 ----
		label3.setText("Select what you wish to chop:");
		label3.setFont(label3.getFont().deriveFont(label3.getFont().getSize() + 2f));
		contentPane.add(label3);
		label3.setBounds(new Rectangle(new Point(10, 105), label3.getPreferredSize()));

		//---- button1 ----
		button1.setText("Confirm and Proceed");
		button1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        button1ActionPerformed(e);
      }
    });
		contentPane.add(button1);
		button1.setBounds(85, 145, 195, 35);

		//---- comboBox1 ----
		comboBox1.setMaximumRowCount(6);
		contentPane.add(comboBox1);
		comboBox1.setModel(new DefaultComboBoxModel(new String[] {

    			"Yews",
     			"Magics",
     			"Ivy",
     			"Willows",
     			"Maples",
     			"Oaks"

    	}));
		comboBox1.setBounds(205, 100, 145, 25);

		//---- button4 ----
		button4.setText("Exit");
		button4.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        button4ActionPerformed(e);
      }
    });
		contentPane.add(button4);
		button4.setBounds(0, 325, 85, 38);



		{ // compute preferred size
			Dimension preferredSize = new Dimension();
			for(int i = 0; i < contentPane.getComponentCount(); i++) {
				Rectangle bounds = contentPane.getComponent(i).getBounds();
				preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
				preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
			}
			Insets insets = contentPane.getInsets();
			preferredSize.width += insets.right;
			preferredSize.height += insets.bottom;
			contentPane.setMinimumSize(preferredSize);
			contentPane.setPreferredSize(preferredSize);
		}
		pack();
		setLocationRelativeTo(getOwner());

	}
	private void initializeStage2Components()
	{
		checkBox1 = new JCheckBox("Take short breaks?",false);
		//checkBox2 = new JCheckBox("Chop nearest?",true);
		label4 = new JLabel();
		comboBox2 = new JComboBox();
		button2 = new JButton();
		label1 = new JLabel();
		label2 = new JLabel();
		button4 = new JButton();


		//======== this ========
		setAlwaysOnTop(true);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		setFont(new Font("Dialog", Font.PLAIN, 16));
		setResizable(false);
		setTitle("Conderoga's Chopper");
		Container contentPane = getContentPane();
		contentPane.setLayout(null);

		//---- label1 ----
		label1.setText("Conderoga's Chopper Settings");
		label1.setFont(new Font("Comic Sans MS", Font.PLAIN, 20));
		contentPane.add(label1);
		label1.setBounds(25, 15, 315, 39);

		//---- label2 ----
		label2.setText("Version: "+version);
		contentPane.add(label2);
		label2.setBounds(new Rectangle(new Point(25, 50), label2.getPreferredSize()));

		//---- label4 ----
		label4.setText("Select where you wish to chop:");
		label4.setFont(label4.getFont().deriveFont(label4.getFont().getSize() + 2f));
		contentPane.add(label4);
		label4.setBounds(10, 210, 180, 16);

		//---- comboBox2 ----
		if(chopType.equals("Yews")){
    	comboBox2.setMaximumRowCount(8);
    	comboBox2.setModel(new DefaultComboBoxModel(new String[] {

      "Grand Exchange",
      "Edgeville",
      "Rimmington",
      "Catherby",
      "Seer's Village",
      "South Falador",
      "Draynor",
      "Tree Gnome"

    	}));
    	}
    	else if(chopType.equals("Magics")){
    	comboBox2.setMaximumRowCount(3);
    	comboBox2.setModel(new DefaultComboBoxModel(new String[] {

      "Seer's Village",
      "Sorcerer's Tower",
      "Mage Training Area"

    	}));
    	}
    	else if(chopType.equals("Ivy")){
    	comboBox2.setMaximumRowCount(8);
    	comboBox2.setModel(new DefaultComboBoxModel(new String[] {

      "Castle Wars",
      "Grand Exchange",
      "Taverly",
      "Yanille",
      "Varrock Palace",
      "Ardougne",
      "South Falador",
      "North Falador"

    	}));
    	}
    	else if(chopType.equals("Willows")){
    	comboBox2.setMaximumRowCount(2);
    	comboBox2.setModel(new DefaultComboBoxModel(new String[] {

      "Draynor",
      "Port Salim"


    	}));
    	}
    	else if(chopType.equals("Maples")){
    	comboBox2.setMaximumRowCount(1);
    	comboBox2.setModel(new DefaultComboBoxModel(new String[] {

      "Seer's Village"


    	}));
    	}
    	else if(chopType.equals("Oaks")){
        	comboBox2.setMaximumRowCount(1);
        	comboBox2.setModel(new DefaultComboBoxModel(new String[] {

          "Draynor"


        	}));
        	}
		contentPane.add(comboBox2);
		comboBox2.setBounds(205, 205, 145, 25);

		//---- checkBox1 ----
		checkBox1.setText("Take short breaks?");
		contentPane.add(checkBox1);
		checkBox1.setBounds(new Rectangle(new Point(120, 250), checkBox1.getPreferredSize()));

		//---- checkBox2 ----
		//checkBox2.setText("Chop nearest?");
		//contentPane.add(checkBox2);
		//checkBox2.setBounds(new Rectangle(new Point(120, 270), checkBox1.getPreferredSize()));

		//---- button2 ----
		button2.setText("Start");
		button2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        button2ActionPerformed(e);
      }
    });
		contentPane.add(button2);
		button2.setBounds(175, 325, 175, 38);


		/*/---- button3 ----
		button3.setText("Choose Again");
		button3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        button2ActionPerformed(e);
      }
    });
		contentPane.add(button3);
		button3.setBounds(85, 325, 130, 38);
		*/
		//---- button4 ----
		button4.setText("Exit");
		button4.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        button2ActionPerformed(e);
      }
    });
		contentPane.add(button4);
		button4.setBounds(0, 325, 85, 38);

		{ // compute preferred size
			Dimension preferredSize = new Dimension();
			for(int i = 0; i < contentPane.getComponentCount(); i++) {
				Rectangle bounds = contentPane.getComponent(i).getBounds();
				preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
				preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
			}
			Insets insets = contentPane.getInsets();
			preferredSize.width += insets.right;
			preferredSize.height += insets.bottom;
			contentPane.setMinimumSize(preferredSize);
			contentPane.setPreferredSize(preferredSize);
		}
		pack();
		setLocationRelativeTo(getOwner());

	}
	private JCheckBox checkBox1;
	//private JCheckBox checkBox2;
	private JLabel label1;
	private JLabel label2;
	private JLabel label3;
	private JButton button1;
	private JComboBox comboBox1;
	private JLabel label4;
	private JComboBox comboBox2;
	private JButton button2;
	private JButton button3;
	private JButton button4;
}
}