diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index 4c72f833a3..ce353147bb 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -1186,6 +1186,12 @@ public interface Client extends GameEngine @Nullable ItemContainer getItemContainer(InventoryID inventory); + /** + * Get all item containers + * @return + */ + HashTable getItemContainers(); + /** * Gets the length of the cs2 vm's int stack */ diff --git a/runelite-api/src/main/java/net/runelite/api/ItemContainer.java b/runelite-api/src/main/java/net/runelite/api/ItemContainer.java index 9bd2332e86..3b6f414bf8 100644 --- a/runelite-api/src/main/java/net/runelite/api/ItemContainer.java +++ b/runelite-api/src/main/java/net/runelite/api/ItemContainer.java @@ -32,6 +32,14 @@ import javax.annotation.Nullable; */ public interface ItemContainer extends Node { + /** + * Get the item container id + * + * @return + * @see InventoryID + */ + int getId(); + /** * Gets an array of all items in the container. * diff --git a/runelite-client/src/main/java/net/runelite/client/util/GameEventManager.java b/runelite-client/src/main/java/net/runelite/client/util/GameEventManager.java index 5d5cfe7398..7e3fb7efe4 100644 --- a/runelite-client/src/main/java/net/runelite/client/util/GameEventManager.java +++ b/runelite-client/src/main/java/net/runelite/client/util/GameEventManager.java @@ -33,14 +33,13 @@ import javax.inject.Singleton; import net.runelite.api.Client; import net.runelite.api.Constants; import net.runelite.api.GameState; -import net.runelite.api.TileItem; -import net.runelite.api.InventoryID; import net.runelite.api.ItemContainer; import net.runelite.api.NPC; import net.runelite.api.Node; import net.runelite.api.Player; import net.runelite.api.Scene; import net.runelite.api.Tile; +import net.runelite.api.TileItem; import net.runelite.api.events.DecorativeObjectSpawned; import net.runelite.api.events.GameObjectSpawned; import net.runelite.api.events.GroundObjectSpawned; @@ -112,14 +111,9 @@ public class GameEventManager eventBus.register(subscriber); - for (final InventoryID inventory : InventoryID.values()) + for (final ItemContainer itemContainer : client.getItemContainers()) { - final ItemContainer itemContainer = client.getItemContainer(inventory); - - if (itemContainer != null) - { - eventBus.post(new ItemContainerChanged(inventory.getId(), itemContainer)); - } + eventBus.post(new ItemContainerChanged(itemContainer.getId(), itemContainer)); } for (NPC npc : client.getCachedNPCs())