because i was bored , i rewrote it:
import java.util.function.BooleanSupplier;
import org.osbot.rs07.api.ui.Spells;
import org.osbot.rs07.api.ui.Tab;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;
@ScriptManifest(logo = "", name = "Simple Recoil Enchanter", author = "Saiyan", info = "Recoil enchanter", version = 0)
public class Main extends Script {
@Override
public void onStart() {
log("recoil enchanter");
}
private class DynamicSleep extends ConditionalSleep {
private final BooleanSupplier condition;
public DynamicSleep(final BooleanSupplier condition, int timeout) {
super(timeout);
this.condition = condition;
}
@Override
public boolean condition() throws InterruptedException {
return condition.getAsBoolean();
}
}
@Override
public int onLoop() throws InterruptedException {
if (canEnchant()) {
enchantRing();
log("enchantRing active");
} else {
banking();
log("banking active");
}
return 350;
}
private boolean canEnchant() {
return getInventory().contains("Sapphire ring") && getInventory().contains("Cosmic rune")
&& !getBank().isOpen();
}
private void enchantRing() throws InterruptedException {
if (!getTabs().open(Tab.MAGIC)) {
getTabs().open(Tab.MAGIC);
} else {
if (getMagic().canCast(Spells.NormalSpells.LVL_1_ENCHANT)) {
if (getMagic().castSpell(Spells.NormalSpells.LVL_1_ENCHANT)) {
if (getInventory().interact("Cast", "Sapphire ring")) {
new DynamicSleep(() -> getTabs().getOpen() == Tab.MAGIC, 5000).sleep();
}
}
}
}
}
@SuppressWarnings("unchecked")
private void banking() throws InterruptedException {
if (!getBank().isOpen()) {
if (getBank().open())
new DynamicSleep(() -> getBank().isOpen(), 5000).sleep();
} else if (getInventory()
.contains(i -> !i.getName().equals("Cosmic rune") && !i.getName().equals("Sapphire ring"))) {
getBank().depositAllExcept("Cosmic rune", "Sapphire ring");
} else if (!getInventory().contains("Cosmic rune")) {
if (getBank().contains("Cosmic rune"))
getBank().withdrawAllButOne("Cosmic rune");
else
stop();
} else if (!getInventory().contains("Sapphire ring")) {
if (getBank().contains("Sapphire ring"))
getBank().withdrawAll("Sapphire ring");
else
stop();
} else {
getBank().close();
}
}
}