Skip to content

Commit

Permalink
Too many changes to list
Browse files Browse the repository at this point in the history
  • Loading branch information
caleb committed Apr 18, 2022
1 parent 08afa50 commit dc1207d
Show file tree
Hide file tree
Showing 58 changed files with 9,784 additions and 1,322 deletions.
698 changes: 698 additions & 0 deletions .editorconfig

Large diffs are not rendered by default.

36 changes: 19 additions & 17 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,36 +1,38 @@
//file:noinspection GroovyUnusedAssignment
//file:noinspection GrUnresolvedAccess
plugins {
id 'java'
id 'java'
}

repositories {
mavenLocal()
maven {
url = 'https://repo.runelite.net'
}
mavenCentral()
mavenLocal()
maven {
url = 'https://repo.runelite.net'
}
mavenCentral()
}

def runeLiteVersion = '1.8.15'
def runeLiteVersion = '1.8.17'

dependencies {
compileOnly group: 'net.runelite', name:'client', version: runeLiteVersion
compileOnly 'org.jetbrains:annotations:23.0.0'
compileOnly group: 'net.runelite', name: 'client', version: runeLiteVersion

compileOnly 'org.projectlombok:lombok:1.18.4'
annotationProcessor 'org.projectlombok:lombok:1.18.4'
compileOnly 'org.projectlombok:lombok:1.18.22'
annotationProcessor 'org.projectlombok:lombok:1.18.4'

testImplementation 'junit:junit:4.12'
testImplementation 'org.slf4j:slf4j-simple:1.7.12'
testImplementation group: 'net.runelite', name:'client', version: runeLiteVersion, {
exclude group: 'ch.qos.logback', module: 'logback-classic'
}
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.slf4j:slf4j-simple:1.7.36'

testImplementation group: 'net.runelite', name: 'client', version: runeLiteVersion, {
exclude group: 'ch.qos.logback', module: 'logback-classic'
}
}

group = 'uk.calebwhiting'
version = '1.02'
version = '1.03-SNAPSHOT'
sourceCompatibility = '1.8'

tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
options.encoding = 'UTF-8'
}
Binary file added icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions runelite-plugin-action-progress.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4" />
2 changes: 1 addition & 1 deletion runelite-plugin.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ displayName=Action Progress
author=Caleb Whiting
support=https://github.com/CalebWhiting/runelite-plugin-action-progress
description=Display action progress
tags=progress,skill,skilling,action,display,crafting,dialog,status
tags=progress,skill,skilling,action,display,crafting,smithing,fletching,cooking,herblore,dialog,status,tempoross
plugins=com.github.calebwhiting.runelite.plugins.actionprogress.ActionProgressPlugin
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.github.calebwhiting.runelite.api.event.InterruptEvent;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.*;
Expand All @@ -12,119 +13,98 @@
import net.runelite.client.eventbus.Subscribe;

import java.util.Arrays;
import java.util.List;


