I see you're going for an abstract state model, I took a similar approach when writing my first script yesterday
Declaring fields to hold the states is bad design, you should try something like this:
public enum State {
MINING_ORE(new AbstractState() {
...
}),
DROPPING_ORE(new AbstractState() {
...
});
private State(AbstractState abstractState) {
...
}
...
}
then you can just loop through all of the states
for(State s : State.values()) {
if(s.getAbstractState().force(...)) {
s.getAbstractState().run();
}
}
a lot more maintainable and it looks nicer too. also your naming is a bit off