Skip to content

Commit

Permalink
Fix issue #16
Browse files Browse the repository at this point in the history
When the group storage is open a different inventory id used.
This fixes validating items in the wrong inventory container.
  • Loading branch information
elgbar committed Mar 2, 2024
1 parent d49950d commit 0f17a81
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 8 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

* Fix issue [#13](https://github.com/elgbar/instant-inventory/pull/13), incompatibility with customized shift-clicking
from the Menu Swapper plugin
* Fix issue [#16](https://github.com/elgbar/instant-inventory/pull/16), depositing into the group ironman storage does
not work correctly

---

Expand Down
14 changes: 6 additions & 8 deletions src/main/java/no/elg/ii/InstantInventoryPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.InventoryID;
import net.runelite.api.Item;
import net.runelite.api.ItemContainer;
import net.runelite.api.events.GameStateChanged;
Expand Down Expand Up @@ -104,13 +103,12 @@ protected void shutDown() {
@Subscribe(priority = Integer.MAX_VALUE)
public void onGameTick(GameTick event) {
clientThread.invokeLater(() -> {
ItemContainer itemContainer = client.getItemContainer(InventoryID.INVENTORY);
if (itemContainer == null) {
return;
}
for (int index = 0; index < INVENTORY_SIZE; index++) {
Item item = itemContainer.getItem(index);
inventoryState.validateState(index, item);
ItemContainer itemContainer = inventoryService.getCurrentInventoryContainer();
if (itemContainer != null) {
for (int index = 0; index < INVENTORY_SIZE; index++) {
Item item = itemContainer.getItem(index);
inventoryState.validateState(index, item);
}
}
});
}
Expand Down
16 changes: 16 additions & 0 deletions src/main/java/no/elg/ii/inventory/InventoryService.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,20 @@
package no.elg.ii.inventory;

import static no.elg.ii.util.IndexedWidget.indexWidget;
import static no.elg.ii.util.InventoryUtil.GROUP_ITEM_CONTAINER;
import static no.elg.ii.util.InventoryUtil.INVENTORY_ITEMS_CONTAINERS;

import com.google.common.collect.Streams;
import com.google.inject.Singleton;
import java.util.Arrays;
import java.util.stream.Stream;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.InventoryID;
import net.runelite.api.ItemContainer;
import net.runelite.api.events.BeforeRender;
import net.runelite.api.widgets.Widget;
import net.runelite.client.eventbus.Subscribe;
Expand All @@ -58,6 +62,18 @@ public class InventoryService {
@Inject
private WidgetService widgetService;

@Nullable
public ItemContainer getCurrentInventoryContainer() {
Widget widget = client.getWidget(GROUP_ITEM_CONTAINER);
InventoryID itemContainer;
if (widget != null && !widget.isHidden()) {
itemContainer = InventoryID.GROUP_STORAGE_INV;
} else {
itemContainer = InventoryID.INVENTORY;
}
return client.getItemContainer(itemContainer);
}

@Nonnull
private Stream<Widget> getOpenWidgetItemContainer() {
return INVENTORY_ITEMS_CONTAINERS.stream()
Expand Down

0 comments on commit 0f17a81

Please sign in to comment.