@Slf4j
@Singleton
public class InterruptionListener {

private static final int[] WIDGET_CLICK_INTERRUPTS = {
/*
* Tab buttons
*/
7602203, 7602204, 7602206, // settings buttons
25362433, 25362435, 25362437, 25362439, // equipment buttons
38862852, 38862856, 38862860, 38862864, 38862878, // combat buttons
7602203, 7602204, 7602206, /* settings buttons */
25362433, 25362435, 25362437, 25362439, /* equipment buttons */
38862852, 38862856, 38862860, 38862864, 38862878,/* combat buttons */
/*
* Equipment slots
*/
25362447, 25362448, 25362449, 25362457, 25362450, 25362451, 25362452, 25362453,
25362455, 25362454, 25362456,
25362447, 25362448, 25362449, 25362457, 25362450, 25362451, 25362452, 25362453, 25362455, 25362454,
25362456,
/*
* Prayers
*/
35454981, 35454982, 35454983, 35454984, 35454985, 35454986, 35454987, 35454988,
35454989, 35454990, 35454991, 35454992, 35454993, 35454994, 35454995, 35454996,
35454997, 35454998, 35454999, 35455000, 35455001, 35455002, 35455003, 35455004,
35455005, 35455006, 35455007, 35455008
35454981, 35454982, 35454983, 35454984, 35454985, 35454986, 35454987, 35454988, 35454989, 35454990,
35454991, 35454992, 35454993, 35454994, 35454995, 35454996, 35454997, 35454998, 35454999, 35455000,
35455001, 35455002, 35455003, 35455004, 35455005, 35455006, 35455007, 35455008
};

private static final int KOUREND_FAVOUR_OVERVIEW_GROUP_ID = 626;
private static final int CHATBOX_MAKE_GROUP_ID = 270;
private static final int SKILL_GUIDE_GROUP_ID = 214;
private static final int COMBAT_ACHIEVEMENTS_GROUP_ID = 717;

private static final int[] WIDGET_GROUPS_INTERRUPT = {
WidgetID.COLLECTION_LOG_ID,
WidgetID.LEVEL_UP_GROUP_ID, WidgetID.BANK_GROUP_ID, WidgetID.BANK_PIN_GROUP_ID,
WidgetID.DEPOSIT_BOX_GROUP_ID, WidgetID.ACHIEVEMENT_DIARY_GROUP_ID,
WidgetID.ADVENTURE_LOG_ID, WidgetID.BANK_INVENTORY_GROUP_ID, WidgetID.DIALOG_NPC_GROUP_ID,
WidgetID.DIALOG_PLAYER_GROUP_ID, WidgetID.DIALOG_OPTION_GROUP_ID, WidgetID.DIALOG_SPRITE_GROUP_ID,
WidgetID.DESTROY_ITEM_GROUP_ID, WidgetID.DUEL_INVENTORY_GROUP_ID, WidgetID.DUEL_INVENTORY_OTHER_GROUP_ID,
WidgetID.EXPLORERS_RING_ALCH_GROUP_ID, WidgetID.FAIRY_RING_GROUP_ID, WidgetID.FISHING_TRAWLER_REWARD_GROUP_ID,
WidgetID.BARROWS_REWARD_GROUP_ID, WidgetID.GRAND_EXCHANGE_GROUP_ID, WidgetID.KILL_LOGS_GROUP_ID,
WidgetID.GUIDE_PRICE_GROUP_ID, WidgetID.KEPT_ON_DEATH_GROUP_ID, WidgetID.RUNE_POUCH_GROUP_ID,
WidgetID.SHOP_GROUP_ID, WidgetID.SEED_VAULT_GROUP_ID, WidgetID.SLAYER_REWARDS_GROUP_ID,
WidgetID.SMITHING_GROUP_ID, WidgetID.DIARY_QUEST_GROUP_ID, KOUREND_FAVOUR_OVERVIEW_GROUP_ID,
CHATBOX_MAKE_GROUP_ID, SKILL_GUIDE_GROUP_ID, COMBAT_ACHIEVEMENTS_GROUP_ID
WidgetID.COLLECTION_LOG_ID, WidgetID.LEVEL_UP_GROUP_ID, WidgetID.BANK_GROUP_ID, WidgetID.BANK_PIN_GROUP_ID,
WidgetID.DEPOSIT_BOX_GROUP_ID, WidgetID.ACHIEVEMENT_DIARY_GROUP_ID, WidgetID.ADVENTURE_LOG_ID,
WidgetID.BANK_INVENTORY_GROUP_ID, WidgetID.DIALOG_NPC_GROUP_ID, WidgetID.DIALOG_PLAYER_GROUP_ID,
WidgetID.DIALOG_OPTION_GROUP_ID, WidgetID.DIALOG_SPRITE_GROUP_ID, WidgetID.DESTROY_ITEM_GROUP_ID,
WidgetID.DUEL_INVENTORY_GROUP_ID, WidgetID.DUEL_INVENTORY_OTHER_GROUP_ID,
WidgetID.EXPLORERS_RING_ALCH_GROUP_ID, WidgetID.FAIRY_RING_GROUP_ID,
WidgetID.FISHING_TRAWLER_REWARD_GROUP_ID, WidgetID.BARROWS_REWARD_GROUP_ID,
WidgetID.GRAND_EXCHANGE_GROUP_ID, WidgetID.KILL_LOGS_GROUP_ID, WidgetID.GUIDE_PRICE_GROUP_ID,
WidgetID.KEPT_ON_DEATH_GROUP_ID, WidgetID.RUNE_POUCH_GROUP_ID, WidgetID.SHOP_GROUP_ID,
WidgetID.SEED_VAULT_GROUP_ID, WidgetID.SLAYER_REWARDS_GROUP_ID, WidgetID.SMITHING_GROUP_ID,
WidgetID.DIARY_QUEST_GROUP_ID, KOUREND_FAVOUR_OVERVIEW_GROUP_ID, CHATBOX_MAKE_GROUP_ID,
SKILL_GUIDE_GROUP_ID, COMBAT_ACHIEVEMENTS_GROUP_ID
};

private static final List<MenuAction> MENU_ACTIONS_INTERRUPT = Arrays.asList(
MenuAction.WALK,
MenuAction.ITEM_FIFTH_OPTION, // drop
MenuAction.ITEM_SECOND_OPTION,
MenuAction.ITEM_USE_ON_GAME_OBJECT,
MenuAction.ITEM_USE_ON_GROUND_ITEM,
MenuAction.ITEM_USE_ON_PLAYER,
MenuAction.ITEM_USE_ON_NPC,
MenuAction.SPELL_CAST_ON_GROUND_ITEM,
MenuAction.SPELL_CAST_ON_PLAYER,
MenuAction.SPELL_CAST_ON_NPC,
MenuAction.SPELL_CAST_ON_GAME_OBJECT,
MenuAction.SPELL_CAST_ON_WIDGET
);
private static final MenuAction[] MENU_ACTIONS_INTERRUPT = {
MenuAction.WALK, MenuAction.ITEM_FIFTH_OPTION, MenuAction.ITEM_SECOND_OPTION,
MenuAction.ITEM_USE_ON_GAME_OBJECT, MenuAction.ITEM_USE_ON_GROUND_ITEM, MenuAction.ITEM_USE_ON_PLAYER,
MenuAction.ITEM_USE_ON_NPC, MenuAction.SPELL_CAST_ON_GROUND_ITEM, MenuAction.SPELL_CAST_ON_PLAYER,
MenuAction.SPELL_CAST_ON_NPC, MenuAction.SPELL_CAST_ON_GAME_OBJECT, MenuAction.SPELL_CAST_ON_WIDGET
};
@Getter private boolean waiting;
@Inject private Client client;
@Inject private EventBus eventBus;
private LocalPoint initialDestination;

static {
Arrays.sort(WIDGET_CLICK_INTERRUPTS);
Arrays.sort(WIDGET_GROUPS_INTERRUPT);
Arrays.sort(MENU_ACTIONS_INTERRUPT);
}

@Getter
private boolean waiting = false;

@Inject
private Client client;

@Inject
private EventBus eventBus;

private LocalPoint initialDestination;

public void interrupt(String message) {
if (waiting) {
eventBus.post(new InterruptEvent());
private void interrupt(String message) {
if (this.waiting) {
this.eventBus.post(new InterruptEvent());
this.waiting = false;
log.debug("Interrupted by {}", message);
}
}

public void setWaiting(boolean waiting) {
//noinspection AssignmentUsedAsCondition
if (this.waiting = waiting) onBeginWaiting();
}

private void onBeginWaiting() {
this.initialDestination = client.getLocalDestinationLocation();
if (waiting) {
this.initialDestination = this.client.getLocalDestinationLocation();
}
this.waiting = waiting;
}

@Subscribe
public void onGameTick(GameTick evt) {
Player localPlayer = client.getLocalPlayer();
Player localPlayer = this.client.getLocalPlayer();
if (localPlayer == null) {
this.interrupt("null player");
}
LocalPoint dest = client.getLocalDestinationLocation();
LocalPoint dest = this.client.getLocalDestinationLocation();
if (dest != null) {
if (initialDestination == null || dest.distanceTo(initialDestination) != 0) {
this.interrupt("player moved");
if (this.initialDestination == null || dest.distanceTo(this.initialDestination) != 0) {
this.interrupt("target destination changed");
}
}
}

@Subscribe
public void onInteractingChanged(InteractingChanged evt) {
if (evt.getSource() == client.getLocalPlayer())
if (evt.getSource() == this.client.getLocalPlayer()) {
this.interrupt("interaction changed");
}
}

@Subscribe
Expand All @@ -142,21 +122,29 @@ public void onResizeableChanged(ResizeableChanged evt) {

@Subscribe
public void onMenuOptionClicked(MenuOptionClicked evt) {
if (MENU_ACTIONS_INTERRUPT.contains(evt.getMenuAction())) {
this.interrupt("menu action: " + evt.getMenuAction());
} else if (evt.getMenuAction() == MenuAction.CC_OP) {
if (Arrays.binarySearch(WIDGET_CLICK_INTERRUPTS, evt.getParam1()) >= 0) {
this.interrupt("menu action: " + evt.getMenuAction() + ", widget=" + evt.getParam1());
}
if (Arrays.binarySearch(MENU_ACTIONS_INTERRUPT, evt.getMenuAction()) >= 0) {
this.interrupt(String.format("menu action: %s", evt.getMenuAction()));
} else if (evt.getMenuAction() == MenuAction.CC_OP &&
Arrays.binarySearch(WIDGET_CLICK_INTERRUPTS, evt.getParam1()) >= 0) {
this.interrupt(String.format("menu action: %s, widget=%d", evt.getMenuAction(), evt.getParam1()));
}
}

@Subscribe
public void onWidgetLoaded(WidgetLoaded evt) {
int groupId = evt.getGroupId();
if (Arrays.binarySearch(WIDGET_GROUPS_INTERRUPT, groupId) >= 0) {
this.interrupt("widget group: " + groupId);
this.interrupt(String.format("widget group: %d", groupId));
}
}

@Subscribe
public void onChatMessage(ChatMessage evt) {
if (evt.getType() == ChatMessageType.GAMEMESSAGE) {
if (evt.getMessage().matches("You need level ([0-9]*) ([A-Za-z]*) to (.*)$")) {
this.interrupt(String.format("level requirement: %s", evt.getMessage()));
}
}
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,16 @@
@Singleton
public class InventoryHelper {

@Inject
private Client client;
@Inject private Client client;

@Inject
private EventBus eventBus;
@Inject private EventBus eventBus;

@Subscribe
public void onMenuOptionClicked(MenuOptionClicked evt) {
if (evt.getMenuAction() != MenuAction.ITEM_USE) {
return;
}
ItemContainer inventory = client.getItemContainer(InventoryID.INVENTORY);
ItemContainer inventory = this.client.getItemContainer(InventoryID.INVENTORY);
if (inventory == null) {
return;
}
Expand All @@ -37,21 +35,38 @@ public void onMenuOptionClicked(MenuOptionClicked evt) {
}

public Stream<Item> getItems() {
ItemContainer inventory = client.getItemContainer(InventoryID.INVENTORY);
ItemContainer inventory = this.client.getItemContainer(InventoryID.INVENTORY);
if (inventory == null) {
return Stream.empty();
}
return Stream.of(inventory.getItems());
}

public int getFreeSpaces() {
ItemContainer container = this.client.getItemContainer(InventoryID.INVENTORY);
if (container == null) {
return 0;
}
int free = 28;
for (Item item : container.getItems()) {
if (item.getId() >= 0) {
free--;
}
}
return free;
}

public int getItemCount(IntPredicate idPredicate) {
return getItems().filter(it -> idPredicate.test(it.getId())).mapToInt(Item::getQuantity).sum();
return this.getItems().filter(it -> idPredicate.test(it.getId())).mapToInt(Item::getQuantity).sum();
}

public final int getItemCount(int... ids) {
public int getItemCountById(int... ids) {
if (ids.length == 0) {
throw new IllegalArgumentException("Must specify at least one item ID");
}
int[] copy = ids.clone();
Arrays.sort(copy);
return getItemCount(id -> Arrays.binarySearch(copy, id) >= 0);
return this.getItemCount(id -> Arrays.binarySearch(copy, id) >= 0);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.github.calebwhiting.runelite.api;

public abstract class LazyInitializer<T> {

private boolean initialized = false;
private T value;

public T get() {
if (!initialized) {
this.value = this.create();
this.initialized = true;
}
return this.value;
}

protected abstract T create();

}
Loading

0 comments on commit dc1207d

Please sign in to comment.