07:53:10,00:12:22 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
07:53:31,00:12:44 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
07:53:33,00:12:46 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
07:53:35,00:12:47 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
07:53:36,00:12:49 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
07:53:38,00:12:51 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
07:53:40,00:12:52 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
07:53:41,00:12:54 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
07:53:43,00:12:56 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
07:53:45,00:12:57 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
07:53:46,00:12:59 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
07:53:48,00:13:00 [INFO ] [AIO Farming] [ Magic] Activating LUMBRIDGE_HOME_TELEPORT with action Cast
keeps clicking lumby for over 30 minutes, just make it do something else or skip this if the hometeleport is grayed out or you see the 30m message
This i use for getting last relevant message. IDK if you can just look at spellbook if its usable. and skip chat message lookup
private enum GrinderState {
NONE,
NEEDS_WIND,
NEEDS_EMPTY
}
private GrinderState grinderState = GrinderState.NONE;
public void onLoop() {
List<Chatbox.Message> messages = Chatbox.getMessages();
updateGrinderStateFromChat(messages);
}
/* ---------------- CHAT ---------------- */
private GrinderState mapChatToState(String t) {
if (t.contains("you need to empty") || (t.contains("some crushed") && t.contains("pour"))) {
return GrinderState.NEEDS_EMPTY;
}
if (t.contains("you need to wind the handle")
|| t.contains("there are already some")
|| ( t.contains("you put some") && t.contains("grinder") && t.contains("hopper"))){
return GrinderState.NEEDS_WIND;
}
if (t.contains("the grinder is already empty")
|| t.contains("you wind the grinder")||t.contains("you fill a pot with crushed")) {
return GrinderState.NONE;
}
return grinderState;
}
private long lastMessageCycle = -1;
private void updateGrinderStateFromChat(List<Chatbox.Message> messages) {
if (messages == null || messages.isEmpty()) return;
for (Chatbox.Message msg : messages) {
if (msg.getCycle() <= lastMessageCycle) continue;
String text = msg.getMessage().toLowerCase();
if (!isRelevant(text)) continue;
lastMessageCycle = msg.getCycle();
grinderState = mapChatToState(text);
break;
}
}
private boolean isRelevant(String text) {
return text.contains("wind")
|| text.contains("empty")
|| text.contains("grinder")
|| text.contains("bones");
}
also the crystal tree if the patch is empty, it tries getting compost from gnome, opens gnome 1 microseconds, but when at gnome walks back to tree patch without compost again (loop forever)
maybe add: if(Inventory.has *COMPOST*) then click crytal tree. OR goto gnome until has compost. if gnome empty(not in my case still buggs) SKIP crytal tree