So the first time I ran my script, in the if statement that returns State.MINE didn't have "miningArea.contains(myPosition())" included in it. The script ran fine and returned State.MINE when the criteria was met, but once I added "miningArea.contains(myPosition())" if went to the default return case State.WAIT every time. This seems to be the case anytime I use AREA.contains(myPosition()) in an if/else statement. I also double checked to make sure my player was in the area "mineArea". I'm new to scripting so I might be missing something completely obvious so please point anything out.
private State getState() {
Area miningArea = new Area(3221, 3150, 3226, 3143);
Area bankArea = new Area(3205, 3223, 3212, 3214);
bankArea.setPlane(2);
/*
* if (I'm at the mine)
* if (My inventories empty and I'm not animating)
* Mine Rocks
*/
if (!getInventory().isFull() && !myPlayer().isAnimating()
&& miningArea.contains(myPosition())) {
log("mining. . .");
return State.MINE;
/*
* if (I'm at the mine and my inventory is full)
* Run to the bank
*/
} else if (getInventory().isFull() && !bankArea.contains(myPosition())) {
log("running to bank. . .");
return State.RUN_BANK;
/*
* if (I'm at the bank and my inventory is empty) Run to the mine
*/
} else if (bankArea.contains(myPosition()) && getInventory().isEmpty()) {
log("running to mine. . .");
return State.RUN_MINE;
/*
* if (I'm at the bank and my inventory is full)
* Bank Items
*/
} else if (bankArea.contains(myPosition()) && getInventory().isFull()) {
log("banking. . .");
return State.BANK;
/*
* none of the other conditions are satisfied
* Wait
*/
} else {
log("waiting. . .");
return State.WAIT;
}
}