diff --git a/gradle.properties b/gradle.properties index cbef9075e5..6be58bdc42 100644 --- a/gradle.properties +++ b/gradle.properties @@ -31,7 +31,7 @@ project.build.group=net.runelite project.build.version=1.12.10 glslang.path= -microbot.version=2.1.1 +microbot.version=2.1.2 microbot.commit.sha=nogit microbot.repo.url=http://138.201.81.246:8081/repository/microbot-snapshot/ microbot.repo.username= diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotPlugin.java index be926a9d28..147996e076 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotPlugin.java @@ -20,6 +20,7 @@ import net.runelite.client.plugins.microbot.ui.MicrobotPluginConfigurationDescriptor; import net.runelite.client.plugins.microbot.ui.MicrobotPluginListPanel; import net.runelite.client.plugins.microbot.ui.MicrobotTopLevelConfigPanel; +import net.runelite.client.plugins.microbot.util.bank.Rs2Bank; import net.runelite.client.plugins.microbot.util.equipment.Rs2Equipment; import net.runelite.client.plugins.microbot.util.inventory.Rs2Gembag; import net.runelite.client.plugins.microbot.util.inventory.Rs2Inventory; @@ -215,7 +216,7 @@ public void onRuneScapeProfileChanged(RuneScapeProfileChanged event) public void onItemContainerChanged(ItemContainerChanged event) { Microbot.getPouchScript().onItemContainerChanged(event); - if (event.getContainerId() == InventoryID.INV) + if (event.getContainerId() == InventoryID.INV) { Rs2Inventory.storeInventoryItemsInMemory(event); } @@ -223,6 +224,10 @@ else if (event.getContainerId() == InventoryID.WORN) { Rs2Equipment.storeEquipmentItemsInMemory(event); } + else if (event.getContainerId() == InventoryID.BANK) + { + Rs2Bank.updateLocalBank(event); + } else if (Arrays.stream(getShopContainerIds()).anyMatch(sid -> Objects.equals(event.getContainerId(), sid))) { Rs2Shop.storeShopItemsInMemory(event, event.getContainerId()); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/bank/Rs2Bank.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/bank/Rs2Bank.java index b8cfcaf29f..7b76be57fe 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/bank/Rs2Bank.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/bank/Rs2Bank.java @@ -5,8 +5,10 @@ import net.runelite.api.*; import net.runelite.api.coords.WorldArea; import net.runelite.api.coords.WorldPoint; +import net.runelite.api.events.ItemContainerChanged; import net.runelite.api.gameval.InterfaceID; import net.runelite.api.gameval.ItemID; +import net.runelite.api.gameval.InventoryID; import net.runelite.api.gameval.VarbitID; import net.runelite.api.widgets.ComponentID; import net.runelite.api.widgets.Widget; @@ -158,20 +160,56 @@ public static Rectangle itemBounds(Rs2ItemModel rs2Item) { * * @return {@code true} if the bank interface is open, {@code false} otherwise. */ - public static boolean isOpen() { - if (!handleBankPin()) return false; - return Rs2Widget.hasWidgetText("Rearrange mode", 12, 18, false); - } - - public static List bankItems() { - return rs2BankData.getBankItems(); - } - - /** - * Closes the bank interface if it is open. - * - * @return true if the bank interface was open and successfully closed, true if already closed. - */ + public static boolean isOpen() { + if (!handleBankPin()) return false; + return Rs2Widget.hasWidgetText("Rearrange mode", 12, 18, false); + } + + public static List bankItems() { + return rs2BankData.getBankItems(); + } + + public static void updateLocalBank(ItemContainerChanged event) { + assert Microbot.getClient().isClientThread(); + + if (event.getContainerId() != InventoryID.BANK || event.getItemContainer() == null) { + return; + } + + final Item[] items = event.getItemContainer().getItems(); + if (items == null) { + rs2BankData.setEmpty(); + return; + } + + final List bankItems = new ArrayList<>(); + for (int slot = 0; slot < items.length; slot++) { + final Item item = items[slot]; + if (item == null || item.getId() == -1) { + continue; + } + + final ItemComposition itemComposition = Microbot.getClient().getItemDefinition(item.getId()); + if (itemComposition.getPlaceholderTemplateId() > 0) { + continue; + } + + bankItems.add(new Rs2ItemModel(item, itemComposition, slot)); + } + + if (bankItems.isEmpty()) { + rs2BankData.setEmpty(); + return; + } + + rs2BankData.set(bankItems); + } + + /** + * Closes the bank interface if it is open. + * + * @return true if the bank interface was open and successfully closed, true if already closed. + */ public static boolean closeBank() { if (!isOpen()) return true; if (Rs2Settings.isEscCloseInterfaceSettingEnabled()) {