get rid of all of the 'else's in your getState. if a statement is false, it will automatically check the next one down as this is how java code reads. I don't think at first glance that this will change how the script functions (its a little hard to see from the formatting - if you use eclipse, press ctrl+alt+f frequently), but it will make it much easier to read and debug.
To debug it, I suggest putting log statements between every line of your banking code to see where the problem is. This will show you where the code gets to and doesn't get to..
Also, don't use localWalker.walkPath(position). I see why you used an array but instead of doing this, hop onto the sdn and use the divin pathrecording tool (i think thats what it's called), and record a full Position[] path of all the positions between the bank and the trees.
Also on a side note:
private Position[] barbWillows = { new Position(2518, 3576, 0) };
private Position[] bankPos = { new Position(2535, 3574, 0) };
ew.
That's storing a single piece of data in an array. Seeing as the length of the array never changes, you're better off defining it as:
private Position barbWillows = new Position(2518, 3576, 0);
private Position bankPos = new Position(2535, 3574, 0);
apa