diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java
index 187510d517..43a5eb22c9 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java
@@ -477,6 +477,32 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener
Widget bankTitle = client.getWidget(WidgetInfo.BANK_TITLE_BAR);
bankTitle.setText("Tag tab
" + activeTab.getTag() + "");
}
+
+ // Recompute scroll size. Only required for tag tab tab and with remove separators, to remove the
+ // space that the separators took.
+ if (tabInterface.isTagTabActive() || (tabInterface.isActive() && config.removeSeparators()))
+ {
+ Widget itemContainer = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER);
+ Widget[] children = itemContainer.getChildren();
+ int items = 0;
+ for (Widget child : children)
+ {
+ if (child != null && child.getItemId() != -1 && !child.isHidden())
+ {
+ ++items;
+ }
+ }
+
+ // New scroll height for if_setscrollsize
+ final int adjustedScrollHeight = (Math.max(0, items - 1) / ITEMS_PER_ROW) * ITEM_VERTICAL_SPACING +
+ ITEM_VERTICAL_SPACING + ITEM_CONTAINER_BOTTOM_PADDING;
+
+ // This is prior to bankmain_finishbuilding running, so the arguments are still on the stack. Overwrite
+ // argument int12 (7 from the end) which is the height passed to if_setscrollsize
+ final int[] intStack = client.getIntStack();
+ final int intStackSize = client.getIntStackSize();
+ intStack[intStackSize - 7] = adjustedScrollHeight;
+ }
}
else if (scriptId == ScriptID.BANKMAIN_SEARCH_TOGGLE)
{
@@ -510,15 +536,6 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener
return;
}
- if (tabInterface.isTagTabActive())
- {
- int numTabs = (int) Arrays.stream(itemContainer.getDynamicChildren())
- .filter(child -> child.getItemId() != -1 && !child.isHidden())
- .count();
- updateBankContainerScrollHeight(numTabs);
- return;
- }
-
if (!tabInterface.isActive() || !config.removeSeparators())
{
return;
@@ -540,14 +557,9 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener
int adjYOffset = (items / ITEMS_PER_ROW) * ITEM_VERTICAL_SPACING;
int adjXOffset = (items % ITEMS_PER_ROW) * ITEM_HORIZONTAL_SPACING + ITEM_ROW_START;
- if (child.getOriginalY() != adjYOffset)
+ if (child.getOriginalY() != adjYOffset || child.getOriginalX() != adjXOffset)
{
child.setOriginalY(adjYOffset);
- child.revalidate();
- }
-
- if (child.getOriginalX() != adjXOffset)
- {
child.setOriginalX(adjXOffset);
child.revalidate();
}
@@ -562,23 +574,6 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener
child.setHidden(true);
}
}
-
- updateBankContainerScrollHeight(items);
- }
-
- private void updateBankContainerScrollHeight(int items)
- {
- Widget bankItemContainer = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER);
- int itemContainerHeight = bankItemContainer.getHeight();
- final int adjustedScrollHeight = (Math.max(0, items - 1) / ITEMS_PER_ROW) * ITEM_VERTICAL_SPACING + ITEM_VERTICAL_SPACING + ITEM_CONTAINER_BOTTOM_PADDING;
- bankItemContainer.setScrollHeight(Math.max(adjustedScrollHeight, itemContainerHeight));
-
- final int itemContainerScroll = bankItemContainer.getScrollY();
- clientThread.invokeLater(() ->
- client.runScript(ScriptID.UPDATE_SCROLLBAR,
- WidgetInfo.BANK_SCROLLBAR.getId(),
- WidgetInfo.BANK_ITEM_CONTAINER.getId(),
- itemContainerScroll));
}
@Subscribe
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java
index 0342ef45e8..05a3240f95 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java
@@ -316,7 +316,7 @@ public class TabInterface
return;
}
- chatboxPanelManager.openTextInput((inventory ? "Inventory " : "Equipment ") + " tags:")
+ chatboxPanelManager.openTextInput((inventory ? "Inventory" : "Equipment") + " tags:")
.addCharValidator(FILTERED_CHARS)
.onDone((Consumer) (newTags) ->
clientThread.invoke(() ->
@@ -573,7 +573,7 @@ public class TabInterface
switch (eventName)
{
- case "setBankScroll":
+ case "skipBankLayout":
if (!isTabMenuActive())
{
setTabMenuVisible(false);
@@ -582,11 +582,8 @@ public class TabInterface
setTabMenuVisible(true);
- // scroll height
- intStack[intStackSize - 3] = (((tabManager.getTabs().size() - 1) / BANK_ITEMS_PER_ROW) + 1) * (BANK_ITEM_HEIGHT + BANK_ITEM_Y_PADDING);
-
// skip normal bank layout
- intStack[intStackSize - 2] = 1;
+ intStack[intStackSize - 1] = 1;
break;
case "beforeBankLayout":
setTabMenuVisible(false);
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java
index 9fb512c688..8fb08840af 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java
@@ -78,6 +78,7 @@ public class GroundItemsOverlay extends Overlay
private static final Duration DESPAWN_TIME_DROP = Duration.ofMinutes(3);
private static final Duration DESPAWN_TIME_TABLE = Duration.ofMinutes(10);
private static final int KRAKEN_REGION = 9116;
+ private static final int CLAN_HALL_REGION = 6997;
private static final int KBD_NMZ_REGION = 9033;
private static final int ZILYANA_REGION = 11602;
private static final int GRAARDOR_REGION = 11347;
@@ -456,7 +457,8 @@ public class GroundItemsOverlay extends Overlay
}
else if (playerRegionID == ZILYANA_REGION || playerRegionID == GRAARDOR_REGION ||
playerRegionID == KRIL_TSUTSAROTH_REGION || playerRegionID == KREEARRA_REGION ||
- playerRegionID == NIGHTMARE_REGION || playerRegionID == TEMPOROSS_REGION)
+ playerRegionID == NIGHTMARE_REGION || playerRegionID == TEMPOROSS_REGION ||
+ playerRegionID == CLAN_HALL_REGION)
{
// GWD, Nightmare, and Tempoross instances use the normal despawn timers
despawnTime = spawnTime.plus(groundItem.getLootType() == LootType.DROPPED
diff --git a/runelite-client/src/main/scripts/BankSearchFilter.rs2asm b/runelite-client/src/main/scripts/BankSearchFilter.rs2asm
index 0555737bdb..0c809b35e3 100644
--- a/runelite-client/src/main/scripts/BankSearchFilter.rs2asm
+++ b/runelite-client/src/main/scripts/BankSearchFilter.rs2asm
@@ -1,4 +1,4 @@
-.id 279
+.id 279 ; [proc,bankmain_filteritem]
.int_stack_count 1
.string_stack_count 0
.int_var_count 2 ; +1 for storage of search filter result
diff --git a/runelite-client/src/main/scripts/BankSearchLayout.rs2asm b/runelite-client/src/main/scripts/BankSearchLayout.rs2asm
index f67c6a9bfe..ea13a99a47 100644
--- a/runelite-client/src/main/scripts/BankSearchLayout.rs2asm
+++ b/runelite-client/src/main/scripts/BankSearchLayout.rs2asm
@@ -1,4 +1,4 @@
-.id 277
+.id 277 ; [proc,bankmain_build]
.int_stack_count 17
.string_stack_count 0
.int_var_count 36
@@ -7,8 +7,8 @@
; Fired before the bank starts its layout
; Used by the TabInterface to hide fake bank items for tag tabs
;
-; callback "setBankScroll"
-; Fired before bank is calculated
+; callback "skipBankLayout"
+; Fired before bank is built
; Used by the TabInterface to show fake bank items for tag tabs
sconst "beforeBankLayout"
runelite_callback
@@ -403,13 +403,11 @@ LABEL348:
sub
istore 30
LABEL352:
- iconst 0 ; Scroll height variable
iconst 0 ; Compare variable
iconst 0 ;
- sconst "setBankScroll" ; Show fake bank items for tag tabs
+ sconst "skipBankLayout" ; Show fake bank items for tag tabs
runelite_callback ; If tag tab menu search isn't active
if_icmpeq CONTINUE_SEARCH ; continue to normal bank search
- istore 27 ; Load scroll height into variable
jump GetTabRange ; Skip normal bank layout
CONTINUE_SEARCH:
iload 31
@@ -842,7 +840,7 @@ LABEL729:
iload 14
iload 15
iload 16
- invoke 505
+ invoke 505 ; [proc,bankmain_finishbuilding]
return
LABEL750:
invoke 514