@Override
public final void onStart() {
}
No need to include this if you're simply overriding a method with an empty body. You can remove the entire onStart .
^^ Same applies for onPaint.
private void walkToChickenPen(){
Area chickenPen = new Area(3225, 3301, 3235, 3288);
log("Walking back to pen");
getWalking().webWalk(chickenPen); //Web as gate may be closed
log("Back at pen");
}
you can move the chickenPen up one level:
private static final Area CHICKEN_PEN = new Area(3225, 3301, 3235, 3288);
fightChicken();
new ConditionalSleep(5000, 500) {
@Override
public boolean condition() throws InterruptedException {
log("Waiting to see if we fight a chicken");
return (getCombat().isFighting() || !myPlayer().isMoving()) ;
}
}.sleep();
Since you're already making a separate method for attacking the chicken; why not sleep inside that method as well?
Remove the sleep here.
private boolean fightChicken(){
NPC chicken = npcs.closest(new Filter<NPC>() {
@Override
public boolean match (NPC npc) {
return npc.exists() && npc.getName().equals("Chicken") && npc.isAttackable() && npc.getHealthPercent() >0;
}
});
if (chicken == null){
log("Found no chickens :(");
return false;
} else {
if(chicken.isOnScreen()) {
chicken.interact("Attack");
log("Fight that chicken");
return true;
} else {
//how?
return false;
}
}
}
The above method can be refactored to:
private void fightChicken(){
final NPC chicken = getNpcs().closest(npc -> npc.exists() && npc.getName().equals("Chicken") && npc.isAttackable() && npc.getHealthPercent() > 0);
if (chicken != null) {
if (chicken.isOnScreen()) {
log("Fight that chicken");
if (chicken.interact("Attack")) {
new ConditionalSleep(5000, 500) {
@Override
public boolean condition() throws InterruptedException {
log("Waiting to see if we fight a chicken");
return (getCombat().isFighting() || !myPlayer().isMoving()) ;
}
}.sleep();
}
}
} else {
log("Found no chickens :(");
}
}
Also; notice how I changed the method's type from boolean to void? There's no point in making it a boolean method if you're not doing anything with its return value .