From 1dcc35df0891c1e83bc90646a8eb61117b2b06c4 Mon Sep 17 00:00:00 2001 From: Ourmond Date: Mon, 30 Mar 2026 16:52:44 -0700 Subject: [PATCH 1/2] restore deposit-all functionality in CargoHoldTracker.java --- .../features/facilities/CargoHoldTracker.java | 93 +++++++++++++++++-- 1 file changed, 85 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/duckblade/osrs/sailing/features/facilities/CargoHoldTracker.java b/src/main/java/com/duckblade/osrs/sailing/features/facilities/CargoHoldTracker.java index ae45c56..ac11a89 100644 --- a/src/main/java/com/duckblade/osrs/sailing/features/facilities/CargoHoldTracker.java +++ b/src/main/java/com/duckblade/osrs/sailing/features/facilities/CargoHoldTracker.java @@ -36,12 +36,15 @@ import net.runelite.api.events.ItemContainerChanged; import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.OverheadTextChanged; +import net.runelite.api.Preferences; +import net.runelite.api.events.SoundEffectPlayed; import net.runelite.api.events.StatChanged; import net.runelite.api.events.WidgetLoaded; import net.runelite.api.gameval.InterfaceID; import net.runelite.api.gameval.InventoryID; import net.runelite.api.gameval.ItemID; import net.runelite.api.gameval.VarbitID; +import net.runelite.api.gameval.VarPlayerID; import net.runelite.api.widgets.Widget; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; @@ -118,6 +121,14 @@ public class CargoHoldTracker private int lastXp; private boolean pendingJenkinsAction; + //sfx variables + private boolean sfxVolumeOverridden = false; + private int previousSfxVolume = -1; + private static final int SFX_OVERRIDE_VOLUME = 1; + private static final int SFX_DEPOSIT_ALL_ID = 10905; + private static final int DEPOSIT_ALL_MAX_TICKS_TIMEOUT = 12; + private int depositAllTicksRemaining; + private Multiset initialDepositAllInventory; @Inject public CargoHoldTracker(Client client, ConfigManager configManager, BoatTracker boatTracker, CourierTaskTracker courierTaskTracker) @@ -283,6 +294,11 @@ public void onGameTick(GameTick e) { pendingJenkinsAction = false; + if (--depositAllTicksRemaining <= 0) + { + resetDepositAllState(); + } + if (--pendingInventoryAction < 0) { sawItemContainerUpdate = false; @@ -326,17 +342,22 @@ public void onGameTick(GameTick e) @Subscribe public void onMenuOptionClicked(MenuOptionClicked e) { - if (!e.getMenuOption().contains("Withdraw") && !e.getMenuOption().contains("Deposit")) + if (e.getMenuOption().contains("Withdraw") || e.getMenuOption().contains("Deposit")) { - return; + Widget cargoHoldWidget = client.getWidget(InterfaceID.SailingBoatCargohold.UNIVERSE); // todo confirm + if (cargoHoldWidget != null && !cargoHoldWidget.isHidden()) + { + pendingInventoryAction = INVENTORY_DELTA_MAX_DELAY; + memoizedInventory = getInventoryMap(); + log.debug("queued pendingInventoryAction with inventory {}", memoizedInventory); + } } - - Widget cargoHoldWidget = client.getWidget(InterfaceID.SailingBoatCargohold.UNIVERSE); // todo confirm - if (cargoHoldWidget != null && !cargoHoldWidget.isHidden()) + else if(e.getMenuOption().equals("Deposit-all")) { - pendingInventoryAction = INVENTORY_DELTA_MAX_DELAY; - memoizedInventory = getInventoryMap(); - log.debug("queued pendingInventoryAction with inventory {}", memoizedInventory); + beginSfxOverrideIfMuted(); + depositAllTicksRemaining = DEPOSIT_ALL_MAX_TICKS_TIMEOUT; + initialDepositAllInventory = getInventoryMap(); + log.debug("Initial deposit-all player inventory {}", initialDepositAllInventory); } } @@ -356,6 +377,25 @@ public void onWidgetLoaded(WidgetLoaded e) } } + @Subscribe + public void onSoundEffectPlayed(SoundEffectPlayed e) + { + if (sfxVolumeOverridden) + { + e.consume(); + } + if (e.getSoundId() == SFX_DEPOSIT_ALL_ID && depositAllTicksRemaining > 0) + { + + Multiset deposit = Multisets.difference(initialDepositAllInventory, getInventoryMap()); // items missing from inv that were in prior snapshot + Multiset cargoHoldToUpdate = cargoHold(); + deposit.entrySet().forEach(entry -> cargoHoldToUpdate.add(entry.getElement(), entry.getCount())); + log.debug("updated cargo hold from deposit-all inventory delta {}", cargoHoldToUpdate); + writeToConfig(); + resetDepositAllState(); + } + } + private void resetInventoryDeltaState() { pendingInventoryAction = 0; @@ -497,4 +537,41 @@ private void writeToConfig(int boatSlot) log.trace("wrote cargoHold {} to config {} = {}", boatSlot, key, configValue); } + private void setSfxVolume(int vol) + { + Preferences preferences = client.getPreferences(); + preferences.setSoundEffectVolume(vol); + + client.getVarps()[VarPlayerID.OPTION_SOUNDS] = vol; + client.queueChangedVarp(VarPlayerID.OPTION_SOUNDS); + } + + private void beginSfxOverrideIfMuted() + { + Preferences preferences = client.getPreferences(); + int current = preferences.getSoundEffectVolume(); + if (current != 0 || sfxVolumeOverridden) + { + return; + } + + previousSfxVolume = current; + sfxVolumeOverridden = true; + + setSfxVolume(SFX_OVERRIDE_VOLUME); + } + + private void resetDepositAllState() + { + if (sfxVolumeOverridden) { + // if we never captured previous, default to muted + int restore = previousSfxVolume >= 0 ? previousSfxVolume : 0; + setSfxVolume(restore); + sfxVolumeOverridden = false; + previousSfxVolume = -1; + } + + depositAllTicksRemaining = 0; + initialDepositAllInventory = null; + } } From 02067d260e7bffbd78a6a945957a6338293f4301 Mon Sep 17 00:00:00 2001 From: Ourmond Date: Mon, 30 Mar 2026 17:43:40 -0700 Subject: [PATCH 2/2] remove refactor --- .../features/facilities/CargoHoldTracker.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/duckblade/osrs/sailing/features/facilities/CargoHoldTracker.java b/src/main/java/com/duckblade/osrs/sailing/features/facilities/CargoHoldTracker.java index ac11a89..c840129 100644 --- a/src/main/java/com/duckblade/osrs/sailing/features/facilities/CargoHoldTracker.java +++ b/src/main/java/com/duckblade/osrs/sailing/features/facilities/CargoHoldTracker.java @@ -342,23 +342,25 @@ public void onGameTick(GameTick e) @Subscribe public void onMenuOptionClicked(MenuOptionClicked e) { - if (e.getMenuOption().contains("Withdraw") || e.getMenuOption().contains("Deposit")) + if (!e.getMenuOption().contains("Withdraw") && !e.getMenuOption().contains("Deposit")) { - Widget cargoHoldWidget = client.getWidget(InterfaceID.SailingBoatCargohold.UNIVERSE); // todo confirm - if (cargoHoldWidget != null && !cargoHoldWidget.isHidden()) - { - pendingInventoryAction = INVENTORY_DELTA_MAX_DELAY; - memoizedInventory = getInventoryMap(); - log.debug("queued pendingInventoryAction with inventory {}", memoizedInventory); - } + return; } - else if(e.getMenuOption().equals("Deposit-all")) + if (e.getMenuOption().equals("Deposit-all")) { beginSfxOverrideIfMuted(); depositAllTicksRemaining = DEPOSIT_ALL_MAX_TICKS_TIMEOUT; initialDepositAllInventory = getInventoryMap(); log.debug("Initial deposit-all player inventory {}", initialDepositAllInventory); } + + Widget cargoHoldWidget = client.getWidget(InterfaceID.SailingBoatCargohold.UNIVERSE); // todo confirm + if (cargoHoldWidget != null && !cargoHoldWidget.isHidden()) + { + pendingInventoryAction = INVENTORY_DELTA_MAX_DELAY; + memoizedInventory = getInventoryMap(); + log.debug("queued pendingInventoryAction with inventory {}", memoizedInventory); + } } @Subscribe