From 0be27f3eec4481498639e4024b8bc4a25cfb600c Mon Sep 17 00:00:00 2001 From: Jordan Atwood Date: Wed, 24 Sep 2025 11:12:57 -0700 Subject: [PATCH 01/38] screenshot: draw report button date at correct location This commit reworks the report button date option to change the widget text rather than drawing an overlay, which ensures the text is still drawn correctly even if the chatbox is moved. As a bonus, because it is not drawn as an overlay, the overlay class (and all related dependencies) can be removed. --- .../plugins/screenshot/ScreenshotOverlay.java | 121 ------------------ .../plugins/screenshot/ScreenshotPlugin.java | 83 ++++++++---- .../screenshot/ScreenshotPluginTest.java | 15 --- 3 files changed, 61 insertions(+), 158 deletions(-) delete mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java deleted file mode 100644 index 284a7103c71..00000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2018, Lotto - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.client.plugins.screenshot; - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.FontMetrics; -import java.awt.Graphics2D; -import java.awt.Image; -import java.awt.image.BufferedImage; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Queue; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.function.Consumer; -import javax.inject.Inject; -import net.runelite.api.Client; -import net.runelite.api.MainBufferProvider; -import net.runelite.client.ui.DrawManager; -import net.runelite.client.ui.FontManager; -import net.runelite.client.ui.overlay.Overlay; -import net.runelite.client.ui.overlay.OverlayLayer; -import net.runelite.client.ui.overlay.OverlayPosition; - -class ScreenshotOverlay extends Overlay -{ - private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MMM. dd, yyyy"); - private static final int REPORT_BUTTON_X_OFFSET = 437; - - private final Client client; - private final DrawManager drawManager; - private final ScreenshotPlugin plugin; - - private final Queue> consumers = new ConcurrentLinkedQueue<>(); - - @Inject - private ScreenshotOverlay(Client client, DrawManager drawManager, ScreenshotPlugin plugin) - { - setPosition(OverlayPosition.DYNAMIC); - setPriority(PRIORITY_HIGH); - setLayer(OverlayLayer.ABOVE_WIDGETS); - this.client = client; - this.drawManager = drawManager; - this.plugin = plugin; - } - - @Override - public Dimension render(Graphics2D graphics) - { - if (consumers.isEmpty()) - { - return null; - } - - final MainBufferProvider bufferProvider = (MainBufferProvider) client.getBufferProvider(); - final int imageHeight = ((BufferedImage) bufferProvider.getImage()).getHeight(); - final int y = imageHeight - plugin.getReportButton().getHeight() - 1; - - graphics.drawImage(plugin.getReportButton(), REPORT_BUTTON_X_OFFSET, y, null); - - graphics.setFont(FontManager.getRunescapeSmallFont()); - FontMetrics fontMetrics = graphics.getFontMetrics(); - - String date = DATE_FORMAT.format(new Date()); - final int dateWidth = fontMetrics.stringWidth(date); - final int dateHeight = fontMetrics.getHeight(); - - final int textX = REPORT_BUTTON_X_OFFSET + plugin.getReportButton().getWidth() / 2 - dateWidth / 2; - final int textY = y + plugin.getReportButton().getHeight() / 2 + dateHeight / 2; - - graphics.setColor(Color.BLACK); - graphics.drawString(date, textX + 1, textY + 1); - - graphics.setColor(Color.WHITE); - graphics.drawString(date, textX, textY); - - // Request the queued screenshots to be taken, - // now that the timestamp is visible. - Consumer consumer; - while ((consumer = consumers.poll()) != null) - { - drawManager.requestNextFrameListener(consumer); - } - - return null; - } - - void queueForTimestamp(Consumer screenshotConsumer) - { - if (plugin.getReportButton() == null) - { - return; - } - - consumers.add(screenshotConsumer); - } -} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java index df71c19d895..78ce14654c7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java @@ -31,16 +31,19 @@ import com.google.inject.Provides; import java.awt.Image; import java.awt.image.BufferedImage; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.time.LocalDate; +import java.util.Date; import java.util.Map; +import java.util.Queue; import java.util.Set; +import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.function.Consumer; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.inject.Inject; -import lombok.AccessLevel; -import lombok.Getter; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Actor; import net.runelite.api.ChatMessageType; @@ -53,27 +56,26 @@ import net.runelite.api.events.AnimationChanged; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.GameTick; +import net.runelite.api.events.PostClientTick; import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.ScriptPreFired; import net.runelite.api.events.WidgetLoaded; import net.runelite.api.gameval.AnimationID; import net.runelite.api.gameval.InterfaceID; -import net.runelite.api.gameval.SpriteID; import net.runelite.api.gameval.VarClientID; import net.runelite.api.gameval.VarbitID; import net.runelite.api.widgets.Widget; import static net.runelite.client.RuneLite.SCREENSHOT_DIR; +import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.events.PlayerLootReceived; -import net.runelite.client.game.SpriteManager; import net.runelite.client.input.KeyManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.ClientToolbar; import net.runelite.client.ui.DrawManager; import net.runelite.client.ui.NavigationButton; -import net.runelite.client.ui.overlay.OverlayManager; import net.runelite.client.util.HotkeyListener; import net.runelite.client.util.ImageCapture; import net.runelite.client.util.ImageUtil; @@ -89,6 +91,7 @@ @Slf4j public class ScreenshotPlugin extends Plugin { + private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MMM. dd, yyyy"); private static final String COLLECTION_LOG_TEXT = "New item added to your collection log: "; private static final String CHEST_LOOTED_MESSAGE = "You find some treasure in the chest!"; private static final Map CHEST_LOOT_EVENTS = ImmutableMap.of(12127, "The Gauntlet"); @@ -158,12 +161,6 @@ enum KillType @Inject private ScreenshotConfig config; - @Inject - private OverlayManager overlayManager; - - @Inject - private ScreenshotOverlay screenshotOverlay; - @Inject private Client client; @@ -179,19 +176,19 @@ enum KillType @Inject private KeyManager keyManager; - @Inject - private SpriteManager spriteManager; - @Inject private ImageCapture imageCapture; - @Getter(AccessLevel.PACKAGE) - private BufferedImage reportButton; + @Inject + private ClientThread clientThread; private NavigationButton titleBarButton; private String kickPlayerName; + final Queue> consumers = new ConcurrentLinkedQueue<>(); + private String reportButtonText; + private final HotkeyListener hotkeyListener = new HotkeyListener(() -> config.hotkey()) { @Override @@ -210,7 +207,6 @@ ScreenshotConfig getConfig(ConfigManager configManager) @Override protected void startUp() throws Exception { - overlayManager.add(screenshotOverlay); SCREENSHOT_DIR.mkdirs(); keyManager.registerKeyListener(hotkeyListener); @@ -230,14 +226,11 @@ protected void startUp() throws Exception .build(); clientToolbar.addNavigation(titleBarButton); - - spriteManager.getSpriteAsync(SpriteID.ReportButton.BUTTON, 0, s -> reportButton = s); } @Override protected void shutDown() throws Exception { - overlayManager.remove(screenshotOverlay); clientToolbar.removeNavigation(titleBarButton); keyManager.unregisterKeyListener(hotkeyListener); kickPlayerName = null; @@ -803,6 +796,30 @@ public void onScriptPreFired(ScriptPreFired scriptPreFired) } } + @Subscribe + private void onPostClientTick(PostClientTick e) + { + if (!consumers.isEmpty()) + { + final Widget reportButtonTextWidget = client.getWidget(InterfaceID.Chatbox.REPORTABUSE_TEXT1); + if (reportButtonTextWidget != null) + { + if (reportButtonText == null) + { + reportButtonText = reportButtonTextWidget.getText(); + } + + reportButtonTextWidget.setText(DATE_FORMAT.format(new Date())); + } + + Consumer consumer; + while ((consumer = consumers.poll()) != null) + { + drawManager.requestNextFrameListener(consumer); + } + } + } + private void manualScreenshot() { takeScreenshot("", null); @@ -932,12 +949,29 @@ void takeScreenshot(String fileName, String subDir) Consumer imageCallback = (img) -> { // This callback is on the game thread, move to executor thread - executor.submit(() -> saveScreenshot(fileName, subDir, img)); + executor.submit(() -> + { + saveScreenshot(fileName, subDir, img); + + if (reportButtonText != null) + { + clientThread.invokeLater(() -> + { + final Widget reportButtonTextWidget = client.getWidget(InterfaceID.Chatbox.REPORTABUSE_TEXT1); + if (reportButtonTextWidget != null) + { + reportButtonTextWidget.setText(reportButtonText); + } + + reportButtonText = null; + }); + } + }); }; if (config.displayDate() && REPORT_BUTTON_TLIS.contains(client.getTopLevelInterfaceId())) { - screenshotOverlay.queueForTimestamp(imageCallback); + queueForTimestamp(imageCallback); } else { @@ -945,6 +979,11 @@ void takeScreenshot(String fileName, String subDir) } } + void queueForTimestamp(Consumer screenshotConsumer) + { + consumers.add(screenshotConsumer); + } + private void saveScreenshot(String fileName, String subDir, Image image) { final BufferedImage screenshot; diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java index 1c98f7ec33b..e8904b6c2a2 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java @@ -44,12 +44,9 @@ import net.runelite.api.gameval.VarClientID; import net.runelite.api.gameval.VarbitID; import net.runelite.api.widgets.Widget; -import net.runelite.client.Notifier; import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.DrawManager; -import net.runelite.client.ui.overlay.OverlayManager; -import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.util.ImageCapture; import static org.junit.Assert.assertEquals; import org.junit.Before; @@ -94,10 +91,6 @@ public class ScreenshotPluginTest @Bind private ScreenshotConfig screenshotConfig; - @Mock - @Bind - Notifier notifier; - @Mock @Bind ClientUI clientUi; @@ -114,14 +107,6 @@ public class ScreenshotPluginTest @Bind ScheduledExecutorService service; - @Mock - @Bind - private OverlayManager overlayManager; - - @Mock - @Bind - private InfoBoxManager infoBoxManager; - @Mock @Bind private ImageCapture imageCapture; From e2ab18590e90186cb63ce64deee09e43c8d09518 Mon Sep 17 00:00:00 2001 From: Patrick Watts Date: Thu, 25 Sep 2025 02:09:46 +0400 Subject: [PATCH 02/38] puzzlesolver: add ability to increase no. of dots shown The number of puzzle box moves can now be configured between four and eight when displaying the solution as dots. Leaving it at four there is no risk of overlapping moves while increasing the number of moves allows for faster puzzle solving. Dots now interpolate between two colors instead of being a single yellow color. While the further away dots become smaller they now also gradually become a different color, providing another visual queue. Puzzle box steps now default to being displayed as dots due to the arrows being confusing to many users. --- .../puzzlesolver/PuzzleSolverConfig.java | 50 +++++++++++++++++-- .../puzzlesolver/PuzzleSolverOverlay.java | 21 +++++--- 2 files changed, 61 insertions(+), 10 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverConfig.java index 86ae02c4027..2c1591a9d68 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverConfig.java @@ -25,9 +25,11 @@ */ package net.runelite.client.plugins.puzzlesolver; +import java.awt.Color; import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigItem; +import net.runelite.client.config.Range; @ConfigGroup("puzzlesolver") public interface PuzzleSolverConfig extends Config @@ -35,7 +37,8 @@ public interface PuzzleSolverConfig extends Config @ConfigItem( keyName = "displaySolution", name = "Display solution", - description = "Display a solution to the puzzle." + description = "Display a solution to the puzzle.", + position = 0 ) default boolean displaySolution() { @@ -45,7 +48,8 @@ default boolean displaySolution() @ConfigItem( keyName = "displayRemainingMoves", name = "Display remaining moves", - description = "Add a text line above puzzle boxes displaying the amount of remaining moves." + description = "Add a text line above puzzle boxes displaying the amount of remaining moves.", + position = 1 ) default boolean displayRemainingMoves() { @@ -55,10 +59,48 @@ default boolean displayRemainingMoves() @ConfigItem( keyName = "drawDots", name = "Draw dots instead of arrows", - description = "Draw dots increasing in size instead of arrows for the solution." + description = "Draw dots increasing in size instead of arrows for the solution.", + position = 2 ) default boolean drawDots() { - return false; + return true; + } + + @ConfigItem( + keyName = "movesToShow", + name = "Number of dots", + description = "The number of moves as dots to show for the puzzle.", + position = 3 + ) + @Range( + min = 4, + max = 8 + ) + default int movesToShow() + { + return 4; + } + + @ConfigItem( + keyName = "dotColor", + name = "Dot start color", + description = "Dot color for the first solution dot.", + position = 4 + ) + default Color dotColor() + { + return Color.YELLOW; + } + + @ConfigItem( + keyName = "dotEndColor", + name = "Dot end color", + description = "Dot color of the last solution dot that dots blend towards.", + position = 5 + ) + default Color dotEndColor() + { + return Color.RED; } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverOverlay.java index 4dc20c698aa..c92ac5461b5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverOverlay.java @@ -59,6 +59,7 @@ import net.runelite.client.ui.overlay.OverlayUtil; import net.runelite.client.ui.overlay.components.BackgroundComponent; import net.runelite.client.ui.overlay.components.TextComponent; +import net.runelite.client.util.ColorUtil; import net.runelite.client.util.ImageUtil; public class PuzzleSolverOverlay extends Overlay @@ -69,7 +70,8 @@ public class PuzzleSolverOverlay extends Overlay private static final int INFO_BOX_BOTTOM_BORDER = 2; private static final int PUZZLE_TILE_SIZE = 39; - private static final int DOT_MARKER_SIZE = 16; + private static final int DOT_MARKER_MAX_SIZE = 24; + private static final int DOT_MARKER_MIN_SIZE = 4; private final Client client; private final PuzzleSolverConfig config; @@ -216,10 +218,9 @@ else if (config.displayRemainingMoves()) { if (config.drawDots()) { - graphics.setColor(Color.YELLOW); - - // Display the next 4 steps - for (int i = 1; i < 5; i++) + int movesToShow = config.movesToShow(); + // Display the next movesToShow steps + for (int i = 1; i <= movesToShow; i++) { int j = solver.getPosition() + i; @@ -238,7 +239,9 @@ else if (config.displayRemainingMoves()) int blankX = futureMove.getEmptyPiece() % DIMENSION; int blankY = futureMove.getEmptyPiece() / DIMENSION; - int markerSize = DOT_MARKER_SIZE - i * 3; + int numerator = (i - 1) * (DOT_MARKER_MAX_SIZE - DOT_MARKER_MIN_SIZE); + double denominator = movesToShow - 1; + int markerSize = (int) Math.round(DOT_MARKER_MAX_SIZE - numerator / denominator); int x = puzzleBoxLocation.getX() + blankX * PUZZLE_TILE_SIZE + PUZZLE_TILE_SIZE / 2 - markerSize / 2; @@ -246,7 +249,13 @@ else if (config.displayRemainingMoves()) int y = puzzleBoxLocation.getY() + blankY * PUZZLE_TILE_SIZE + PUZZLE_TILE_SIZE / 2 - markerSize / 2; + Color color = ColorUtil.colorLerp(config.dotColor(), config.dotEndColor(), + (double) (i - 1) / (movesToShow - 1)); + graphics.setColor(color); graphics.fillOval(x, y, markerSize, markerSize); + + graphics.setColor(Color.BLACK); + graphics.drawOval(x - 1, y - 1, markerSize + 1, markerSize + 1); } } else From 7eaaf4831b5acf1a6f9a09d31ed6cec931c993a4 Mon Sep 17 00:00:00 2001 From: Drew Bermudez <31788023+Drewsername@users.noreply.github.com> Date: Thu, 25 Sep 2025 09:16:25 -0700 Subject: [PATCH 03/38] coordinate clue: update lunar isle step enemy The Lunar Isle multi combat areas changed recently, meaning this step is no longer in a multi combat zone. --- .../client/plugins/cluescrolls/clues/CoordinateClue.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java index 9b284a5727d..e8152fb4dbf 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java @@ -967,7 +967,7 @@ public class CoordinateClue extends ClueScroll implements LocationClueScroll .itemId(ItemID.TRAIL_CLUE_MASTER) .location(new WorldPoint(2090, 3863, 0)) .directions("South of Lunar Isle, west of Astral altar.") - .enemy(ANCIENT_WIZARDS) + .enemy(BRASSICAN_MAGE) .build(), CoordinateClue.builder() .itemId(ItemID.TRAIL_CLUE_MASTER) From 4c3e786a2b0e530152ca8df6dbb0b1ac84a420c0 Mon Sep 17 00:00:00 2001 From: Lars TwiNky <165326752+LarsTwiNky@users.noreply.github.com> Date: Thu, 25 Sep 2025 20:38:02 +0200 Subject: [PATCH 04/38] clues: support aether runes --- .../plugins/cluescrolls/clues/SkillChallengeClue.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java index bd9d2bda420..b3166559c7b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java @@ -217,7 +217,7 @@ enum ChallengeType // Elite Sherlock Tasks new SkillChallengeClue("Equip a Dragon Scimitar.", true, any("Any Dragon Scimitar", item(ItemID.DRAGON_SCIMITAR), item(ItemID.DRAGON_SCIMITAR_ORNAMENT))), new SkillChallengeClue("Enchant some Dragonstone Jewellery.", "enchant a piece of dragonstone jewellery.", - xOfItem(ItemID.COSMICRUNE, 1), + any("Cosmic Rune x1", xOfItem(ItemID.COSMICRUNE, 1), xOfItem(ItemID.AETHERRUNE, 1)), any("Water Rune x15", xOfItem(ItemID.WATERRUNE, 15), xOfItem(ItemID.MISTRUNE, 15), xOfItem(ItemID.MUDRUNE, 15), xOfItem(ItemID.STEAMRUNE, 15), item(ItemID.STAFF_OF_WATER), item(ItemID.WATER_BATTLESTAFF), item(ItemID.MYSTIC_WATER_STAFF), item(ItemID.MUD_BATTLESTAFF), item(ItemID.MYSTIC_MUD_STAFF), item(ItemID.MIST_BATTLESTAFF), item(ItemID.MYSTIC_MIST_BATTLESTAFF), item(ItemID.STEAM_BATTLESTAFF), item(ItemID.MYSTIC_STEAM_BATTLESTAFF), item(ItemID.STEAM_BATTLESTAFF_PRETTY), item(ItemID.MYSTIC_STEAM_BATTLESTAFF_PRETTY), item(ItemID.KODAI_WAND), item(ItemID.TOME_OF_WATER)), any("Earth Rune x15", xOfItem(ItemID.EARTHRUNE, 15), xOfItem(ItemID.DUSTRUNE, 15), xOfItem(ItemID.MUDRUNE, 15), xOfItem(ItemID.LAVARUNE, 15), item(ItemID.STAFF_OF_EARTH), item(ItemID.EARTH_BATTLESTAFF), item(ItemID.MYSTIC_EARTH_STAFF), item(ItemID.MUD_BATTLESTAFF), item(ItemID.MYSTIC_MUD_STAFF), item(ItemID.DUST_BATTLESTAFF), item(ItemID.MYSTIC_DUST_BATTLESTAFF), item(ItemID.LAVA_BATTLESTAFF), item(ItemID.MYSTIC_LAVA_STAFF), item(ItemID.LAVA_BATTLESTAFF_PRETTY), item(ItemID.MYSTIC_LAVA_STAFF_PRETTY)), any("Unenchanted Dragonstone Jewellery", item(ItemID.DRAGONSTONE_RING), item(ItemID.DRAGONSTONE_NECKLACE), item(ItemID.JEWL_DRAGONSTONE_BRACELET), item(ItemID.STRUNG_DRAGONSTONE_AMULET))), @@ -255,7 +255,7 @@ enum ChallengeType new SkillChallengeClue("Equip an abyssal whip in front of the abyssal demons of the Slayer Tower.", true, any("Abyssal Whip", item(ItemID.ABYSSAL_WHIP), item(ItemID.ABYSSAL_WHIP_ICE), item(ItemID.ABYSSAL_WHIP_LAVA), item(ItemID.LEAGUE_3_WHIP), item(ItemID.ABYSSAL_TENTACLE), item(ItemID.LEAGUE_3_WHIP_TENTACLE))), new SkillChallengeClue("Smith a runite med helm.", ANY_HAMMER, item(ItemID.RUNITE_BAR)), new SkillChallengeClue("Teleport to a spirit tree you planted yourself."), - new SkillChallengeClue("Create a Barrows teleport tablet.", item(ItemID.ARCEUUS_ESSENCE_BLOCK_DARK), xOfItem(ItemID.BLOODRUNE, 1), xOfItem(ItemID.LAWRUNE, 2), xOfItem(ItemID.SOULRUNE, 2)), + new SkillChallengeClue("Create a Barrows teleport tablet.", item(ItemID.ARCEUUS_ESSENCE_BLOCK_DARK), xOfItem(ItemID.BLOODRUNE, 1), xOfItem(ItemID.LAWRUNE, 2), any("Soul Rune x2", xOfItem(ItemID.SOULRUNE, 2), xOfItem(ItemID.AETHERRUNE, 2))), new SkillChallengeClue("Kill a Nechryael in the Slayer Tower.", "slay a nechryael in the slayer tower."), new SkillChallengeClue("Kill a Spiritual Mage while wearing something from their god.", "kill the spiritual, magic and godly whilst representing their own god."), new SkillChallengeClue("Create an unstrung dragonstone amulet at a furnace.", item(ItemID.GOLD_BAR), item(ItemID.DRAGONSTONE), item(ItemID.AMULET_MOULD)), @@ -292,7 +292,7 @@ enum ChallengeType any("", item(ItemID.RAMBLE_LUMBERJACK_LEGS), item(ItemID.FORESTRY_LUMBERJACK_LEGS)), any("", item(ItemID.RAMBLE_LUMBERJACK_BOOTS), item(ItemID.FORESTRY_LUMBERJACK_BOOTS)))), new SkillChallengeClue("Craft a light orb in the Dorgesh-Kaan bank.", item(ItemID.DORGESH_WIRE), item(ItemID.DORGESH_LIGHTBULB_NOFILAMENT)), - new SkillChallengeClue("Kill a reanimated Abyssal Demon.", "kill a reanimated abyssal.", xOfItem(ItemID.SOULRUNE, 4), xOfItem(ItemID.BLOODRUNE, 2), any("Nature Rune x4", xOfItem(ItemID.NATURERUNE, 4), item(ItemID.NATURE_STAFF_CHARGED)), range("Ensouled abyssal head", ItemID.ARCEUUS_CORPSE_ABYSSAL_INITIAL, ItemID.ARCEUUS_CORPSE_ABYSSAL)), + new SkillChallengeClue("Kill a reanimated Abyssal Demon.", "kill a reanimated abyssal.", any("Soul Rune x4", xOfItem(ItemID.SOULRUNE, 4), xOfItem(ItemID.AETHERRUNE, 4)), xOfItem(ItemID.BLOODRUNE, 2), any("Nature Rune x4", xOfItem(ItemID.NATURERUNE, 4), item(ItemID.NATURE_STAFF_CHARGED)), range("Ensouled abyssal head", ItemID.ARCEUUS_CORPSE_ABYSSAL_INITIAL, ItemID.ARCEUUS_CORPSE_ABYSSAL)), new SkillChallengeClue("Kill a Fiyr shade inside Mort'tons shade catacombs.", any("Any Gold or Silver Shade Key", item(ItemID.SHADEKEY_GOLD_BLOODRED), item(ItemID.SHADEKEY_GOLD_BROWN), item(ItemID.SHADEKEY_GOLD_CRIMSON), item(ItemID.SHADEKEY_GOLD_BLACK), item(ItemID.SHADEKEY_GOLD_PURPLE), From f00925510e95ba6ada0e989dfa4b135e6f856cad Mon Sep 17 00:00:00 2001 From: Jordan Atwood Date: Fri, 26 Sep 2025 17:32:05 -0700 Subject: [PATCH 05/38] Remove unused Slf4j annotations and imports --- .../net/runelite/client/plugins/banktags/BankTagsPlugin.java | 2 -- .../java/net/runelite/client/plugins/cannon/CannonPlugin.java | 2 -- .../java/net/runelite/client/plugins/devtools/VarInspector.java | 2 -- 3 files changed, 6 deletions(-) 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 626328c0887..6efed4fe416 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 @@ -40,7 +40,6 @@ import javax.inject.Inject; import javax.inject.Named; import lombok.Getter; -import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.ItemComposition; import net.runelite.api.MenuAction; @@ -76,7 +75,6 @@ description = "Enable tagging of bank items and searching of bank tags", tags = {"searching", "tagging"} ) -@Slf4j public class BankTagsPlugin extends Plugin implements BankTagsService { // banktags:item_=tag,tag,tag,... diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java index 0c04783d759..7c3e1cfc594 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java @@ -30,7 +30,6 @@ import java.util.List; import javax.inject.Inject; import lombok.Getter; -import lombok.extern.slf4j.Slf4j; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; import net.runelite.api.GameState; @@ -60,7 +59,6 @@ description = "Show information about cannon placement and/or amount of cannonballs", tags = {"combat", "notifications", "ranged", "overlay"} ) -@Slf4j public class CannonPlugin extends Plugin { static final int MAX_OVERLAY_DISTANCE = 4100; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/VarInspector.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/VarInspector.java index 2ecbd09ca97..be0408e6fe9 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/VarInspector.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/VarInspector.java @@ -45,7 +45,6 @@ import javax.swing.SwingUtilities; import javax.swing.border.CompoundBorder; import lombok.Getter; -import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.IndexDataBase; import net.runelite.api.VarbitComposition; @@ -62,7 +61,6 @@ import net.runelite.client.ui.DynamicGridLayout; import net.runelite.client.ui.FontManager; -@Slf4j class VarInspector extends DevToolsFrame { @Getter From 9ce4c573b148fcc709c1df9de610f1bd92a8e4d6 Mon Sep 17 00:00:00 2001 From: thelope Date: Sun, 28 Sep 2025 17:07:53 -0400 Subject: [PATCH 06/38] clues: remove essence mine HotColdLocation This step was unobtainable. It was confused with the CoordinateClue "Arceuus essence mine (CIS)". --- .../plugins/cluescrolls/clues/hotcold/HotColdLocation.java | 1 - 1 file changed, 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdLocation.java index defc90c4da2..30d45cb96aa 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdLocation.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdLocation.java @@ -187,7 +187,6 @@ public enum HotColdLocation ZEAH_HOUSECHURCH(MASTER, new WorldPoint(1681, 3794, 0), ZEAH, "By the entrance to the Arceuus church.", ANCIENT_WIZARDS), ZEAH_DARK_ALTAR(MASTER, new WorldPoint(1698, 3880, 0), ZEAH, "West of the Dark Altar.", BRASSICAN_MAGE), ZEAH_ARCEUUS_HOUSE(MASTER, new WorldPoint(1710, 3700, 0), ZEAH, "By the south-eastern entrance to Arceuus.", BRASSICAN_MAGE), - ZEAH_ESSENCE_MINE(MASTER, new WorldPoint(1762, 3852, 0), ZEAH, "By the Arceuus essence mine.", BRASSICAN_MAGE), ZEAH_ESSENCE_MINE_NE(MASTER, new WorldPoint(1773, 3867, 0), ZEAH, "North-east of the Arceuus essence mine.", BRASSICAN_MAGE), ZEAH_PISCARILUS_MINE(MASTER, new WorldPoint(1768, 3705, 0), ZEAH, "South of the Piscarilius mine.", ANCIENT_WIZARDS), ZEAH_GOLDEN_FIELD_TAVERN(MASTER, new WorldPoint(1718, 3643, 0), ZEAH, "South of the gravestone in Kingstown.", BRASSICAN_MAGE), From ffdcfb62b6b9b4728892a1c3703f202b0ed46efc Mon Sep 17 00:00:00 2001 From: chsami Date: Tue, 30 Sep 2025 05:41:27 +0200 Subject: [PATCH 07/38] feat: bump 2.0.16 --- runelite-client/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index 8a186657ffe..156b351b8d8 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -41,7 +41,7 @@ nogit false false - 2.0.15 + 2.0.16 nogit From d7ef778a749369e2181220b77a63e4cfe248de6f Mon Sep 17 00:00:00 2001 From: chsami Date: Mon, 29 Sep 2025 23:14:45 -0600 Subject: [PATCH 08/38] refactor(equipment): remove deprecated useCapeAction method --- .../microbot/util/equipment/Rs2Equipment.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java index 26ab5dc7392..a8f2eed83f3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java @@ -52,18 +52,6 @@ public static void storeEquipmentItemsInMemory(ItemContainerChanged e) { equipmentItems = Collections.unmodifiableList(_equipmentItems); } - @Deprecated(since = "Use interact", forRemoval = true) - public static boolean useCapeAction(int itemId, String action) { - Rs2ItemModel item = get(itemId); - if (item == null) { - Microbot.status = "Cape is missing in the equipment slot"; - return false; - } - - invokeMenu(item, action); - return true; - } - @Deprecated(since = "Use interact", forRemoval = true) public static boolean useRingAction(JewelleryLocationEnum jewelleryLocationEnum) { if (!isWearing(EquipmentInventorySlot.RING)) { From 1929659fd38bebd006965f8612a199d5dc3d8546 Mon Sep 17 00:00:00 2001 From: chsami Date: Mon, 29 Sep 2025 23:15:30 -0600 Subject: [PATCH 09/38] refactor(equipment): remove deprecated useRingAction method --- .../plugins/microbot/util/equipment/Rs2Equipment.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java index a8f2eed83f3..debe388d03e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java @@ -52,17 +52,6 @@ public static void storeEquipmentItemsInMemory(ItemContainerChanged e) { equipmentItems = Collections.unmodifiableList(_equipmentItems); } - @Deprecated(since = "Use interact", forRemoval = true) - public static boolean useRingAction(JewelleryLocationEnum jewelleryLocationEnum) { - if (!isWearing(EquipmentInventorySlot.RING)) { - Microbot.status = "Amulet is missing in the equipment slot"; - return false; - } - Microbot.doInvoke(new NewMenuEntry(-1, 25362456, MenuAction.CC_OP.getId(), jewelleryLocationEnum.getIdentifier(), -1, "Equip"), - new Rectangle(1, 1, Microbot.getClient().getCanvasWidth(), Microbot.getClient().getCanvasHeight())); - return true; - } - @Deprecated(since = "Use interact", forRemoval = true) public static boolean useAmuletAction(JewelleryLocationEnum jewelleryLocationEnum) { if (!isWearing(EquipmentInventorySlot.AMULET) || !hasEquippedContains(jewelleryLocationEnum.getTooltip())) { From f446eca002f8f68fdb97cb0fdfe29dab00cb0afb Mon Sep 17 00:00:00 2001 From: chsami Date: Mon, 29 Sep 2025 23:15:45 -0600 Subject: [PATCH 10/38] refactor(equipment): remove deprecated useAmuletAction method --- .../plugins/microbot/util/equipment/Rs2Equipment.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java index debe388d03e..23a511ef8e2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java @@ -52,17 +52,6 @@ public static void storeEquipmentItemsInMemory(ItemContainerChanged e) { equipmentItems = Collections.unmodifiableList(_equipmentItems); } - @Deprecated(since = "Use interact", forRemoval = true) - public static boolean useAmuletAction(JewelleryLocationEnum jewelleryLocationEnum) { - if (!isWearing(EquipmentInventorySlot.AMULET) || !hasEquippedContains(jewelleryLocationEnum.getTooltip())) { - Microbot.status = "Amulet is missing in the equipment slot"; - return false; - } - Microbot.doInvoke(new NewMenuEntry(-1, 25362449, MenuAction.CC_OP.getId(), jewelleryLocationEnum.getIdentifier(), -1, "Equip"), - new Rectangle(1, 1, Microbot.getClient().getCanvasWidth(), Microbot.getClient().getCanvasHeight())); - return true; - } - public static Stream all() { final List items = items(); if (items == null) return Stream.empty(); From 670705b50f0aa40d91dfdbf938d6af4236e74cd1 Mon Sep 17 00:00:00 2001 From: chsami Date: Mon, 29 Sep 2025 23:20:05 -0600 Subject: [PATCH 11/38] refactor(equipment): remove deprecated equipment methods --- .../PrePostScheduleRequirements.java | 2 +- .../requirement/SpellbookRequirement.java | 4 +- .../util/depositbox/DepositBoxLocation.java | 2 +- .../microbot/util/equipment/Rs2Equipment.java | 75 ------------------- .../microbot/util/item/Rs2ExplorersRing.java | 16 ++-- 5 files changed, 12 insertions(+), 87 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/requirements/PrePostScheduleRequirements.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/requirements/PrePostScheduleRequirements.java index 2a3e1d4433b..31a69ed5889 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/requirements/PrePostScheduleRequirements.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/requirements/PrePostScheduleRequirements.java @@ -1339,7 +1339,7 @@ private InventorySetupPlanner analyzeRequirementsAndCreateLayoutPlan(Completable for (Rs2ItemModel item : itemNotInItemReqsEquipment) { EquipmentInventorySlot itemSlot = EquipmentInventorySlot.values()[item.getSlot()]; Rs2Bank.depositEquippedItem(itemSlot); - boolean individualDeposited = sleepUntil(()->!Rs2Equipment.hasEquipped(item.getId()), Constants.GAME_TICK_LENGTH*2); + boolean individualDeposited = sleepUntil(()->!Rs2Equipment.isWearing(item.getId()), Constants.GAME_TICK_LENGTH*2); if (individualDeposited) { log.info("\\tDeposited individual equipment item: {} x{}", item.getName(), item.getQuantity()); } else { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/requirements/requirement/SpellbookRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/requirements/requirement/SpellbookRequirement.java index 07a9a548b37..fd990e07028 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/requirements/requirement/SpellbookRequirement.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/requirements/requirement/SpellbookRequirement.java @@ -346,7 +346,7 @@ private static boolean ensureLunarIsleAccess() { log.info("Seal of passage in inventory, equipping it for Lunar Isle access"); // equip the seal of passage if (Rs2Inventory.interact(ItemID.LUNAR_SEAL_OF_PASSAGE, "Wear")) { - boolean equipped = sleepUntil(() -> Rs2Equipment.hasEquipped(ItemID.LUNAR_SEAL_OF_PASSAGE), 3000); + boolean equipped = sleepUntil(() -> Rs2Equipment.isWearing(ItemID.LUNAR_SEAL_OF_PASSAGE), 3000); if (equipped) { log.info("Successfully equipped seal of passage for Lunar Isle access"); return true; @@ -407,7 +407,7 @@ private static boolean ensureLunarIsleAccess() { // equip the seal of passage if (Rs2Inventory.interact(ItemID.LUNAR_SEAL_OF_PASSAGE, "Wear")) { - boolean equipped = sleepUntil(() -> Rs2Equipment.hasEquipped(ItemID.LUNAR_SEAL_OF_PASSAGE), 3000); + boolean equipped = sleepUntil(() -> Rs2Equipment.isWearing(ItemID.LUNAR_SEAL_OF_PASSAGE), 3000); if (equipped) { log.info("Successfully equipped seal of passage for Lunar Isle access"); return true; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/depositbox/DepositBoxLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/depositbox/DepositBoxLocation.java index 11043198dd7..7afa520f039 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/depositbox/DepositBoxLocation.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/depositbox/DepositBoxLocation.java @@ -169,7 +169,7 @@ public boolean hasRequirements() { if (!isMember()) return false; // Requires Lunar Diplomacy & Seal of passage OR Dream Mentor if (Rs2Player.getQuestState(Quest.DREAM_MENTOR) != QuestState.FINISHED) { - return Rs2Player.getQuestState(Quest.LUNAR_DIPLOMACY) == QuestState.FINISHED && Rs2Equipment.hasEquipped(ItemID.SEAL_OF_PASSAGE); + return Rs2Player.getQuestState(Quest.LUNAR_DIPLOMACY) == QuestState.FINISHED && Rs2Equipment.isWearing(ItemID.SEAL_OF_PASSAGE); } else { return Rs2Player.getQuestState(Quest.DREAM_MENTOR) == QuestState.FINISHED; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java index 23a511ef8e2..39b52b6ad3b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java @@ -116,81 +116,6 @@ public static Rs2ItemModel get(String... names) { return all(names).findFirst().orElse(null); } - /** - * Checks if the equipment contains an item that matches the specified predicate. - * - * @param predicate The predicate to apply. - * @return True if the equipment contains an item that matches the predicate, false otherwise. - */ - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean contains(Predicate predicate) { - return get(predicate) != null; - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean hasEquipped(String itemName) { - return isWearing(itemName,true); - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean hasEquippedContains(String itemName) { - return isWearing(itemName,false); - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean hasEquipped(int id) { - return isWearing(id); - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean hasEquippedSlot(EquipmentInventorySlot slot) { - return isWearing(slot); - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean isEquipped(String name, EquipmentInventorySlot slot) { - return isEquipped(name, slot, false); - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean isEquipped(int id, EquipmentInventorySlot slot) { - final Rs2ItemModel item = get(slot); - return item != null && item.getId() == id; - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean isEquipped(String name, EquipmentInventorySlot slot, boolean exact) { - final Rs2ItemModel item = get(slot); - if (item == null) return false; - return exact ? item.getName().equalsIgnoreCase(name) : item.getName().toLowerCase().contains(name.toLowerCase()); - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean hasGuthanWeaponEquiped() { - return isEquipped("guthan's warspear", EquipmentInventorySlot.WEAPON); - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean hasGuthanBodyEquiped() { - return isEquipped("guthan's platebody", EquipmentInventorySlot.BODY); - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean hasGuthanLegsEquiped() { - return isEquipped("guthan's chainskirt", EquipmentInventorySlot.LEGS); - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean hasGuthanHelmEquiped() { - return isEquipped("guthan's helm", EquipmentInventorySlot.HEAD); - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean isWearingFullGuthan() { - return hasGuthanBodyEquiped() && hasGuthanWeaponEquiped() && - hasGuthanHelmEquiped() && hasGuthanLegsEquiped(); - } - public static boolean isWearing() { return get() != null; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/item/Rs2ExplorersRing.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/item/Rs2ExplorersRing.java index ce65f3cfd54..a3368b02215 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/item/Rs2ExplorersRing.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/item/Rs2ExplorersRing.java @@ -109,10 +109,10 @@ public static boolean highAlch(Rs2ItemModel item) { } // Check if any Explorer's Ring is equipped - if ((Rs2Equipment.hasEquipped(ItemID.LUMBRIDGE_RING_EASY) || - Rs2Equipment.hasEquipped(ItemID.LUMBRIDGE_RING_MEDIUM) || - Rs2Equipment.hasEquipped(ItemID.LUMBRIDGE_RING_HARD) || - Rs2Equipment.hasEquipped(ItemID.LUMBRIDGE_RING_ELITE))) { + if ((Rs2Equipment.isWearing(ItemID.LUMBRIDGE_RING_EASY) || + Rs2Equipment.isWearing(ItemID.LUMBRIDGE_RING_MEDIUM) || + Rs2Equipment.isWearing(ItemID.LUMBRIDGE_RING_HARD) || + Rs2Equipment.isWearing(ItemID.LUMBRIDGE_RING_ELITE))) { return interact(item); } return false; @@ -147,10 +147,10 @@ public static boolean hasRing() { Rs2Inventory.hasItem(ItemID.LUMBRIDGE_RING_MEDIUM) || Rs2Inventory.hasItem(ItemID.LUMBRIDGE_RING_HARD) || Rs2Inventory.hasItem(ItemID.LUMBRIDGE_RING_ELITE) || - Rs2Equipment.hasEquipped(ItemID.LUMBRIDGE_RING_EASY) || - Rs2Equipment.hasEquipped(ItemID.LUMBRIDGE_RING_MEDIUM) || - Rs2Equipment.hasEquipped(ItemID.LUMBRIDGE_RING_HARD) || - Rs2Equipment.hasEquipped(ItemID.LUMBRIDGE_RING_ELITE); + Rs2Equipment.isWearing(ItemID.LUMBRIDGE_RING_EASY) || + Rs2Equipment.isWearing(ItemID.LUMBRIDGE_RING_MEDIUM) || + Rs2Equipment.isWearing(ItemID.LUMBRIDGE_RING_HARD) || + Rs2Equipment.isWearing(ItemID.LUMBRIDGE_RING_ELITE); } /** From 050081611b3a39aad87538282ae4c083fdb705f9 Mon Sep 17 00:00:00 2001 From: chsami Date: Mon, 29 Sep 2025 23:23:09 -0600 Subject: [PATCH 12/38] refactor(inventory): update bank widget and item container references --- .../microbot/inventorysetups/MInventorySetupsPlugin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/MInventorySetupsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/MInventorySetupsPlugin.java index 41a4bece972..8c65aa4d464 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/MInventorySetupsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/MInventorySetupsPlugin.java @@ -426,7 +426,7 @@ else if (event.getKey().equals(CONFIG_KEY_PERSIST_HOTKEYS)) { clientThread.invokeLater(() -> { - boolean bankOpen = client.getItemContainer(InventoryID.BANK) != null; + boolean bankOpen = client.getItemContainer(net.runelite.api.gameval.InventoryID.BANK) != null; if (config.persistHotKeysOutsideBank()) { registerHotkeys(); @@ -546,7 +546,7 @@ public void onPostMenuSort(PostMenuSort postMenuSort) public void onMenuEntryAdded(MenuEntryAdded event) { - Widget bankWidget = client.getWidget(ComponentID.BANK_TITLE_BAR); + Widget bankWidget = client.getWidget(net.runelite.api.gameval.InterfaceID.Bankmain.TITLE); if (bankWidget == null || bankWidget.isHidden()) { return; @@ -561,7 +561,7 @@ public void onMenuEntryAdded(MenuEntryAdded event) // add item to additional filtered items else if (panel.getCurrentSelectedSetup() != null && bankTagsService.getActiveLayout() == null // If there is an active layout, then the real item behind the fake layout item may be added. So just disallow this menu. - && event.getActionParam1() == ComponentID.BANK_ITEM_CONTAINER + && event.getActionParam1() == net.runelite.api.gameval.InterfaceID.Bankmain.UNIVERSE && client.isKeyPressed(KeyCode.KC_SHIFT) && event.getOption().equals("Examine")) { From 0710b6dee82209a327b0dff4e918930568dd95c6 Mon Sep 17 00:00:00 2001 From: chsami Date: Tue, 30 Sep 2025 00:30:40 -0600 Subject: [PATCH 13/38] refactor(inventory): update bank widget and item container references --- .../InventorySetupsSlotID.java | 11 +++++--- .../MInventorySetupsPlugin.java | 28 +++++++++---------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/InventorySetupsSlotID.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/InventorySetupsSlotID.java index a3d2b6ba147..e8a379cce8e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/InventorySetupsSlotID.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/InventorySetupsSlotID.java @@ -26,6 +26,9 @@ import net.runelite.api.InventoryID; +import static net.runelite.api.gameval.InventoryID.INV; +import static net.runelite.api.gameval.InventoryID.WORN; + public enum InventorySetupsSlotID { @@ -55,18 +58,18 @@ public int getId() return id; } - public static InventorySetupsSlotID fromInventoryID(final InventoryID inventoryId) + public static InventorySetupsSlotID fromInventoryID(final int inventoryId) { - if (inventoryId == null) + if (inventoryId == 0) { return null; } switch (inventoryId) { - case INVENTORY: + case INV: return INVENTORY; - case EQUIPMENT: + case WORN: return EQUIPMENT; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/MInventorySetupsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/MInventorySetupsPlugin.java index 8c65aa4d464..443f57ae82a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/MInventorySetupsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/MInventorySetupsPlugin.java @@ -33,8 +33,8 @@ import net.runelite.api.Menu; import net.runelite.api.*; import net.runelite.api.events.*; +import net.runelite.api.gameval.InterfaceID; import net.runelite.api.widgets.ComponentID; -import net.runelite.api.widgets.InterfaceID; import net.runelite.api.widgets.Widget; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; @@ -865,7 +865,7 @@ private Item retrieveItemFromBankMenuEntry(int inventoryIndex) @Subscribe private void onWidgetClosed(WidgetClosed event) { - if (event.getGroupId() == InterfaceID.BANK ) + if (event.getGroupId() == net.runelite.api.gameval.InterfaceID.BANKMAIN ) { if (!config.persistHotKeysOutsideBank()) { @@ -883,7 +883,7 @@ private void onWidgetClosed(WidgetClosed event) @Subscribe public void onWidgetLoaded(WidgetLoaded event) { - if (event.getGroupId() == InterfaceID.BANK) + if (event.getGroupId() == InterfaceID.BANKMAIN) { if (!config.persistHotKeysOutsideBank()) { @@ -954,7 +954,7 @@ public void addInventorySetup() clientThread.invokeLater(() -> { - List inv = getNormalizedContainer(InventoryID.INVENTORY); + List inv = getNormalizedContainer(InterfaceID.INVENTORY); for (int i = 0; i < inv.size(); i++) { InventorySetupsItem item = inv.get(i); @@ -962,7 +962,7 @@ public void addInventorySetup() item.setLocked(isLocked); } - List eqp = getNormalizedContainer(InventoryID.EQUIPMENT); + List eqp = getNormalizedContainer(net.runelite.api.gameval.InventoryID.WORN); List runePouchData = ammoHandler.getRunePouchDataIfInContainer(inv); List boltPouchData = ammoHandler.getBoltPouchDataIfInContainer(inv); List quiverData = ammoHandler.getQuiverDataIfInSetup(inv, eqp); @@ -1014,8 +1014,8 @@ public void addInventorySetup(String name) { clientThread.invokeLater(() -> { - List inv = getNormalizedContainer(InventoryID.INVENTORY); - List eqp = getNormalizedContainer(InventoryID.EQUIPMENT); + List inv = getNormalizedContainer(net.runelite.api.gameval.InventoryID.INV); + List eqp = getNormalizedContainer(net.runelite.api.gameval.InventoryID.WORN); List runePouchData = ammoHandler.getRunePouchDataIfInContainer(inv); List boltPouchData = ammoHandler.getBoltPouchDataIfInContainer(inv); @@ -1418,8 +1418,8 @@ public void updateCurrentSetup(InventorySetup setup, boolean showConfirmDialog) // must be on client thread to get names clientThread.invokeLater(() -> { - List inv = getNormalizedContainer(InventoryID.INVENTORY); - List eqp = getNormalizedContainer(InventoryID.EQUIPMENT); + List inv = getNormalizedContainer(net.runelite.api.gameval.InventoryID.INV); + List eqp = getNormalizedContainer(net.runelite.api.gameval.InventoryID.WORN); // copy over fuzzy attributes for (int i = 0; i < inv.size(); i++) @@ -2058,17 +2058,17 @@ public List getNormalizedContainer(final InventorySetupsSlo switch (id) { case INVENTORY: - return getNormalizedContainer(InventoryID.INVENTORY); + return getNormalizedContainer(net.runelite.api.gameval.InventoryID.INV); case EQUIPMENT: - return getNormalizedContainer(InventoryID.EQUIPMENT); + return getNormalizedContainer(net.runelite.api.gameval.InventoryID.WORN); default: return ammoHandler.getNormalizedSpecialContainer(id); } } - public List getNormalizedContainer(final InventoryID id) + public List getNormalizedContainer(final int id) { - assert id == InventoryID.INVENTORY || id == InventoryID.EQUIPMENT : "invalid inventory ID"; + assert id == net.runelite.api.gameval.InventoryID.INV || id == net.runelite.api.gameval.InventoryID.WORN : "invalid inventory ID"; final ItemContainer container = client.getItemContainer(id); @@ -2080,7 +2080,7 @@ public List getNormalizedContainer(final InventoryID id) items = container.getItems(); } - int size = id == InventoryID.INVENTORY ? NUM_INVENTORY_ITEMS : NUM_EQUIPMENT_ITEMS; + int size = id == net.runelite.api.gameval.InventoryID.INV ? NUM_INVENTORY_ITEMS : NUM_EQUIPMENT_ITEMS; for (int i = 0; i < size; i++) { From 6b56d3e60ab8097641d2493598259244127432b2 Mon Sep 17 00:00:00 2001 From: chsami Date: Tue, 30 Sep 2025 08:47:38 +0200 Subject: [PATCH 14/38] fix: remove deprecated runOnClientThread method from ClientThread --- .../client/callback/ClientThread.java | 29 ------------------- 1 file changed, 29 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/callback/ClientThread.java b/runelite-client/src/main/java/net/runelite/client/callback/ClientThread.java index 88a0417a057..5ff96890ef2 100644 --- a/runelite-client/src/main/java/net/runelite/client/callback/ClientThread.java +++ b/runelite-client/src/main/java/net/runelite/client/callback/ClientThread.java @@ -58,35 +58,6 @@ public void invoke(Runnable r) }); } - /** - * Run a method on the client thread, returning the result. - * @param method - * @return - * @param - */ - @SneakyThrows - @Deprecated(since = "1.7.9", forRemoval = true) - public T runOnClientThread(Callable method) { - if (client.isClientThread()) { - return method.call(); - } - final FutureTask task = new FutureTask<>(method); - invoke(task); - try { - return task.get(10000, TimeUnit.MILLISECONDS); - } catch (InterruptedException | TimeoutException | ExecutionException e) { - if (e instanceof InterruptedException) { - Thread.currentThread().interrupt(); - return null; - } - task.cancel(true); - if (!Microbot.isDebug()) { - log.error("Exception during task execution: {}: {}\n{}", e.getClass().getSimpleName(), e.getMessage(),e); - } - return null; - } - } - /** * Run a method on the client thread, returning an optional of the result. * @param method From 35c09b897b5eb3638f4d6e810c34c7a9bc576ad5 Mon Sep 17 00:00:00 2001 From: chsami Date: Tue, 30 Sep 2025 08:48:41 +0200 Subject: [PATCH 15/38] fix: remove deprecated runOnClientThread method from ClientThread --- .../java/net/runelite/client/plugins/microbot/Microbot.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/Microbot.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/Microbot.java index d7a277b6bd5..5570f081e28 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/Microbot.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/Microbot.java @@ -714,11 +714,6 @@ private static boolean isPluginEnabled(String name) { return isPluginEnabled(getPlugin(name)); } - @Deprecated(since = "1.6.2 - Use Rs2Player variant") - public static QuestState getQuestState(Quest quest) { - return getClientThread().runOnClientThreadOptional(() -> quest.getState(client)).orElse(null); - } - public static void writeVersionToFile(String version) throws IOException { try (BufferedWriter writer = new BufferedWriter(new FileWriter(VERSION_FILE_PATH))) { writer.write(version); From 8b5e7af127ad6c0f8b8302319b00596f1b14b839 Mon Sep 17 00:00:00 2001 From: chsami Date: Tue, 30 Sep 2025 08:53:10 +0200 Subject: [PATCH 16/38] fix: remove deprecated getQuestState method from Microbot --- .../plugins/microbot/util/math/Random.java | 53 ------------------- 1 file changed, 53 deletions(-) delete mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/math/Random.java diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/math/Random.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/math/Random.java deleted file mode 100644 index 21549f5a0e9..00000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/math/Random.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.runelite.client.plugins.microbot.util.math; - -import java.util.concurrent.ThreadLocalRandom; -@Deprecated(since = "1.6.0 - Please use Rs2Random", forRemoval = true) -public class Random { - public static int random(final int min, final int max) { - final int n = Math.abs(max - min); - return Math.min(min, max) + (n == 0 ? 0 : new java.util.Random().nextInt(n)); - } - public static double randomDouble(final int min, final int max) { - return min + (max - min) * new java.util.Random().nextDouble(); - } - - public static double clamp(double val) { - return Math.max(1.0, Math.min(13000.0, val)); - } - - public static long randomDelay() { - return (long)clamp(Math.round(new java.util.Random().nextGaussian() * 8000.0)); - } - - /** - * A Gaussian distribution (bell curve) generates values clustered around the mean but with random variations. - * This approach mimics more natural randomness than a uniform random value. - * @param mean - * @param stddev - * @return - */ - @Deprecated(since="1.6.5 - please use Rs2Random", forRemoval = true) - public static int randomGaussian(double mean, double stddev) { - double u, v, s; - do { - u = 2.0 * ThreadLocalRandom.current().nextDouble() - 1.0; - v = 2.0 * ThreadLocalRandom.current().nextDouble() - 1.0; - s = u * u + v * v; - } while (s >= 1 || s == 0); - double multiplier = Math.sqrt(-2.0 * Math.log(s) / s); - int value = (int) (mean + stddev * u * multiplier); - if (value < 0) - { - value = 0; - } - return value; - } - - public static int randomWithNoise(int base, int noise) { - return base + ThreadLocalRandom.current().nextInt(-noise / 2, noise / 2 + 1); - } - - public static int randomExponential(int base, double factor) { - return (int) (base * Math.pow(2, ThreadLocalRandom.current().nextDouble() * factor)); - } -} \ No newline at end of file From 10bd8c7cd19028f14edf4ce26b00bcc9c5b9626f Mon Sep 17 00:00:00 2001 From: chsami Date: Tue, 30 Sep 2025 08:55:01 +0200 Subject: [PATCH 17/38] fix: remove deprecated getAnimation and getHeadIcon methods from Rs2Reflection --- .../util/reflection/Rs2Reflection.java | 44 ------------------- 1 file changed, 44 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/reflection/Rs2Reflection.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/reflection/Rs2Reflection.java index 1fb448d910d..c05d7a0945b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/reflection/Rs2Reflection.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/reflection/Rs2Reflection.java @@ -103,50 +103,6 @@ else if (insnNode.getOpcode() == Opcodes.SIPUSH) System.out.println("[INVOKE] => param0: " + param0 + " param1: " + param1 + " opcode: " + opcode + " id: " + identifier + " itemid: " + itemId); } - /** - * Gets the animation of an NPC by using reflection. - * @param npc - * @return - */ - @SneakyThrows - @Deprecated(since="1.9.8.7 - Runelite exposes all animations", forRemoval=true) - public static int getAnimation(NPC npc) { - if (npc == null) { - return -1; - } - return npc.getAnimation(); - } - - /** - * Gets the head icons of an NPC by using reflection. - * @param npc - * @return - */ - @SneakyThrows - @Deprecated(since="1.9.8.7 - Runelite exposes overheads on npcs", forRemoval = true) - public static HeadIcon getHeadIcon(Rs2NpcModel npc) { - if (npc == null) { - return null; - } - - if (npc.getOverheadSpriteIds() == null) { - Microbot.log("Failed to find the correct overhead prayer."); - return null; - } - - for (int i = 0; i < npc.getOverheadSpriteIds().length; i++) { - int overheadSpriteId = npc.getOverheadSpriteIds()[i]; - - if (overheadSpriteId == -1) continue; - - return HeadIcon.values()[overheadSpriteId]; - } - - Microbot.log("Found overheadSpriteIds: " + Arrays.toString(npc.getOverheadSpriteIds()) + " but failed to find valid overhead prayer."); - - return null; - } - @SneakyThrows public static String[] getGroundItemActions(ItemComposition item) { List fields = Arrays.stream(item.getClass().getFields()).filter(x -> x.getType().isArray()).collect(Collectors.toList()); From 90e5346b9eef77dfef6ecc2fd4d3630a6f4c48af Mon Sep 17 00:00:00 2001 From: chsami Date: Tue, 30 Sep 2025 08:55:40 +0200 Subject: [PATCH 18/38] fix: remove deprecated getAnimation and getHeadIcon methods from Rs2Reflection --- .../plugins/microbot/util/reflection/Rs2Reflection.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/reflection/Rs2Reflection.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/reflection/Rs2Reflection.java index c05d7a0945b..96cf07c1dfd 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/reflection/Rs2Reflection.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/reflection/Rs2Reflection.java @@ -1,11 +1,12 @@ package net.runelite.client.plugins.microbot.util.reflection; import lombok.SneakyThrows; -import net.runelite.api.*; +import net.runelite.api.ItemComposition; +import net.runelite.api.MenuAction; +import net.runelite.api.MenuEntry; import net.runelite.client.plugins.microbot.Microbot; import net.runelite.client.plugins.microbot.util.keyboard.Rs2Keyboard; import net.runelite.client.plugins.microbot.util.math.Rs2Random; -import net.runelite.client.plugins.microbot.util.npc.Rs2NpcModel; import org.objectweb.asm.ClassReader; import org.objectweb.asm.Opcodes; import org.objectweb.asm.tree.*; From 431dd43f28fb05aeaa1117ecb730f13119ebc90a Mon Sep 17 00:00:00 2001 From: chsami Date: Tue, 30 Sep 2025 08:57:15 +0200 Subject: [PATCH 19/38] fix: remove deprecated Rs2Equipment --- .../microbot/util/equipment/Rs2Equipment.java | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java index 39b52b6ad3b..580362819fe 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/equipment/Rs2Equipment.java @@ -169,11 +169,6 @@ public static boolean isWearing(String[] names, EquipmentInventorySlot[] searchS return isWearing(names, false, searchSlots); } - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean isWearing(List names, boolean exact, List ignoreSlots) { - return isWearing(names.toArray(String[]::new), exact, ignoreSlots.toArray(EquipmentInventorySlot[]::new), false); - } - private static boolean unEquip(Rs2ItemModel item) { return interact(item, "remove"); } @@ -305,16 +300,6 @@ public static boolean interact(String[] names, String action) { return interact(names, action, false); } - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean isWearingShield() { - return isWearing(EquipmentInventorySlot.SHIELD); - } - - @Deprecated(since = "Use isWearing", forRemoval = true) - public static boolean isNaked() { - return !isWearing(); - } - public static void invokeMenu(Rs2ItemModel rs2Item, String action) { if (action == null || action.isEmpty()) return; if (rs2Item == null) return; From d7be3ee16d9af50f3a2c9269b29c6d61d5b5af6d Mon Sep 17 00:00:00 2001 From: chsami Date: Tue, 30 Sep 2025 09:05:59 +0200 Subject: [PATCH 20/38] refactor(bank): remove deprecated withdrawOne and useBank methods --- .../plugins/microbot/util/bank/Rs2Bank.java | 39 ++----------------- 1 file changed, 4 insertions(+), 35 deletions(-) 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 bc1ad49572c..0c46b26335c 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 @@ -3,27 +3,13 @@ import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; import lombok.extern.slf4j.Slf4j; -import net.runelite.api.EquipmentInventorySlot; - -import java.util.List; -import java.util.stream.Collectors; -import net.runelite.api.GameObject; -import net.runelite.api.InventoryID; -import net.runelite.api.ItemComposition; -import net.runelite.api.MenuAction; -import net.runelite.api.NPC; -import net.runelite.api.Player; -import net.runelite.api.ScriptID; -import net.runelite.api.SpriteID; -import net.runelite.api.TileObject; -import net.runelite.api.VarClientInt; -import net.runelite.api.WallObject; +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.VarbitID; -import net.runelite.api.gameval.InterfaceID; import net.runelite.api.widgets.ComponentID; import net.runelite.api.widgets.Widget; import net.runelite.client.config.RuneScapeProfileType; @@ -35,6 +21,7 @@ import net.runelite.client.plugins.microbot.shortestpath.pathfinder.Pathfinder; import net.runelite.client.plugins.microbot.util.antiban.Rs2AntibanSettings; import net.runelite.client.plugins.microbot.util.bank.enums.BankLocation; +import net.runelite.client.plugins.microbot.util.cache.serialization.CacheSerializationManager; import net.runelite.client.plugins.microbot.util.coords.Rs2WorldPoint; import net.runelite.client.plugins.microbot.util.equipment.Rs2Equipment; import net.runelite.client.plugins.microbot.util.gameobject.Rs2GameObject; @@ -50,7 +37,6 @@ import net.runelite.client.plugins.microbot.util.npc.Rs2NpcModel; import net.runelite.client.plugins.microbot.util.player.Rs2Player; import net.runelite.client.plugins.microbot.util.player.Rs2PlayerModel; -import net.runelite.client.plugins.microbot.util.cache.serialization.CacheSerializationManager; import net.runelite.client.plugins.microbot.util.security.Encryption; import net.runelite.client.plugins.microbot.util.security.Login; import net.runelite.client.plugins.microbot.util.settings.Rs2Settings; @@ -1208,13 +1194,6 @@ public static boolean withdrawOne(String name) { return withdrawOne(name, false); } - @Deprecated(since="Use withdrawOne & sleep") - public static boolean withdrawOne(String name, int sleepTime) { - final boolean success = withdrawOne(name, false); - sleep(sleepTime); - return success; - } - /** * withdraw one item identified by its id. * @@ -2163,16 +2142,6 @@ public static boolean walkToBankAndUseBank(BankLocation bankLocation, boolean to return Rs2Bank.openBank(); } - /** - * Use bank or chest - * - * @return true if bank is opened - */ - @Deprecated(since="Use openBank") - public static boolean useBank() { - return openBank(); - } - /** * Updates the bank items in memory based on the provided event. * Thread-safe method called from the client thread via event handler. @@ -2827,7 +2796,7 @@ public static boolean depositLootingBag(){ public static boolean withdrawLootItems(String npcName, List itemsToNotSell) { boolean isAtGe = Rs2GrandExchange.walkToGrandExchange(); if (isAtGe) { - boolean isBankOpen = Rs2Bank.useBank(); + boolean isBankOpen = Rs2Bank.openBank(); if (!isBankOpen) return false; } Rs2Bank.depositAll(); From 755ae71ef03c476189fbe0114bbaa0619ef628e5 Mon Sep 17 00:00:00 2001 From: chsami Date: Tue, 30 Sep 2025 09:09:13 +0200 Subject: [PATCH 21/38] refactor(player): remove deprecated methods and improve type handling --- .../microbot/util/player/Rs2Player.java | 268 ------------------ 1 file changed, 268 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/player/Rs2Player.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/player/Rs2Player.java index bf027a5ca09..47e8e895055 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/player/Rs2Player.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/player/Rs2Player.java @@ -337,17 +337,6 @@ public static boolean isAnimating() { return isAnimating(600); } - /** - * Checks if the player is currently walking. - * - * @return {@code true} if the player is moving, {@code false} otherwise. - * @deprecated Since version 1.7.2, use {@link #isMoving()} instead. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean isWalking() { - return Rs2Player.isMoving(); - } - /** * Checks if the player is currently moving based on their pose animation. * A player is considered moving if their pose animation is different from their idle pose animation. @@ -417,15 +406,6 @@ public static boolean isInMemberWorld() { return false; } - - @Deprecated(since = "Use the Rs2Combat.specState method", forRemoval = true) - public static void toggleSpecialAttack(int energyRequired) { - int currentSpecEnergy = Microbot.getClient().getVarpValue(VarPlayer.SPECIAL_ATTACK_PERCENT); - if (currentSpecEnergy >= energyRequired && (Microbot.getClient().getVarpValue(VarPlayer.SPECIAL_ATTACK_ENABLED) == 0)) { - Rs2Widget.clickWidget("special attack"); - } - } - /** * Toggles the player's run energy on or off. * @@ -683,22 +663,6 @@ public static double getHealthPercentage() { return (double) (getBoostedSkillLevel(Skill.HITPOINTS) * 100) / getRealSkillLevel(Skill.HITPOINTS); } - /** - * Retrieves a list of players around the player. - * - * @return A list of {@code Rs2PlayerModel} objects representing nearby players, excluding the local player. - * @deprecated Since 1.7.2, use {@link #getPlayers(Predicate)} for better filtering support. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static List getPlayers() { - return Microbot.getClient() - .getTopLevelWorldView() - .players() - .stream() - .filter(Objects::nonNull) - .collect(Collectors.toList()); - } - /** * Get a stream of players around you, optionally filtered by a predicate. * @@ -790,21 +754,6 @@ public static int calculateHealthPercentage(Rs2PlayerModel rs2Player) { return (int) ((healthRatio / (double) healthScale) * 100); } - /** - * Calculates the player's health as a percentage. - * - *

This method converts a {@link Player} object into an {@link Rs2PlayerModel} - * before calculating health percentage.

- * - * @param player The {@link Player} to calculate health for. - * @return The health percentage (0-100), or {@code -1} if health information is unavailable. - * @deprecated Since 1.7.2, use {@link #calculateHealthPercentage(Rs2PlayerModel)} for consistency and improved type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static int calculateHealthPercentage(Player player) { - return calculateHealthPercentage(new Rs2PlayerModel(player)); - } - /** * Retrieves a map of the player's equipped items, mapping {@link KitType} to their corresponding item IDs. * @@ -822,18 +771,6 @@ public static Map getPlayerEquipmentIds(Rs2PlayerModel rs2Play return equipmentMap; } - /** - * Retrieves a map of the player's equipped items by converting a {@link Player} object into an {@link Rs2PlayerModel}. - * - * @param player The {@link Player} whose equipment is to be retrieved. - * @return A {@code Map} containing the equipment slot types as keys and the corresponding item IDs as values. - * @deprecated Since 1.7.2, use {@link #getPlayerEquipmentIds(Rs2PlayerModel)} for consistency and better type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static Map getPlayerEquipmentIds(Player player) { - return getPlayerEquipmentIds(new Rs2PlayerModel(player)); - } - /** * Retrieves a map of the player's equipped items, mapping {@link KitType} to their corresponding item names. @@ -856,18 +793,6 @@ public static Map getPlayerEquipmentNames(Rs2PlayerModel rs2Pla return equipmentMap; } - /** - * Retrieves a map of the player's equipped items by converting a {@link Player} object into an {@link Rs2PlayerModel}. - * - * @param player The {@link Player} whose equipment names are to be retrieved. - * @return A {@code Map} containing the equipment slot types as keys and the corresponding item names as values. - * @deprecated Since 1.7.2, use {@link #getPlayerEquipmentNames(Rs2PlayerModel)} for consistency and better type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static Map getPlayerEquipmentNames(Player player) { - return getPlayerEquipmentNames(new Rs2PlayerModel(player)); - } - /** * Checks if a player has a specific item equipped by its item ID. @@ -882,20 +807,6 @@ public static boolean hasPlayerEquippedItem(Rs2PlayerModel rs2Player, int itemId return equipment.values().stream() .anyMatch(equippedItemId -> equippedItemId == itemId); } - - /** - * Checks if a player has a specific item equipped by its item ID. - * Converts a {@link Player} object into an {@link Rs2PlayerModel} before performing the check. - * - * @param player The {@link Player} whose equipment is being checked. - * @param itemId The ID of the item to check for. - * @return {@code true} if the player has the specified item equipped, {@code false} otherwise. - * @deprecated Since 1.7.2, use {@link #hasPlayerEquippedItem(Rs2PlayerModel, int)} for consistency and better type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean hasPlayerEquippedItem(Player player, int itemId) { - return hasPlayerEquippedItem(new Rs2PlayerModel(player), itemId); - } /** * Checks if a player has any of the specified items equipped by their item IDs. @@ -911,20 +822,6 @@ public static boolean hasPlayerEquippedItem(Rs2PlayerModel rs2Player, int[] item .anyMatch(equippedItemId -> Arrays.stream(itemIds).anyMatch(id -> id == equippedItemId)); } - /** - * Checks if a player has any of the specified items equipped by their item IDs. - * Converts a {@link Player} object into an {@link Rs2PlayerModel} before performing the check. - * - * @param player The {@link Player} whose equipment is being checked. - * @param itemIds An array of item IDs to check for. - * @return {@code true} if the player has any of the specified items equipped, {@code false} otherwise. - * @deprecated Since 1.7.2, use {@link #hasPlayerEquippedItem(Rs2PlayerModel, int[])} for consistency and better type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean hasPlayerEquippedItem(Player player, int[] itemIds) { - return hasPlayerEquippedItem(new Rs2PlayerModel(player), itemIds); - } - /** * Checks if a player has a specific item equipped by its name. @@ -940,20 +837,6 @@ public static boolean hasPlayerEquippedItem(Rs2PlayerModel rs2Player, String ite .anyMatch(equippedItem -> equippedItem.equalsIgnoreCase(itemName)); } - /** - * Checks if a player has a specific item equipped by its name. - * Converts a {@link Player} object into an {@link Rs2PlayerModel} before performing the check. - * - * @param player The {@link Player} whose equipment is being checked. - * @param itemName The name of the item to check for. - * @return {@code true} if the player has the specified item equipped, {@code false} otherwise. - * @deprecated Since 1.7.2, use {@link #hasPlayerEquippedItem(Rs2PlayerModel, String)} for consistency and better type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean hasPlayerEquippedItem(Player player, String itemName) { - return hasPlayerEquippedItem(new Rs2PlayerModel(player), itemName); - } - /** * Checks if a player has any of the specified items equipped by their names. @@ -969,20 +852,6 @@ public static boolean hasPlayerEquippedItem(Rs2PlayerModel rs2Player, List itemNames.stream().anyMatch(equippedItem::equalsIgnoreCase)); } - /** - * Checks if a player has any of the specified items equipped by their names. - * Converts a {@link Player} object into an {@link Rs2PlayerModel} before performing the check. - * - * @param player The {@link Player} whose equipment is being checked. - * @param itemNames A list of item names to check for. - * @return {@code true} if the player has any of the specified items equipped, {@code false} otherwise. - * @deprecated Since 1.7.2, use {@link #hasPlayerEquippedItem(Rs2PlayerModel, List)} for consistency and better type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean hasPlayerEquippedItem(Player player, List itemNames) { - return hasPlayerEquippedItem(new Rs2PlayerModel(player), itemNames); - } - /** * Retrieves the combat level of the local player. @@ -1016,17 +885,6 @@ public static Rs2PlayerModel getLocalPlayer() { return getPlayers(player -> player.getId() == Microbot.getClient().getLocalPlayer().getId(), true).findFirst().orElse(null); } - /** - * Get the raw local player instance. - * - * @return The raw {@link Player} object. - * @deprecated Since 1.7.2, use {@link #getLocalPlayer()} instead. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static Player getLocalPlayer(boolean raw) { - return Microbot.getClient().getLocalPlayer(); - } - /** * Checks if the player is in combat based on recent activity. * @@ -1046,21 +904,6 @@ public static List getPlayersInCombatLevelRange() { return getPlayersMatchingCombatCriteria().collect(Collectors.toList()); } - /** - * Gets a list of Player objects around the local player within the combat level range - * and wilderness level where they can attack and be attacked. - * - * @param raw If true, returns a list of raw Player objects instead of Rs2PlayerModel. - * @return A list of Player objects within the combat range and attackable wilderness levels. - * @deprecated Since 1.7.2, use {@link #getPlayersInCombatLevelRange()} instead. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static List getPlayersInCombatLevelRange(boolean raw) { - return getPlayersMatchingCombatCriteria() - .map(Rs2PlayerModel::getPlayer) - .collect(Collectors.toList()); - } - /** * Helper method that applies the combat level filtering and returns a Stream of Rs2PlayerModel. * @@ -1123,19 +966,6 @@ public static Rs2WorldPoint getRs2WorldPoint() { return new Rs2WorldPoint(getWorldLocation()); } - /** - * Checks if the player is within a specified distance of a given {@link WorldPoint}. - * - * @param worldPoint The {@link WorldPoint} to check proximity to. - * @param radius The radius (in tiles) around the {@code worldPoint} to check. - * @return {@code true} if the player is within the specified distance, {@code false} otherwise. - * @deprecated Since 1.9.6, use {@link #isInArea(WorldPoint, int)} for better naming consistency. - */ - @Deprecated(since = "1.9.6", forRemoval = true) - public static boolean isNearArea(WorldPoint worldPoint, int radius) { - return isInArea(worldPoint, radius); - } - /** * Checks if the player is within a specified distance of a given {@link WorldPoint}. * @@ -1817,20 +1647,6 @@ public static boolean attack(Rs2PlayerModel rs2Player) { return invokeMenu(rs2Player, "attack"); } - /** - * Invokes the "attack" action on the specified player. - * - *

This method converts a {@link Player} object into an {@link Rs2PlayerModel} before invoking the attack action.

- * - * @param player The {@link Player} to attack. - * @return {@code true} if the action was invoked successfully, {@code false} otherwise. - * @deprecated Since 1.7.2, use {@link #attack(Rs2PlayerModel)} for consistency and improved type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean attack(Player player) { - return attack(new Rs2PlayerModel(player)); - } - /** * Invokes the "walk here" action to move to the same location as the specified player. * @@ -1843,20 +1659,6 @@ public static boolean walkUnder(Rs2PlayerModel rs2Player) { return invokeMenu(rs2Player, "walk here"); } - /** - * Invokes the "walk here" action to move to the same location as the specified player. - * - *

This method converts a {@link Player} object into an {@link Rs2PlayerModel} before invoking the movement action.

- * - * @param player The {@link Player} under whose position to walk. - * @return {@code true} if the action was invoked successfully, {@code false} otherwise. - * @deprecated Since 1.7.2, use {@link #walkUnder(Rs2PlayerModel)} for consistency and improved type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean walkUnder(Player player) { - return walkUnder(new Rs2PlayerModel(player)); - } - /** * Invokes the "trade with" action on the specified player. * @@ -1869,20 +1671,6 @@ public static boolean trade(Rs2PlayerModel rs2Player) { return invokeMenu(rs2Player, "trade with"); } - /** - * Invokes the "trade with" action on the specified player. - * - *

This method converts a {@link Player} object into an {@link Rs2PlayerModel} before invoking the trade action.

- * - * @param player The {@link Player} to trade with. - * @return {@code true} if the action was invoked successfully, {@code false} otherwise. - * @deprecated Since 1.7.2, use {@link #trade(Rs2PlayerModel)} for consistency and improved type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean trade(Player player) { - return trade(new Rs2PlayerModel(player)); - } - /** * Invokes the "follow" action on the specified player. * @@ -1895,20 +1683,6 @@ public static boolean follow(Rs2PlayerModel rs2Player) { return invokeMenu(rs2Player, "follow"); } - /** - * Invokes the "follow" action on the specified player. - * - *

This method converts a {@link Player} object into an {@link Rs2PlayerModel} before invoking the follow action.

- * - * @param player The {@link Player} to follow. - * @return {@code true} if the action was invoked successfully, {@code false} otherwise. - * @deprecated Since 1.7.2, use {@link #follow(Rs2PlayerModel)} for consistency and improved type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean follow(Player player) { - return follow(new Rs2PlayerModel(player)); - } - /** * Invokes the "cast" action on the specified player. * @@ -1921,20 +1695,6 @@ public static boolean cast(Rs2PlayerModel rs2Player) { return invokeMenu(rs2Player, "cast"); } - /** - * Invokes the "cast" action on the specified player. - * - *

This method converts a {@link Player} object into an {@link Rs2PlayerModel} before invoking the cast action.

- * - * @param player The {@link Player} to cast on. - * @return {@code true} if the action was invoked successfully, {@code false} otherwise. - * @deprecated Since 1.7.2, use {@link #cast(Rs2PlayerModel)} for consistency and improved type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean cast(Player player) { - return cast(new Rs2PlayerModel(player)); - } - /** * Selects the "USE" option on a player for an item that is already selected via {@code Rs2Inventory.use(item)}. * @@ -1946,20 +1706,6 @@ public static boolean cast(Player player) { public static boolean use(Rs2PlayerModel rs2Player) { return invokeMenu(rs2Player, "use"); } - - /** - * Selects the "USE" option on a player for an item that is already selected via {@code Rs2Inventory.use(item)}. - * - *

This method converts a {@link Player} object into an {@link Rs2PlayerModel} before invoking the use action.

- * - * @param player The {@link Player} to use the item on. - * @return {@code true} if the action was invoked successfully, {@code false} otherwise. - * @deprecated Since 1.7.2, use {@link #use(Rs2PlayerModel)} for consistency and improved type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean use(Player player) { - return use(new Rs2PlayerModel(player)); - } /** * Selects the "CHALLENGE" option on a player for Soul Wars. @@ -1973,20 +1719,6 @@ public static boolean challenge(Rs2PlayerModel rs2Player) { return invokeMenu(rs2Player, "challenge"); } - /** - * Selects the "CHALLENGE" option on a player for Soul Wars. - * - *

This method converts a {@link Player} object into an {@link Rs2PlayerModel} before invoking the challenge action.

- * - * @param player The {@link Player} to challenge. - * @return {@code true} if the action was invoked successfully, {@code false} otherwise. - * @deprecated Since 1.7.2, use {@link #challenge(Rs2PlayerModel)} for consistency and improved type handling. - */ - @Deprecated(since = "1.7.2", forRemoval = true) - public static boolean challenge(Player player) { - return challenge(new Rs2PlayerModel(player)); - } - /** * Executes a specific menu action on a given player. * From c5cba905dc0750f0811d3d2682d203443964bdbc Mon Sep 17 00:00:00 2001 From: Igor Date: Tue, 30 Sep 2025 17:08:58 +0200 Subject: [PATCH 22/38] feat(quest-helper): add quest helper navigation button - Implement quest helper navigation button in the toolbar - Add icons for quest helper on and off states - Update configuration handling for quest helper toggle - use InterfaceID instead of InventoryID on InventorySetupsPluginPanel.java --- .../ui/InventorySetupsPluginPanel.java | 9 +++---- .../microbot/questhelper/tools/Icon.java | 2 ++ .../java/net/runelite/client/ui/ClientUI.java | 22 ++++++++++++++++++ .../microbot/questhelper/quest_icon_off.png | Bin 0 -> 877 bytes .../microbot/questhelper/quest_icon_on.png | Bin 0 -> 897 bytes 5 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/microbot/questhelper/quest_icon_off.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/microbot/questhelper/quest_icon_on.png diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java index 9fbf6006704..8e8c622ce70 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java @@ -24,6 +24,7 @@ */ package net.runelite.client.plugins.microbot.inventorysetups.ui; +import net.runelite.api.gameval.InterfaceID; import net.runelite.client.plugins.microbot.inventorysetups.InventorySetupUtilities; import net.runelite.client.plugins.microbot.inventorysetups.InventorySetup; import net.runelite.client.plugins.microbot.inventorysetups.InventorySetupsItem; @@ -804,8 +805,8 @@ public void doHighlighting() return; } - final List inv = plugin.getNormalizedContainer(InventoryID.INVENTORY); - final List eqp = plugin.getNormalizedContainer(InventoryID.EQUIPMENT); + final List inv = plugin.getNormalizedContainer(InterfaceID.INVENTORY); + final List eqp = plugin.getNormalizedContainer(InterfaceID.EQUIPMENT); highlightContainerPanel(inv, inventoryPanel); highlightContainerPanel(eqp, equipmentPanel); @@ -830,13 +831,13 @@ public void highlightContainerPanel(final List container, f public void highlightInventory() { - final List inv = plugin.getNormalizedContainer(InventoryID.INVENTORY); + final List inv = plugin.getNormalizedContainer(InterfaceID.INVENTORY); highlightContainerPanel(inv, inventoryPanel); } public void highlightEquipment() { - final List eqp = plugin.getNormalizedContainer(InventoryID.EQUIPMENT); + final List eqp = plugin.getNormalizedContainer(InterfaceID.EQUIPMENT); highlightContainerPanel(eqp, equipmentPanel); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/questhelper/tools/Icon.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/questhelper/tools/Icon.java index 609726a9816..f1faa301a00 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/questhelper/tools/Icon.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/questhelper/tools/Icon.java @@ -46,6 +46,8 @@ public enum Icon EXPANDED("expanded.png"), ICON_BACKGROUND("icon_background.png"), INFO_ICON("info_icon.png"), + QUEST_ICON_OFF("quest_icon_off.png"), + QUEST_ICON_ON("quest_icon_on.png"), QUEST_ICON("quest_icon.png"), QUEST_STEP_ARROW("quest_step_arrow.png"), QUEST_STEP_ARROW_45("quest_step_arrow_45.png"), diff --git a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java index 620ad7232bf..3d55ddfec25 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java @@ -55,6 +55,8 @@ import net.runelite.client.input.MouseListener; import net.runelite.client.input.MouseManager; import net.runelite.client.plugins.microbot.Microbot; +import net.runelite.client.plugins.microbot.questhelper.QuestHelperConfig; +import net.runelite.client.plugins.microbot.util.walker.Rs2Walker; import net.runelite.client.ui.laf.RuneLiteLAF; import net.runelite.client.ui.laf.RuneLiteRootPaneUI; import net.runelite.client.util.*; @@ -124,6 +126,9 @@ public class ClientUI private Dimension lastClientSize; private Cursor defaultCursor; + private JButton questHelperNavBtn; + private BufferedImage questIconOn; + private BufferedImage questIconOff; private String lastNormalBounds; private final Timer normalBoundsTimer; @@ -560,6 +565,23 @@ else if (OSType.getOSType() == OSType.MacOS && SystemInfo.isMacFullWindowContent toolbarPanel.createSidebarPanel()); } + questIconOn = net.runelite.client.plugins.microbot.questhelper.tools.Icon.QUEST_ICON_ON.getImage(); + questIconOff = net.runelite.client.plugins.microbot.questhelper.tools.Icon.QUEST_ICON_OFF.getImage(); + questHelperNavBtn = toolbarPanel.add( + NavigationButton.builder() + .icon(configManager.getConfiguration(QuestHelperConfig.QUEST_HELPER_GROUP, "TurnOn", Boolean.class) ? questIconOff : questIconOn) + .tooltip(configManager.getConfiguration(QuestHelperConfig.QUEST_HELPER_GROUP, "TurnOn", Boolean.class) ? "Disable 'Semi-Auto' Questing" : "Enable 'Semi-Auto' Questing") + .onClick(() -> + { + boolean isEnabled = configManager.getConfiguration(QuestHelperConfig.QUEST_HELPER_GROUP, "TurnOn", Boolean.class); + configManager.setConfiguration(QuestHelperConfig.QUEST_HELPER_GROUP, "TurnOn", !isEnabled); + questHelperNavBtn.setIcon(new ImageIcon(!isEnabled ? questIconOff : questIconOn )); + questHelperNavBtn.setToolTipText(!isEnabled ? "Disable 'Semi-Auto' Questing" : "Enable 'Semi-Auto' Questing"); + if (isEnabled) Rs2Walker.setTarget(null); + }) + .build(), false + ); + // Update config updateFrameConfig(false); diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/microbot/questhelper/quest_icon_off.png b/runelite-client/src/main/resources/net/runelite/client/plugins/microbot/questhelper/quest_icon_off.png new file mode 100644 index 0000000000000000000000000000000000000000..b629f9f9edbe306e85331cc70c15026f90f789e2 GIT binary patch literal 877 zcmV-z1CsoSP)5SaXF8EmYrwB6U0w#R&J!Ox|M-uos`^5%Wt^SsYF z&pG_Bm+}NQz~XQ?Kl6B&OLet-!R_|wNCK+?kKt_rb$}f(0p@>}P;fe({)!4$cSpxQ z-hOKzk^5<@!}ge5E^GDsJ8!2_$(!MD_(f1+<;t%b$P`sI?cdYBxBJ4y5q9t1&fQ3q z;mKOA-*KTTSq6Uij-H<5&Gq#SA&}Z~geJp&rPu2{d+h74h}?WgG+M#f)JoKXsz@>l&18Ubu&T-(Jlg%G>HY()piIjN>zCQdR7$;2aGe|Z&JM)8C~gVR9BsPJ!7Bu98U&B)btXbToh7U7PTr9bd4qeH!5w~;E- zVQ^H>dkPXMm^B*YuC1-R6%76;6BFa|+pi%B1RqH2=1$#4IRcU@DSCo5$o8VmQJ@)E zV&K!qhz6g}cde`Ihy((Ca^u>#433G^t!XKco?S$Es7UrZ;49PEg}Hn*H#ZkLb?PVA zy?c>-az4B2?v0-r86D)!)I58DN`r)pde1-~a019J8X9FWUMT%8I}Pbx2Kl_SKL>Ic zq#3>iJ_6n=H;%^DdjLc$5yU_?fT#vi9ali=K^zeOH^LLogG5S!uN7-{1vqFjkm`mx zK+OMvutx7`FUYfc55gQ!U%LBbDadmm6~&K^1Bd?tI52D|Mmlyt00000NkvXXu0mjf D*`1?) literal 0 HcmV?d00001 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/microbot/questhelper/quest_icon_on.png b/runelite-client/src/main/resources/net/runelite/client/plugins/microbot/questhelper/quest_icon_on.png new file mode 100644 index 0000000000000000000000000000000000000000..33fe205b1a36864a51e5e37af8654b5623c5d392 GIT binary patch literal 897 zcmV-{1AhF8P)NklJuj4&RS07k$`~dtb6&WqOZ0Bu%tV(Mr}1LaO*D#-Xp9$&cP3t_ zlij%Jq9)VCi+Sf3cVRHWC3=C&2HH+wSh_MgPUWSg(Dpp$G=P=8@CW!LCwVS@&nM4$ z&htC`|3dlqjn`9glc>+9^_!;oCQ`u>1raIba&|Y62gUyHq~tbbEfqW-^|e^6wpowgR<4pg#V>krxNwe&;Rba~bTMFgzAx zN7QC#YnEsVgWt|G7fhX~R(+ z#94C73Tx#jfc?Nzo^{Z1lQ zxjXWK_PXZRj%uom2{`Q9=+L(39*D<}VTD3;7!a%%lG#}b*%>i2Xv z|H{$l(s)E;YHSiYEcgff$j?II-9pNlarOe~8n3$Jq1M*zm(QO4S{~nhKj$6k zc6p2Dx29MLON=vys5?}5R`q($ XaCA*HUkYAZ00000NkvXXu0mjf0MNaX literal 0 HcmV?d00001 From dc26d9c9315ff53068ffc8395011af04e3db14c5 Mon Sep 17 00:00:00 2001 From: Igor Date: Tue, 30 Sep 2025 17:21:37 +0200 Subject: [PATCH 23/38] chore(inventory): remove unused InventoryID import --- .../microbot/inventorysetups/ui/InventorySetupsPluginPanel.java | 1 - 1 file changed, 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java index 8e8c622ce70..bfac6f329e4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java @@ -50,7 +50,6 @@ import net.runelite.client.plugins.microbot.inventorysetups.serialization.InventorySetupPortable; import lombok.Getter; import lombok.Setter; -import net.runelite.api.InventoryID; import net.runelite.client.game.ItemManager; import net.runelite.client.ui.ColorScheme; import net.runelite.client.ui.PluginPanel; From f9456f963bee7e27f60bb7708f99c3512a2407ac Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Tue, 30 Sep 2025 09:42:03 -0600 Subject: [PATCH 24/38] Update Scripts to 2025-10-1 --- .../main/scripts/LayoutResizableStones.hash | 2 +- .../main/scripts/LayoutResizableStones.rs2asm | 68 ++++++++----------- 2 files changed, 29 insertions(+), 41 deletions(-) diff --git a/runelite-client/src/main/scripts/LayoutResizableStones.hash b/runelite-client/src/main/scripts/LayoutResizableStones.hash index 7e9026f733f..55154a18ba5 100644 --- a/runelite-client/src/main/scripts/LayoutResizableStones.hash +++ b/runelite-client/src/main/scripts/LayoutResizableStones.hash @@ -1 +1 @@ -27CB6A6C2D44270EB5134AD9DDF5A423DB08A62275DB231CCF45A241BA6E4E32 \ No newline at end of file +F447EDB4DB9B01E29C62C0F9242746DD97FD99315DFDB0D0C608B2482794FC82 \ No newline at end of file diff --git a/runelite-client/src/main/scripts/LayoutResizableStones.rs2asm b/runelite-client/src/main/scripts/LayoutResizableStones.rs2asm index 03264ea9922..511e46d16ac 100644 --- a/runelite-client/src/main/scripts/LayoutResizableStones.rs2asm +++ b/runelite-client/src/main/scripts/LayoutResizableStones.rs2asm @@ -13,10 +13,10 @@ iload 1 switch 1131: LABEL9 - 1130: LABEL107 - 1129: LABEL149 - 1745: LABEL169 - jump LABEL178 + 1130: LABEL103 + 1129: LABEL141 + 1745: LABEL161 + jump LABEL170 LABEL9: iconst 10747998 if_getwidth @@ -120,23 +120,17 @@ LABEL89: LABEL96: clientclock set_varc_int 384 - invoke 1445 - iconst 1 - if_icmpeq LABEL102 - jump LABEL106 -LABEL102: get_varbit 12986 invoke 633 iconst 10747926 if_sethide -LABEL106: - jump LABEL178 -LABEL107: + jump LABEL170 +LABEL103: get_varbit 4084 iconst 1 - if_icmpeq LABEL111 - jump LABEL119 -LABEL111: + if_icmpeq LABEL107 + jump LABEL115 +LABEL107: iconst 1178 iconst 73 iconst 73 @@ -144,13 +138,13 @@ LABEL111: iconst 10551326 enum 2122 - jump LABEL138 -LABEL119: + jump LABEL134 +LABEL115: get_varbit 13037 iconst 1 - if_icmpeq LABEL123 - jump LABEL131 -LABEL123: + if_icmpeq LABEL119 + jump LABEL127 +LABEL119: iconst 3513 iconst 73 iconst 73 @@ -158,8 +152,8 @@ LABEL123: iconst 10551326 enum 2122 - jump LABEL138 -LABEL131: + jump LABEL134 +LABEL127: iconst 2154 iconst 73 iconst 73 @@ -167,26 +161,20 @@ LABEL131: iconst 10551326 enum 2122 -LABEL138: +LABEL134: clientclock set_varc_int 384 - invoke 1445 - iconst 1 - if_icmpeq LABEL144 - jump LABEL148 -LABEL144: get_varbit 12986 invoke 633 iconst 10551318 if_sethide -LABEL148: - jump LABEL178 -LABEL149: + jump LABEL170 +LABEL141: invoke 3297 iconst 1 - if_icmpeq LABEL153 - jump LABEL161 -LABEL153: + if_icmpeq LABEL145 + jump LABEL153 +LABEL145: iconst 2422 iconst 73 iconst 73 @@ -194,8 +182,8 @@ LABEL153: iconst 10551326 enum 2122 - jump LABEL168 -LABEL161: + jump LABEL160 +LABEL153: iconst 1200 iconst 73 iconst 73 @@ -203,9 +191,9 @@ LABEL161: iconst 10551326 enum 2122 -LABEL168: - jump LABEL178 -LABEL169: +LABEL160: + jump LABEL170 +LABEL161: invoke 2581 get_varbit 6254 invoke 633 @@ -215,5 +203,5 @@ LABEL169: pop_int clientclock set_varc_int 384 -LABEL178: +LABEL170: return From 017c0ce478fc6ac693b9745b45ca5bc4880486bb Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Tue, 30 Sep 2025 09:42:03 -0600 Subject: [PATCH 25/38] Update Widget IDs to 2025-10-1 --- runelite-api/src/main/interfaces/interfaces.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/runelite-api/src/main/interfaces/interfaces.toml b/runelite-api/src/main/interfaces/interfaces.toml index 67acd1de5a6..7772a723cda 100644 --- a/runelite-api/src/main/interfaces/interfaces.toml +++ b/runelite-api/src/main/interfaces/interfaces.toml @@ -342,10 +342,10 @@ teleport_button=26 [fairy_ring_panel] id=381 header=2 -list=7 -favorites=8 -separator=9 -scrollbar=152 +list=8 +favorites=9 +separator=10 +scrollbar=166 [fixed_viewport] id=548 @@ -563,8 +563,8 @@ run_orb_text=28 spec_orb=33 worldmap_orb=48 wiki_banner_parent=49 -wiki_banner=50 -worldmap_options=53 +wiki_banner=51 +worldmap_options=54 [mlm] id=382 From 91c6595cb4e1b948706d6b391bb94d87dca5c5d2 Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Tue, 30 Sep 2025 09:42:03 -0600 Subject: [PATCH 26/38] Update Legacy ID classes to 2025-10-1 --- .../src/main/java/net/runelite/api/NpcID.java | 11 +++++++---- .../src/main/java/net/runelite/api/NullNpcID.java | 3 +++ .../src/main/java/net/runelite/api/NullObjectID.java | 1 + .../src/main/java/net/runelite/api/ObjectID.java | 1 + 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/NpcID.java b/runelite-api/src/main/java/net/runelite/api/NpcID.java index d80ae5be77d..4f97dc538f6 100644 --- a/runelite-api/src/main/java/net/runelite/api/NpcID.java +++ b/runelite-api/src/main/java/net/runelite/api/NpcID.java @@ -1366,7 +1366,6 @@ public final class NpcID public static final int SMALL_ZOMBIE_MONKEY = 1467; public static final int LARGE_ZOMBIE_MONKEY = 1468; public static final int MONKEY_1469 = 1469; - public static final int RANTZ = 1470; public static final int FYCIE = 1471; public static final int BUGS = 1472; public static final int SWAMP_TOAD = 1473; @@ -4513,7 +4512,7 @@ public final class NpcID public static final int GOBLIN_COOK_4852 = 4852; public static final int SKRACH_UGLOGWEE_4853 = 4853; public static final int SKRACH_UGLOGWEE_4854 = 4854; - public static final int RANTZ_4855 = 4855; + public static final int RANTZ = 4855; public static final int RANTZ_4856 = 4856; public static final int RANTZ_4857 = 4857; public static final int OGRE_BOAT = 4858; @@ -7444,7 +7443,6 @@ public final class NpcID public static final int NYLOCAS_MATOMENOS = 8366; public static final int BLOOD_SPAWN = 8367; public static final int ABIGAILA = 8368; - public static final int VERZIK_VITUR_8369 = 8369; public static final int VERZIK_VITUR_8370 = 8370; public static final int VERZIK_VITUR_8371 = 8371; public static final int VERZIK_VITUR_8372 = 8372; @@ -9088,7 +9086,6 @@ public final class NpcID public static final int NYLOCAS_HAGIOS_10843 = 10843; public static final int NYLOCAS_ATHANATOS_10844 = 10844; public static final int NYLOCAS_MATOMENOS_10845 = 10845; - public static final int VERZIK_VITUR_10847 = 10847; public static final int VERZIK_VITUR_10848 = 10848; public static final int VERZIK_VITUR_10849 = 10849; public static final int VERZIK_VITUR_10850 = 10850; @@ -12352,5 +12349,11 @@ public final class NpcID public static final int HARVESTER = 14790; public static final int HARVESTER_14791 = 14791; public static final int WIZGUARD = 14792; + public static final int RANTZ_14793 = 14793; + public static final int RANTZ_14794 = 14794; + public static final int VERZIK_VITUR_14795 = 14795; + public static final int VERZIK_VITUR_14796 = 14796; + public static final int VERZIK_VITUR_14797 = 14797; + public static final int VERZIK_VITUR_14798 = 14798; /* This file is automatically generated. Do not edit. */ } diff --git a/runelite-api/src/main/java/net/runelite/api/NullNpcID.java b/runelite-api/src/main/java/net/runelite/api/NullNpcID.java index 50f06e47510..f92255b91de 100644 --- a/runelite-api/src/main/java/net/runelite/api/NullNpcID.java +++ b/runelite-api/src/main/java/net/runelite/api/NullNpcID.java @@ -113,6 +113,7 @@ public final class NullNpcID public static final int NULL_1457 = 1457; public static final int NULL_1458 = 1458; public static final int NULL_1459 = 1459; + public static final int NULL_1470 = 1470; public static final int NULL_1491 = 1491; public static final int NULL_1492 = 1492; public static final int NULL_1493 = 1493; @@ -918,6 +919,7 @@ public final class NullNpcID public static final int NULL_8319 = 8319; public static final int NULL_8325 = 8325; public static final int NULL_8358 = 8358; + public static final int NULL_8369 = 8369; public static final int NULL_8380 = 8380; public static final int NULL_8386 = 8386; public static final int NULL_8389 = 8389; @@ -1751,6 +1753,7 @@ public final class NullNpcID public static final int NULL_10790 = 10790; public static final int NULL_10811 = 10811; public static final int NULL_10846 = 10846; + public static final int NULL_10847 = 10847; public static final int NULL_10863 = 10863; public static final int NULL_10866 = 10866; public static final int NULL_10869 = 10869; diff --git a/runelite-api/src/main/java/net/runelite/api/NullObjectID.java b/runelite-api/src/main/java/net/runelite/api/NullObjectID.java index aafa103c2aa..b53f172b3d3 100644 --- a/runelite-api/src/main/java/net/runelite/api/NullObjectID.java +++ b/runelite-api/src/main/java/net/runelite/api/NullObjectID.java @@ -29852,5 +29852,6 @@ public final class NullObjectID public static final int NULL_57718 = 57718; public static final int NULL_57720 = 57720; public static final int NULL_57721 = 57721; + public static final int NULL_57722 = 57722; /* This file is automatically generated. Do not edit. */ } diff --git a/runelite-api/src/main/java/net/runelite/api/ObjectID.java b/runelite-api/src/main/java/net/runelite/api/ObjectID.java index 7b803662e5b..719c58e856b 100644 --- a/runelite-api/src/main/java/net/runelite/api/ObjectID.java +++ b/runelite-api/src/main/java/net/runelite/api/ObjectID.java @@ -27863,5 +27863,6 @@ public final class ObjectID public static final int BRIDGE_57713 = 57713; public static final int BRIDGE_57714 = 57714; public static final int BRIDGE_SUPPORT = 57719; + public static final int ENERGY_BARRIER_57723 = 57723; /* This file is automatically generated. Do not edit. */ } From 80cac818f1f5695bfbaf76181fe6fecb0ae05790 Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Tue, 30 Sep 2025 09:42:11 -0600 Subject: [PATCH 27/38] Update GameVals to 2025-10-1 --- .../net/runelite/api/gameval/InterfaceID.java | 676 ++++++++++-------- .../java/net/runelite/api/gameval/NpcID.java | 42 +- .../net/runelite/api/gameval/ObjectID1.java | 6 + .../net/runelite/api/gameval/VarPlayerID.java | 19 + .../net/runelite/api/gameval/VarbitID.java | 72 ++ 5 files changed, 502 insertions(+), 313 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.java b/runelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.java index 198a433a8af..4e3bed8c9c7 100644 --- a/runelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.java +++ b/runelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.java @@ -1252,6 +1252,7 @@ public static final class Bankmain public static final int DEPOSITINV_TOGGLE = 0x000c_003e; public static final int DEPOSITWORN_TOGGLE = 0x000c_003f; public static final int DEPOSITPOTION_TOGGLE = 0x000c_0040; + public static final int CHUGGINGBARREL_TOGGLE = 0x000c_0041; public static final int RELEASE_PLACEHOLDERS = 0x000c_0042; public static final int LOCKS = 0x000c_0043; public static final int BANK_FILLERS = 0x000c_0044; @@ -1408,48 +1409,76 @@ public static final class Bankside public static final int RUNEPOUCH_CONTENTS = 0x000f_0019; public static final int RUNEPOUCH_TOP = 0x000f_001a; public static final int RUNEPOUCH_CONTENTS_TEXT1 = 0x000f_001b; - public static final int RUNEPOUCH_LOADOUT_A = 0x000f_001c; - public static final int RUNEPOUCH_LOAD_A = 0x000f_001d; - public static final int RUNEPOUCH_LOADOUT_B = 0x000f_001e; - public static final int RUNEPOUCH_LOAD_B = 0x000f_001f; - public static final int RUNEPOUCH_LOADOUT_C = 0x000f_0020; - public static final int RUNEPOUCH_LOAD_C = 0x000f_0021; - public static final int RUNEPOUCH_LOADOUT_D = 0x000f_0022; - public static final int RUNEPOUCH_LOAD_D = 0x000f_0023; + public static final int RUNEPOUCH_LOAD_A = 0x000f_001c; + public static final int RUNEPOUCH_LOAD_B = 0x000f_001d; + public static final int RUNEPOUCH_LOAD_C = 0x000f_001e; + public static final int RUNEPOUCH_LOAD_D = 0x000f_001f; + public static final int RUNEPOUCH_LOADOUT_SCROLLBAR = 0x000f_0020; + public static final int RUNEPOUCH_LOADOUT_CONTAINER = 0x000f_0021; + public static final int RUNEPOUCH_LOADOUT_A = 0x000f_0022; + public static final int RUNEPOUCH_NAME_A = 0x000f_0023; public static final int RUNEPOUCH_SELECT_CONTAINER = 0x000f_0024; - public static final int RUNEPOUCH_SELECT_CONTAINER_GRAPHIC0 = 0x000f_0025; - public static final int RUNEPOUCH_SELECT_LIST = 0x000f_0026; - public static final int RUNEPOUCH_SELECT_SCROLLBAR = 0x000f_0027; - public static final int BANKSIDE_HIGHLIGHT = 0x000f_0028; - public static final int PREPOT_DEVICE_CONTAINER = 0x000f_0029; - public static final int PREPOT_DEVICE_BANKALL = 0x000f_002a; - public static final int PREPOT_DEVICE_FILL = 0x000f_002b; - public static final int PREPOT_DEVICE_CONTAINER_TEXT2 = 0x000f_002c; - public static final int PREPOT_DEVICE_DISMISS = 0x000f_002d; - public static final int PREPOT_DEVICE_FRAME = 0x000f_002e; - public static final int PREPOT_DEVICE_FRAME_GRAPHIC0 = 0x000f_002f; - public static final int PREPOT_DEVICE_CONTENTS_CONTAINER = 0x000f_0030; - public static final int PREPOT_DEVICE_CONTENTS_BG = 0x000f_0031; - public static final int PREPOT_DEVICE_CONTENTS = 0x000f_0032; - public static final int PREPOT_DEVICE_CONTENTS_CONTAINER_TEXT2 = 0x000f_0033; - public static final int PREPOT_DEVICE_LOADOUTS_SCROLLBAR = 0x000f_0034; - public static final int PREPOT_DEVICE_LOADOUTS = 0x000f_0035; - public static final int PREPOT_DEVICE_LOADOUT_0 = 0x000f_0036; - public static final int PREPOT_DEVICE_LOADOUT_1 = 0x000f_0037; - public static final int PREPOT_DEVICE_LOADOUT_2 = 0x000f_0038; - public static final int PREPOT_DEVICE_LOADOUT_3 = 0x000f_0039; - public static final int PREPOT_DEVICE_LOADOUT_1_LOAD = 0x000f_003a; - public static final int PREPOT_DEVICE_LOADOUT_1_SAVE = 0x000f_003b; - public static final int PREPOT_DEVICE_LOADOUT_1_CONTENTS = 0x000f_003c; - public static final int PREPOT_DEVICE_LOADOUT_2_LOAD = 0x000f_003d; - public static final int PREPOT_DEVICE_LOADOUT_2_SAVE = 0x000f_003e; - public static final int PREPOT_DEVICE_LOADOUT_2_CONTENTS = 0x000f_003f; - public static final int PREPOT_DEVICE_LOADOUT_3_LOAD = 0x000f_0040; - public static final int PREPOT_DEVICE_LOADOUT_3_SAVE = 0x000f_0041; - public static final int PREPOT_DEVICE_LOADOUT_3_CONTENTS = 0x000f_0042; - public static final int PREPOT_DEVICE_LOADOUT_0_LOAD = 0x000f_0043; - public static final int PREPOT_DEVICE_LOADOUT_0_SAVE = 0x000f_0044; - public static final int PREPOT_DEVICE_LOADOUT_0_CONTENTS = 0x000f_0045; + public static final int RUNEPOUCH_NAME_SELECT_CONTAINER = 0x000f_0025; + public static final int RUNEPOUCH_LOADOUT_B = 0x000f_0026; + public static final int RUNEPOUCH_NAME_B = 0x000f_0027; + public static final int RUNEPOUCH_SELECT_CONTAINER_GRAPHIC0 = 0x000f_0028; + public static final int RUNEPOUCH_LOADOUT_C = 0x000f_0029; + public static final int RUNEPOUCH_NAME_C = 0x000f_002a; + public static final int RUNEPOUCH_SELECT_LIST = 0x000f_002b; + public static final int RUNEPOUCH_LOADOUT_D = 0x000f_002c; + public static final int RUNEPOUCH_NAME_D = 0x000f_002d; + public static final int RUNEPOUCH_LOADOUT_E = 0x000f_002e; + public static final int RUNEPOUCH_NAME_E = 0x000f_002f; + public static final int RUNEPOUCH_LOADOUT_F = 0x000f_0030; + public static final int RUNEPOUCH_NAME_F = 0x000f_0031; + public static final int RUNEPOUCH_LOADOUT_G = 0x000f_0032; + public static final int RUNEPOUCH_NAME_G = 0x000f_0033; + public static final int RUNEPOUCH_LOADOUT_H = 0x000f_0034; + public static final int RUNEPOUCH_NAME_H = 0x000f_0035; + public static final int RUNEPOUCH_LOADOUT_I = 0x000f_0036; + public static final int RUNEPOUCH_NAME_I = 0x000f_0037; + public static final int RUNEPOUCH_LOADOUT_J = 0x000f_0038; + public static final int RUNEPOUCH_NAME_J = 0x000f_0039; + public static final int RUNEPOUCH_SELECT_SCROLLBAR = 0x000f_003a; + public static final int BANKSIDE_HIGHLIGHT = 0x000f_003b; + public static final int PREPOT_DEVICE_CONTAINER = 0x000f_003c; + public static final int PREPOT_DEVICE_BANKALL = 0x000f_003d; + public static final int PREPOT_DEVICE_FILL = 0x000f_003e; + public static final int PREPOT_DEVICE_CONTAINER_TEXT2 = 0x000f_003f; + public static final int PREPOT_DEVICE_DISMISS = 0x000f_0040; + public static final int PREPOT_DEVICE_FRAME = 0x000f_0041; + public static final int PREPOT_DEVICE_FRAME_GRAPHIC0 = 0x000f_0042; + public static final int PREPOT_DEVICE_CONTENTS_CONTAINER = 0x000f_0043; + public static final int PREPOT_DEVICE_CONTENTS_BG = 0x000f_0044; + public static final int PREPOT_DEVICE_CONTENTS = 0x000f_0045; + public static final int PREPOT_DEVICE_CONTENTS_CONTAINER_TEXT2 = 0x000f_0046; + public static final int PREPOT_DEVICE_LOADOUTS_SCROLLBAR = 0x000f_0047; + public static final int PREPOT_DEVICE_LOADOUTS = 0x000f_0048; + public static final int PREPOT_DEVICE_LOADOUT_0 = 0x000f_0049; + public static final int PREPOT_DEVICE_LOADOUT_1 = 0x000f_004a; + public static final int PREPOT_DEVICE_LOADOUT_2 = 0x000f_004b; + public static final int PREPOT_DEVICE_LOADOUT_3 = 0x000f_004c; + public static final int PREPOT_DEVICE_LOADOUT_1_LOAD = 0x000f_004d; + public static final int PREPOT_DEVICE_LOADOUT_1_SAVE = 0x000f_004e; + public static final int PREPOT_DEVICE_LOADOUT_1_CONTENTS = 0x000f_004f; + public static final int PREPOT_DEVICE_LOADOUT_2_LOAD = 0x000f_0050; + public static final int PREPOT_DEVICE_LOADOUT_2_SAVE = 0x000f_0051; + public static final int PREPOT_DEVICE_LOADOUT_2_CONTENTS = 0x000f_0052; + public static final int PREPOT_DEVICE_LOADOUT_3_LOAD = 0x000f_0053; + public static final int PREPOT_DEVICE_LOADOUT_3_SAVE = 0x000f_0054; + public static final int PREPOT_DEVICE_LOADOUT_3_CONTENTS = 0x000f_0055; + public static final int PREPOT_DEVICE_LOADOUT_0_LOAD = 0x000f_0056; + public static final int PREPOT_DEVICE_LOADOUT_0_SAVE = 0x000f_0057; + public static final int PREPOT_DEVICE_LOADOUT_0_CONTENTS = 0x000f_0058; + public static final int RUNEPOUCH_LOAD_E = 0x000f_0059; + public static final int RUNEPOUCH_LOAD_F = 0x000f_005a; + public static final int RUNEPOUCH_LOAD_G = 0x000f_005b; + public static final int RUNEPOUCH_LOAD_H = 0x000f_005c; + public static final int RUNEPOUCH_LOAD_I = 0x000f_005d; + public static final int RUNEPOUCH_LOAD_J = 0x000f_005e; + public static final int RUNEPOUCH_NAME_SELECT_CONTAINER_GRAPHIC0 = 0x000f_005f; + public static final int RUNEPOUCH_NAME_SELECT_LIST = 0x000f_0060; + public static final int RUNEPOUCH_NAME_SELECT_SCROLLBAR = 0x000f_0061; } public static final class Oculus @@ -3072,7 +3101,7 @@ public static final class CanoeStationsMap public static final int CHAMPIONS_CANOE_STATION_TEXT = 0x0039_001a; public static final int BARBARIAN_VILLAGE_CANOE_STATION = 0x0039_001b; public static final int EDGEVILLE_CANOE_STATION_TEXT = 0x0039_001c; - public static final int WILDERNESS_POND_TEXT_ = 0x0039_001d; + public static final int WILDERNESS_POND_TEXT = 0x0039_001d; public static final int CANOEING_DANGER_WILDERNESS_SKUL = 0x0039_001e; public static final int CANOEING_WILDERNESS_LAYER = 0x0039_001f; public static final int CANOEING_LUMBRIDGE_BUTTON = 0x0039_0020; @@ -3674,13 +3703,15 @@ public static final class Grouping public static final int DROPDOWN_SCROLLBAR = 0x004c_0017; public static final int ARROW = 0x004c_0018; public static final int UNIVERSE_TEXT6 = 0x004c_0019; - public static final int SUGGESTEDWORLD = 0x004c_001a; - public static final int JOINLEAVE = 0x004c_001b; - public static final int JOINLEAVE_GRAPHIC0 = 0x004c_001c; - public static final int JOINLEAVE_TEXT = 0x004c_001d; - public static final int TELEPORT = 0x004c_001e; - public static final int TELEPORT_GRAPHIC0 = 0x004c_001f; - public static final int TELEPORT_TEXT1 = 0x004c_0020; + public static final int HOP_BUTTON = 0x004c_001a; + public static final int HOP_BUTTON_BACKGROUND = 0x004c_001b; + public static final int SUGGESTEDWORLD = 0x004c_001c; + public static final int JOINLEAVE = 0x004c_001d; + public static final int JOINLEAVE_GRAPHIC0 = 0x004c_001e; + public static final int JOINLEAVE_TEXT = 0x004c_001f; + public static final int TELEPORT = 0x004c_0020; + public static final int TELEPORT_GRAPHIC0 = 0x004c_0021; + public static final int TELEPORT_TEXT1 = 0x004c_0022; } public static final class Quickprayer @@ -4225,7 +4256,7 @@ public static final class ChatchannelSetup public static final int UNIVERSE_RECT0 = 0x005e_0001; public static final int CONTAINER = 0x005e_0002; public static final int FRAME = 0x005e_0003; - public static final int __ = 0x005e_0004; + public static final int CONTAINER_GRAPHIC1 = 0x005e_0004; public static final int CONTAINER_GRAPHIC2 = 0x005e_0005; public static final int CONTAINER_GRAPHIC3 = 0x005e_0006; public static final int LEFT = 0x005e_0007; @@ -6538,10 +6569,12 @@ public static final class Orbs public static final int ORB_CONTENTRECOM = 0x00a0_002f; public static final int ORB_WORLDMAP = 0x00a0_0030; public static final int WIKI = 0x00a0_0031; - public static final int WIKI_ICON = 0x00a0_0032; - public static final int WIKI_ICON_GRAPHIC = 0x00a0_0033; - public static final int WORLDMAP_BACKING = 0x00a0_0034; - public static final int WORLDMAP = 0x00a0_0035; + public static final int TOOLTIP = 0x00a0_0032; + public static final int WIKI_ICON = 0x00a0_0033; + public static final int WIKI_ICON_GRAPHIC = 0x00a0_0034; + public static final int WORLDMAP_BACKING = 0x00a0_0035; + public static final int WORLDMAP = 0x00a0_0036; + public static final int WORLDMAP_TOOLTIP = 0x00a0_0037; } public static final class ToplevelOsrsStretch @@ -8198,7 +8231,7 @@ public static final class MagictrainingGrave public static final int MAGICTRAIN_GRAVE_BONES3 = 0x00c4_000b; public static final int MAGICTRAIN_GRAVE_BONES4 = 0x00c4_000c; public static final int MAGICTRAIN_BONE_TYPE_4 = 0x00c4_000d; - public static final int _MAGICTRAIN_BONE_TYPE_3 = 0x00c4_000e; + public static final int MAGICTRAIN_BONE_TYPE_3 = 0x00c4_000e; public static final int MAGICTRAIN_BONE_TYPE_2 = 0x00c4_000f; public static final int MAGICTRAIN_BONE_TYPE_1 = 0x00c4_0010; } @@ -9944,18 +9977,28 @@ public static final class Skillmulti public static final int OTHER = 0x010e_000a; public static final int X = 0x010e_000b; public static final int ALL = 0x010e_000c; - public static final int BOTTOM = 0x010e_000d; - public static final int A = 0x010e_000e; - public static final int B = 0x010e_000f; - public static final int C = 0x010e_0010; - public static final int D = 0x010e_0011; - public static final int E = 0x010e_0012; - public static final int F = 0x010e_0013; - public static final int G = 0x010e_0014; - public static final int H = 0x010e_0015; - public static final int I = 0x010e_0016; - public static final int J = 0x010e_0017; - public static final int TOOLTIP = 0x010e_0018; + public static final int BOTTOM_HOLDER = 0x010e_000d; + public static final int BOTTOM = 0x010e_000e; + public static final int A = 0x010e_000f; + public static final int B = 0x010e_0010; + public static final int C = 0x010e_0011; + public static final int D = 0x010e_0012; + public static final int E = 0x010e_0013; + public static final int F = 0x010e_0014; + public static final int G = 0x010e_0015; + public static final int H = 0x010e_0016; + public static final int I = 0x010e_0017; + public static final int J = 0x010e_0018; + public static final int K = 0x010e_0019; + public static final int L = 0x010e_001a; + public static final int M = 0x010e_001b; + public static final int N = 0x010e_001c; + public static final int O = 0x010e_001d; + public static final int P = 0x010e_001e; + public static final int Q = 0x010e_001f; + public static final int R = 0x010e_0020; + public static final int SCROLLBAR = 0x010e_0021; + public static final int TOOLTIP = 0x010e_0022; } public static final class RaidsStoragePrivate @@ -11109,7 +11152,7 @@ public static final class CwsWarning25 public static final int ROOT_GRAPHIC8 = 0x013f_0008; public static final int ROOT_GRAPHIC9 = 0x013f_0009; public static final int ROOT_GRAPHIC10 = 0x013f_000a; - public static final int __ = 0x013f_000b; + public static final int ROOT_GRAPHIC11 = 0x013f_000b; public static final int CWS_CLOSE = 0x013f_000c; public static final int WARNING_TEXT = 0x013f_000d; public static final int CWS_TEST_WARNING = 0x013f_000e; @@ -11620,7 +11663,7 @@ public static final class CwsWarning11 public static final int ROOT_GRAPHIC8 = 0x0147_0008; public static final int ROOT_GRAPHIC9 = 0x0147_0009; public static final int ROOT_GRAPHIC10 = 0x0147_000a; - public static final int __ = 0x0147_000b; + public static final int ROOT_GRAPHIC11 = 0x0147_000b; public static final int CWS_CLOSE = 0x0147_000c; public static final int WARNING_TEXT = 0x0147_000d; public static final int CWS_TEST_WARNING = 0x0147_000e; @@ -11803,7 +11846,7 @@ public static final class Tradeconfirm public static final int UNIVERSE_GRAPHIC9 = 0x014e_000c; public static final int TRADE2ACCEPT = 0x014e_000d; public static final int TRADE2DECLINE = 0x014e_000e; - public static final int __ = 0x014e_000f; + public static final int UNIVERSE_GRAPHIC12 = 0x014e_000f; public static final int UNIVERSE_GRAPHIC13 = 0x014e_0010; public static final int UNIVERSE_GRAPHIC14 = 0x014e_0011; public static final int UNIVERSE_GRAPHIC15 = 0x014e_0012; @@ -14537,152 +14580,171 @@ public static final class FairyringsLog public static final int SORT_1 = 0x017d_0004; public static final int SORT_2 = 0x017d_0005; public static final int TITLEBOX_TEXT1 = 0x017d_0006; - public static final int CONTENTS = 0x017d_0007; - public static final int FAVES = 0x017d_0008; - public static final int DIVIDER = 0x017d_0009; - public static final int FRAME = 0x017d_000a; - public static final int AIP = 0x017d_000b; - public static final int AIP_FAVE = 0x017d_000c; - public static final int AIQ = 0x017d_000d; - public static final int AIQ_FAVE = 0x017d_000e; - public static final int AIR = 0x017d_000f; - public static final int AIR_FAVE = 0x017d_0010; - public static final int AIS = 0x017d_0011; - public static final int AIS_FAVE = 0x017d_0012; - public static final int AJP = 0x017d_0013; - public static final int AJP_FAVE = 0x017d_0014; - public static final int AJQ = 0x017d_0015; - public static final int AJQ_FAVE = 0x017d_0016; - public static final int AJR = 0x017d_0017; - public static final int AJR_FAVE = 0x017d_0018; - public static final int AJS = 0x017d_0019; - public static final int AJS_FAVE = 0x017d_001a; - public static final int AKP = 0x017d_001b; - public static final int AKP_FAVE = 0x017d_001c; - public static final int AKQ = 0x017d_001d; - public static final int AKQ_FAVE = 0x017d_001e; - public static final int AKR = 0x017d_001f; - public static final int AKR_FAVE = 0x017d_0020; - public static final int AKS = 0x017d_0021; - public static final int AKS_FAVE = 0x017d_0022; - public static final int ALP = 0x017d_0023; - public static final int ALP_FAVE = 0x017d_0024; - public static final int ALQ = 0x017d_0025; - public static final int ALQ_FAVE = 0x017d_0026; - public static final int ALR = 0x017d_0027; - public static final int ALR_FAVE = 0x017d_0028; - public static final int ALS = 0x017d_0029; - public static final int ALS_FAVE = 0x017d_002a; - public static final int BIP = 0x017d_002b; - public static final int BIP_FAVE = 0x017d_002c; - public static final int BIQ = 0x017d_002d; - public static final int BIQ_FAVE = 0x017d_002e; - public static final int BIR = 0x017d_002f; - public static final int BIR_FAVE = 0x017d_0030; - public static final int BIS = 0x017d_0031; - public static final int BIS_FAVE = 0x017d_0032; - public static final int BJP = 0x017d_0033; - public static final int BJP_FAVE = 0x017d_0034; - public static final int BJQ = 0x017d_0035; - public static final int BJQ_FAVE = 0x017d_0036; - public static final int BJR = 0x017d_0037; - public static final int BJR_FAVE = 0x017d_0038; - public static final int BJS = 0x017d_0039; - public static final int BJS_FAVE = 0x017d_003a; - public static final int BKP = 0x017d_003b; - public static final int BKP_FAVE = 0x017d_003c; - public static final int BKQ = 0x017d_003d; - public static final int BKQ_FAVE = 0x017d_003e; - public static final int BKR = 0x017d_003f; - public static final int BKR_FAVE = 0x017d_0040; - public static final int BKS = 0x017d_0041; - public static final int BKS_FAVE = 0x017d_0042; - public static final int BLP = 0x017d_0043; - public static final int BLP_FAVE = 0x017d_0044; - public static final int BLQ = 0x017d_0045; - public static final int BLQ_FAVE = 0x017d_0046; - public static final int BLR = 0x017d_0047; - public static final int BLR_FAVE = 0x017d_0048; - public static final int BLS = 0x017d_0049; - public static final int BLS_FAVE = 0x017d_004a; - public static final int CIP = 0x017d_004b; - public static final int CIP_FAVE = 0x017d_004c; - public static final int CIQ = 0x017d_004d; - public static final int CIQ_FAVE = 0x017d_004e; - public static final int CIR = 0x017d_004f; - public static final int CIR_FAVE = 0x017d_0050; - public static final int CIS = 0x017d_0051; - public static final int CIS_FAVE = 0x017d_0052; - public static final int CJP = 0x017d_0053; - public static final int CJP_FAVE = 0x017d_0054; - public static final int CJQ = 0x017d_0055; - public static final int CJQ_FAVE = 0x017d_0056; - public static final int CJR = 0x017d_0057; - public static final int CJR_FAVE = 0x017d_0058; - public static final int CJS = 0x017d_0059; - public static final int CJS_FAVE = 0x017d_005a; - public static final int CKP = 0x017d_005b; - public static final int CKP_FAVE = 0x017d_005c; - public static final int CKQ = 0x017d_005d; - public static final int CKQ_FAVE = 0x017d_005e; - public static final int CKR = 0x017d_005f; - public static final int CKR_FAVE = 0x017d_0060; - public static final int CKS = 0x017d_0061; - public static final int CKS_FAVE = 0x017d_0062; - public static final int CLP = 0x017d_0063; - public static final int CLP_FAVE = 0x017d_0064; - public static final int CLQ = 0x017d_0065; - public static final int CLQ_FAVE = 0x017d_0066; - public static final int CLR = 0x017d_0067; - public static final int CLR_FAVE = 0x017d_0068; - public static final int CLS = 0x017d_0069; - public static final int CLS_FAVE = 0x017d_006a; - public static final int DIP = 0x017d_006b; - public static final int DIP_FAVE = 0x017d_006c; - public static final int DIQ = 0x017d_006d; - public static final int DIQ_FAVE = 0x017d_006e; - public static final int DIR = 0x017d_006f; - public static final int DIR_FAVE = 0x017d_0070; - public static final int DIS = 0x017d_0071; - public static final int DIS_FAVE = 0x017d_0072; - public static final int DJP = 0x017d_0073; - public static final int DJP_FAVE = 0x017d_0074; - public static final int DJQ = 0x017d_0075; - public static final int DJQ_FAVE = 0x017d_0076; - public static final int DJR = 0x017d_0077; - public static final int DJR_FAVE = 0x017d_0078; - public static final int DJS = 0x017d_0079; - public static final int DJS_FAVE = 0x017d_007a; - public static final int DKP = 0x017d_007b; - public static final int DKP_FAVE = 0x017d_007c; - public static final int DKQ = 0x017d_007d; - public static final int DKQ_FAVE = 0x017d_007e; - public static final int DKR = 0x017d_007f; - public static final int DKR_FAVE = 0x017d_0080; - public static final int DKS = 0x017d_0081; - public static final int DKS_FAVE = 0x017d_0082; - public static final int DLP = 0x017d_0083; - public static final int DLP_FAVE = 0x017d_0084; - public static final int DLQ = 0x017d_0085; - public static final int DLQ_FAVE = 0x017d_0086; - public static final int DLR = 0x017d_0087; - public static final int DLR_FAVE = 0x017d_0088; - public static final int DLS = 0x017d_0089; - public static final int DLS_FAVE = 0x017d_008a; - public static final int HIDEOUT = 0x017d_008b; - public static final int FAVE_1 = 0x017d_008c; - public static final int FAVE_2 = 0x017d_008d; - public static final int FAVE_3 = 0x017d_008e; - public static final int FAVE_4 = 0x017d_008f; - public static final int FAVE_CODE_1 = 0x017d_0090; - public static final int FAVE_CODE_2 = 0x017d_0091; - public static final int FAVE_CODE_3 = 0x017d_0092; - public static final int FAVE_CODE_4 = 0x017d_0093; - public static final int FAVE_ICON_1 = 0x017d_0094; - public static final int FAVE_ICON_2 = 0x017d_0095; - public static final int FAVE_ICON_3 = 0x017d_0096; - public static final int FAVE_ICON_4 = 0x017d_0097; - public static final int SCROLLBAR = 0x017d_0098; + public static final int TITLEBOX_GRAPHIC2 = 0x017d_0007; + public static final int CONTENTS = 0x017d_0008; + public static final int FAVES = 0x017d_0009; + public static final int DIVIDER = 0x017d_000a; + public static final int FRAME = 0x017d_000b; + public static final int AIP = 0x017d_000c; + public static final int AIP_FAVE = 0x017d_000d; + public static final int AIQ = 0x017d_000e; + public static final int AIQ_FAVE = 0x017d_000f; + public static final int AIR = 0x017d_0010; + public static final int AIR_FAVE = 0x017d_0011; + public static final int AIS = 0x017d_0012; + public static final int AIS_FAVE = 0x017d_0013; + public static final int AJP = 0x017d_0014; + public static final int AJP_FAVE = 0x017d_0015; + public static final int AJQ = 0x017d_0016; + public static final int AJQ_FAVE = 0x017d_0017; + public static final int AJR = 0x017d_0018; + public static final int AJR_FAVE = 0x017d_0019; + public static final int AJS = 0x017d_001a; + public static final int AJS_FAVE = 0x017d_001b; + public static final int AKP = 0x017d_001c; + public static final int AKP_FAVE = 0x017d_001d; + public static final int AKQ = 0x017d_001e; + public static final int AKQ_FAVE = 0x017d_001f; + public static final int AKR = 0x017d_0020; + public static final int AKR_FAVE = 0x017d_0021; + public static final int AKS = 0x017d_0022; + public static final int AKS_FAVE = 0x017d_0023; + public static final int ALP = 0x017d_0024; + public static final int ALP_FAVE = 0x017d_0025; + public static final int ALQ = 0x017d_0026; + public static final int ALQ_FAVE = 0x017d_0027; + public static final int ALR = 0x017d_0028; + public static final int ALR_FAVE = 0x017d_0029; + public static final int ALS = 0x017d_002a; + public static final int ALS_FAVE = 0x017d_002b; + public static final int BIP = 0x017d_002c; + public static final int BIP_FAVE = 0x017d_002d; + public static final int BIQ = 0x017d_002e; + public static final int BIQ_FAVE = 0x017d_002f; + public static final int BIR = 0x017d_0030; + public static final int BIR_FAVE = 0x017d_0031; + public static final int BIS = 0x017d_0032; + public static final int BIS_FAVE = 0x017d_0033; + public static final int BJP = 0x017d_0034; + public static final int BJP_FAVE = 0x017d_0035; + public static final int BJQ = 0x017d_0036; + public static final int BJQ_FAVE = 0x017d_0037; + public static final int BJR = 0x017d_0038; + public static final int BJR_FAVE = 0x017d_0039; + public static final int BJS = 0x017d_003a; + public static final int BJS_FAVE = 0x017d_003b; + public static final int BKP = 0x017d_003c; + public static final int BKP_FAVE = 0x017d_003d; + public static final int BKQ = 0x017d_003e; + public static final int BKQ_FAVE = 0x017d_003f; + public static final int BKR = 0x017d_0040; + public static final int BKR_FAVE = 0x017d_0041; + public static final int BKS = 0x017d_0042; + public static final int BKS_FAVE = 0x017d_0043; + public static final int BLP = 0x017d_0044; + public static final int BLP_FAVE = 0x017d_0045; + public static final int BLQ = 0x017d_0046; + public static final int BLQ_FAVE = 0x017d_0047; + public static final int BLR = 0x017d_0048; + public static final int BLR_FAVE = 0x017d_0049; + public static final int BLS = 0x017d_004a; + public static final int BLS_FAVE = 0x017d_004b; + public static final int CIP = 0x017d_004c; + public static final int CIP_FAVE = 0x017d_004d; + public static final int CIQ = 0x017d_004e; + public static final int CIQ_FAVE = 0x017d_004f; + public static final int CIR = 0x017d_0050; + public static final int CIR_FAVE = 0x017d_0051; + public static final int CIS = 0x017d_0052; + public static final int CIS_FAVE = 0x017d_0053; + public static final int CJP = 0x017d_0054; + public static final int CJP_FAVE = 0x017d_0055; + public static final int CJQ = 0x017d_0056; + public static final int CJQ_FAVE = 0x017d_0057; + public static final int CJR = 0x017d_0058; + public static final int CJR_FAVE = 0x017d_0059; + public static final int CJS = 0x017d_005a; + public static final int CJS_FAVE = 0x017d_005b; + public static final int CKP = 0x017d_005c; + public static final int CKP_FAVE = 0x017d_005d; + public static final int CKQ = 0x017d_005e; + public static final int CKQ_FAVE = 0x017d_005f; + public static final int CKR = 0x017d_0060; + public static final int CKR_FAVE = 0x017d_0061; + public static final int CKS = 0x017d_0062; + public static final int CKS_FAVE = 0x017d_0063; + public static final int CLP = 0x017d_0064; + public static final int CLP_FAVE = 0x017d_0065; + public static final int CLQ = 0x017d_0066; + public static final int CLQ_FAVE = 0x017d_0067; + public static final int CLR = 0x017d_0068; + public static final int CLR_FAVE = 0x017d_0069; + public static final int CLS = 0x017d_006a; + public static final int CLS_FAVE = 0x017d_006b; + public static final int DIP = 0x017d_006c; + public static final int DIP_FAVE = 0x017d_006d; + public static final int DIQ = 0x017d_006e; + public static final int DIQ_FAVE = 0x017d_006f; + public static final int DIR = 0x017d_0070; + public static final int DIR_FAVE = 0x017d_0071; + public static final int DIS = 0x017d_0072; + public static final int DIS_FAVE = 0x017d_0073; + public static final int DJP = 0x017d_0074; + public static final int DJP_FAVE = 0x017d_0075; + public static final int DJQ = 0x017d_0076; + public static final int DJQ_FAVE = 0x017d_0077; + public static final int DJR = 0x017d_0078; + public static final int DJR_FAVE = 0x017d_0079; + public static final int DJS = 0x017d_007a; + public static final int DJS_FAVE = 0x017d_007b; + public static final int DKP = 0x017d_007c; + public static final int DKP_FAVE = 0x017d_007d; + public static final int DKQ = 0x017d_007e; + public static final int DKQ_FAVE = 0x017d_007f; + public static final int DKR = 0x017d_0080; + public static final int DKR_FAVE = 0x017d_0081; + public static final int DKS = 0x017d_0082; + public static final int DKS_FAVE = 0x017d_0083; + public static final int DLP = 0x017d_0084; + public static final int DLP_FAVE = 0x017d_0085; + public static final int DLQ = 0x017d_0086; + public static final int DLQ_FAVE = 0x017d_0087; + public static final int DLR = 0x017d_0088; + public static final int DLR_FAVE = 0x017d_0089; + public static final int DLS = 0x017d_008a; + public static final int DLS_FAVE = 0x017d_008b; + public static final int HIDEOUT = 0x017d_008c; + public static final int FAVE_1 = 0x017d_008d; + public static final int FAVE_2 = 0x017d_008e; + public static final int FAVE_3 = 0x017d_008f; + public static final int FAVE_4 = 0x017d_0090; + public static final int FAVE_5 = 0x017d_0091; + public static final int FAVE_6 = 0x017d_0092; + public static final int FAVE_7 = 0x017d_0093; + public static final int FAVE_8 = 0x017d_0094; + public static final int FAVE_9 = 0x017d_0095; + public static final int FAVE_10 = 0x017d_0096; + public static final int FAVE_CODE_1 = 0x017d_0097; + public static final int FAVE_CODE_2 = 0x017d_0098; + public static final int FAVE_CODE_3 = 0x017d_0099; + public static final int FAVE_CODE_4 = 0x017d_009a; + public static final int FAVE_CODE_5 = 0x017d_009b; + public static final int FAVE_CODE_6 = 0x017d_009c; + public static final int FAVE_CODE_7 = 0x017d_009d; + public static final int FAVE_CODE_8 = 0x017d_009e; + public static final int FAVE_CODE_9 = 0x017d_009f; + public static final int FAVE_CODE_10 = 0x017d_00a0; + public static final int FAVE_ICON_1 = 0x017d_00a1; + public static final int FAVE_ICON_2 = 0x017d_00a2; + public static final int FAVE_ICON_3 = 0x017d_00a3; + public static final int FAVE_ICON_4 = 0x017d_00a4; + public static final int FAVE_ICON_5 = 0x017d_00a5; + public static final int SCROLLBAR = 0x017d_00a6; + public static final int FAVE_ICON_6 = 0x017d_00a7; + public static final int FAVE_ICON_7 = 0x017d_00a8; + public static final int FAVE_ICON_8 = 0x017d_00a9; + public static final int FAVE_ICON_9 = 0x017d_00aa; + public static final int FAVE_ICON_10 = 0x017d_00ab; } public static final class MotherlodeHud @@ -16764,8 +16826,8 @@ public static final class KingsLetterV2 public static final int KINGS_LETTER_TEXT = 0x01cf_0001; public static final int KINGS_LETTER_SIGNATURE = 0x01cf_0002; public static final int ROOT_GRAPHIC3 = 0x01cf_0003; - public static final int _KINGS_LETTER_CLOSE_GRAPHIC0 = 0x01cf_0004; - public static final int _KINGS_LETTER_CLOSE = 0x01cf_0005; + public static final int KINGS_LETTER_CLOSE_GRAPHIC0 = 0x01cf_0004; + public static final int KINGS_LETTER_CLOSE = 0x01cf_0005; public static final int KINGS_SEAL = 0x01cf_0006; } @@ -17677,7 +17739,7 @@ public static final class BarbassaultPlayerstat public static final int ROOT_MODEL0 = 0x01ea_0000; public static final int ROOT_TEXT1 = 0x01ea_0001; public static final int ROOT_TEXT2 = 0x01ea_0002; - public static final int _______ = 0x01ea_0003; + public static final int ROOT_TEXT3 = 0x01ea_0003; public static final int ROOT_TEXT4 = 0x01ea_0004; public static final int ROOT_TEXT5 = 0x01ea_0005; public static final int ROOT_TEXT6 = 0x01ea_0006; @@ -18032,7 +18094,7 @@ public static final class RaidsSidepanel public static final class QuestFeverGunLocker { - public static final int BACK_GROUND____________ = 0x01f5_0000; + public static final int BACK_GROUND = 0x01f5_0000; public static final int GUN_LOCKER = 0x01f5_0001; public static final int CANNON_BARREL = 0x01f5_0002; public static final int FUSE = 0x01f5_0003; @@ -18067,7 +18129,7 @@ public static final class QuestFeverGunLocker public static final class QuestFeverRepairLocker { - public static final int BACK_GROUND____________ = 0x01f6_0000; + public static final int BACK_GROUND = 0x01f6_0000; public static final int REPAIR_LOCKER = 0x01f6_0001; public static final int ROPE = 0x01f6_0002; public static final int HAMMER = 0x01f6_0003; @@ -19574,6 +19636,12 @@ public static final class RaidsRewards public static final int CONTENT_MODEL0 = 0x021b_0003; public static final int CONTENT_MODEL1 = 0x021b_0004; public static final int ITEMS = 0x021b_0005; + public static final int BANK = 0x021b_0006; + public static final int BANK_ICON = 0x021b_0007; + public static final int INVENTORY = 0x021b_0008; + public static final int INVENTORY_ICON = 0x021b_0009; + public static final int DISCARD = 0x021b_000a; + public static final int DISCARD_ICON = 0x021b_000b; } public static final class IiElnocksExchange @@ -20135,7 +20203,7 @@ public static final class CwsWarning9 public static final int ROOT_GRAPHIC8 = 0x0230_0008; public static final int ROOT_GRAPHIC9 = 0x0230_0009; public static final int ROOT_GRAPHIC10 = 0x0230_000a; - public static final int __ = 0x0230_000b; + public static final int ROOT_GRAPHIC11 = 0x0230_000b; public static final int CWS_CLOSE = 0x0230_000c; public static final int WARNING_TEXT = 0x0230_000d; public static final int CWS_TEST_WARNING = 0x0230_000e; @@ -20161,7 +20229,7 @@ public static final class CwsWarning21 public static final int ROOT_GRAPHIC8 = 0x0231_0008; public static final int ROOT_GRAPHIC9 = 0x0231_0009; public static final int ROOT_GRAPHIC10 = 0x0231_000a; - public static final int __ = 0x0231_000b; + public static final int ROOT_GRAPHIC11 = 0x0231_000b; public static final int CWS_CLOSE = 0x0231_000c; public static final int WARNING_TEXT = 0x0231_000d; public static final int CWS_TEST_WARNING = 0x0231_000e; @@ -20187,7 +20255,7 @@ public static final class CwsWarning2 public static final int ROOT_GRAPHIC8 = 0x0232_0008; public static final int ROOT_GRAPHIC9 = 0x0232_0009; public static final int ROOT_GRAPHIC10 = 0x0232_000a; - public static final int __ = 0x0232_000b; + public static final int ROOT_GRAPHIC11 = 0x0232_000b; public static final int CWS_CLOSE = 0x0232_000c; public static final int WARNING_TEXT = 0x0232_000d; public static final int CWS_TEST_WARNING = 0x0232_000e; @@ -20213,7 +20281,7 @@ public static final class CwsWarning5 public static final int ROOT_GRAPHIC8 = 0x0233_0008; public static final int ROOT_GRAPHIC9 = 0x0233_0009; public static final int ROOT_GRAPHIC10 = 0x0233_000a; - public static final int __ = 0x0233_000b; + public static final int ROOT_GRAPHIC11 = 0x0233_000b; public static final int CWS_CLOSE = 0x0233_000c; public static final int WARNING_TEXT = 0x0233_000d; public static final int CWS_TEST_WARNING = 0x0233_000e; @@ -20239,7 +20307,7 @@ public static final class CwsWarning23 public static final int ROOT_GRAPHIC8 = 0x0234_0008; public static final int ROOT_GRAPHIC9 = 0x0234_0009; public static final int ROOT_GRAPHIC10 = 0x0234_000a; - public static final int __ = 0x0234_000b; + public static final int ROOT_GRAPHIC11 = 0x0234_000b; public static final int CWS_CLOSE = 0x0234_000c; public static final int WARNING_TEXT = 0x0234_000d; public static final int CWS_TEST_WARNING = 0x0234_000e; @@ -20265,7 +20333,7 @@ public static final class CwsWarning10 public static final int ROOT_GRAPHIC8 = 0x0235_0008; public static final int ROOT_GRAPHIC9 = 0x0235_0009; public static final int ROOT_GRAPHIC10 = 0x0235_000a; - public static final int __ = 0x0235_000b; + public static final int ROOT_GRAPHIC11 = 0x0235_000b; public static final int CWS_CLOSE = 0x0235_000c; public static final int WARNING_TEXT = 0x0235_000d; public static final int CWS_TEST_WARNING = 0x0235_000e; @@ -20291,7 +20359,7 @@ public static final class CwsWarning6 public static final int ROOT_GRAPHIC8 = 0x0236_0008; public static final int ROOT_GRAPHIC9 = 0x0236_0009; public static final int ROOT_GRAPHIC10 = 0x0236_000a; - public static final int __ = 0x0236_000b; + public static final int ROOT_GRAPHIC11 = 0x0236_000b; public static final int CWS_CLOSE = 0x0236_000c; public static final int WARNING_TEXT = 0x0236_000d; public static final int CWS_TEST_WARNING = 0x0236_000e; @@ -20317,7 +20385,7 @@ public static final class CwsWarning14 public static final int ROOT_GRAPHIC8 = 0x0237_0008; public static final int ROOT_GRAPHIC9 = 0x0237_0009; public static final int ROOT_GRAPHIC10 = 0x0237_000a; - public static final int __ = 0x0237_000b; + public static final int ROOT_GRAPHIC11 = 0x0237_000b; public static final int CWS_CLOSE = 0x0237_000c; public static final int WARNING_TEXT = 0x0237_000d; public static final int CWS_TEST_WARNING = 0x0237_000e; @@ -20343,7 +20411,7 @@ public static final class CwsWarning3 public static final int ROOT_GRAPHIC8 = 0x0238_0008; public static final int ROOT_GRAPHIC9 = 0x0238_0009; public static final int ROOT_GRAPHIC10 = 0x0238_000a; - public static final int __ = 0x0238_000b; + public static final int ROOT_GRAPHIC11 = 0x0238_000b; public static final int CWS_CLOSE = 0x0238_000c; public static final int WARNING_TEXT = 0x0238_000d; public static final int CWS_TEST_WARNING = 0x0238_000e; @@ -20369,7 +20437,7 @@ public static final class CwsWarning16 public static final int ROOT_GRAPHIC8 = 0x0239_0008; public static final int ROOT_GRAPHIC9 = 0x0239_0009; public static final int ROOT_GRAPHIC10 = 0x0239_000a; - public static final int __ = 0x0239_000b; + public static final int ROOT_GRAPHIC11 = 0x0239_000b; public static final int CWS_CLOSE = 0x0239_000c; public static final int WARNING_TEXT = 0x0239_000d; public static final int CWS_TEST_WARNING = 0x0239_000e; @@ -20395,7 +20463,7 @@ public static final class CwsWarning17 public static final int ROOT_GRAPHIC8 = 0x023a_0008; public static final int ROOT_GRAPHIC9 = 0x023a_0009; public static final int ROOT_GRAPHIC10 = 0x023a_000a; - public static final int __ = 0x023a_000b; + public static final int ROOT_GRAPHIC11 = 0x023a_000b; public static final int CWS_CLOSE = 0x023a_000c; public static final int WARNING_TEXT = 0x023a_000d; public static final int CWS_TEST_WARNING = 0x023a_000e; @@ -20421,7 +20489,7 @@ public static final class CwsWarning19 public static final int ROOT_GRAPHIC8 = 0x023b_0008; public static final int ROOT_GRAPHIC9 = 0x023b_0009; public static final int ROOT_GRAPHIC10 = 0x023b_000a; - public static final int __ = 0x023b_000b; + public static final int ROOT_GRAPHIC11 = 0x023b_000b; public static final int CWS_CLOSE = 0x023b_000c; public static final int WARNING_TEXT = 0x023b_000d; public static final int CWS_TEST_WARNING = 0x023b_000e; @@ -20447,7 +20515,7 @@ public static final class CwsWarning13 public static final int ROOT_GRAPHIC8 = 0x023c_0008; public static final int ROOT_GRAPHIC9 = 0x023c_0009; public static final int ROOT_GRAPHIC10 = 0x023c_000a; - public static final int __ = 0x023c_000b; + public static final int ROOT_GRAPHIC11 = 0x023c_000b; public static final int CWS_CLOSE = 0x023c_000c; public static final int WARNING_TEXT = 0x023c_000d; public static final int CWS_TEST_WARNING = 0x023c_000e; @@ -20473,7 +20541,7 @@ public static final class CwsWarning12 public static final int ROOT_GRAPHIC8 = 0x023d_0008; public static final int ROOT_GRAPHIC9 = 0x023d_0009; public static final int ROOT_GRAPHIC10 = 0x023d_000a; - public static final int __ = 0x023d_000b; + public static final int ROOT_GRAPHIC11 = 0x023d_000b; public static final int CWS_CLOSE = 0x023d_000c; public static final int WARNING_TEXT = 0x023d_000d; public static final int CWS_TEST_WARNING = 0x023d_000e; @@ -20499,7 +20567,7 @@ public static final class CwsWarning1 public static final int ROOT_GRAPHIC8 = 0x023e_0008; public static final int ROOT_GRAPHIC9 = 0x023e_0009; public static final int ROOT_GRAPHIC10 = 0x023e_000a; - public static final int __ = 0x023e_000b; + public static final int ROOT_GRAPHIC11 = 0x023e_000b; public static final int CWS_CLOSE = 0x023e_000c; public static final int WARNING_TEXT = 0x023e_000d; public static final int CWS_TEST_WARNING = 0x023e_000e; @@ -20525,7 +20593,7 @@ public static final class CwsWarning22 public static final int ROOT_GRAPHIC8 = 0x023f_0008; public static final int ROOT_GRAPHIC9 = 0x023f_0009; public static final int ROOT_GRAPHIC10 = 0x023f_000a; - public static final int __ = 0x023f_000b; + public static final int ROOT_GRAPHIC11 = 0x023f_000b; public static final int CWS_CLOSE = 0x023f_000c; public static final int WARNING_TEXT = 0x023f_000d; public static final int CWS_TEST_WARNING = 0x023f_000e; @@ -20551,7 +20619,7 @@ public static final class CwsWarning8 public static final int ROOT_GRAPHIC8 = 0x0240_0008; public static final int ROOT_GRAPHIC9 = 0x0240_0009; public static final int ROOT_GRAPHIC10 = 0x0240_000a; - public static final int __ = 0x0240_000b; + public static final int ROOT_GRAPHIC11 = 0x0240_000b; public static final int CWS_CLOSE = 0x0240_000c; public static final int WARNING_TEXT = 0x0240_000d; public static final int CWS_TEST_WARNING = 0x0240_000e; @@ -20577,7 +20645,7 @@ public static final class CwsWarning18 public static final int ROOT_GRAPHIC8 = 0x0241_0008; public static final int ROOT_GRAPHIC9 = 0x0241_0009; public static final int ROOT_GRAPHIC10 = 0x0241_000a; - public static final int __ = 0x0241_000b; + public static final int ROOT_GRAPHIC11 = 0x0241_000b; public static final int CWS_CLOSE = 0x0241_000c; public static final int WARNING_TEXT = 0x0241_000d; public static final int CWS_TEST_WARNING = 0x0241_000e; @@ -20603,7 +20671,7 @@ public static final class CwsWarning15 public static final int ROOT_GRAPHIC8 = 0x0242_0008; public static final int ROOT_GRAPHIC9 = 0x0242_0009; public static final int ROOT_GRAPHIC10 = 0x0242_000a; - public static final int __ = 0x0242_000b; + public static final int ROOT_GRAPHIC11 = 0x0242_000b; public static final int CWS_CLOSE = 0x0242_000c; public static final int WARNING_TEXT = 0x0242_000d; public static final int CWS_TEST_WARNING = 0x0242_000e; @@ -20629,7 +20697,7 @@ public static final class CwsWarning4 public static final int ROOT_GRAPHIC8 = 0x0243_0008; public static final int ROOT_GRAPHIC9 = 0x0243_0009; public static final int ROOT_GRAPHIC10 = 0x0243_000a; - public static final int __ = 0x0243_000b; + public static final int ROOT_GRAPHIC11 = 0x0243_000b; public static final int CWS_CLOSE = 0x0243_000c; public static final int WARNING_TEXT = 0x0243_000d; public static final int CWS_TEST_WARNING = 0x0243_000e; @@ -20655,7 +20723,7 @@ public static final class CwsWarning20 public static final int ROOT_GRAPHIC8 = 0x0244_0008; public static final int ROOT_GRAPHIC9 = 0x0244_0009; public static final int ROOT_GRAPHIC10 = 0x0244_000a; - public static final int __ = 0x0244_000b; + public static final int ROOT_GRAPHIC11 = 0x0244_000b; public static final int CWS_CLOSE = 0x0244_000c; public static final int WARNING_TEXT = 0x0244_000d; public static final int CWS_TEST_WARNING = 0x0244_000e; @@ -20681,7 +20749,7 @@ public static final class CwsWarning24 public static final int ROOT_GRAPHIC8 = 0x0245_0008; public static final int ROOT_GRAPHIC9 = 0x0245_0009; public static final int ROOT_GRAPHIC10 = 0x0245_000a; - public static final int __ = 0x0245_000b; + public static final int ROOT_GRAPHIC11 = 0x0245_000b; public static final int CWS_CLOSE = 0x0245_000c; public static final int WARNING_TEXT = 0x0245_000d; public static final int CWS_TEST_WARNING = 0x0245_000e; @@ -21407,10 +21475,14 @@ public static final class GravestoneRetrieval public static final int BOTTOM = 0x025a_0005; public static final int BUTTON = 0x025a_0006; public static final int BUTTON_GFX = 0x025a_0007; - public static final int DISCARD = 0x025a_0008; - public static final int DISCARD_GFX = 0x025a_0009; - public static final int INFO = 0x025a_000a; - public static final int FEE = 0x025a_000b; + public static final int BUTTON_BANK = 0x025a_0008; + public static final int BUTTON_BANK_GFX = 0x025a_0009; + public static final int DISCARD = 0x025a_000a; + public static final int DISCARD_GFX = 0x025a_000b; + public static final int BANK = 0x025a_000c; + public static final int BOTTOM_GRAPHIC7 = 0x025a_000d; + public static final int INFO = 0x025a_000e; + public static final int FEE = 0x025a_000f; } public static final class FossilquestSailingOverlay @@ -24485,7 +24557,7 @@ public static final class WildernessCaveMidWarning public static final int ROOT_GRAPHIC8 = 0x02d0_0008; public static final int ROOT_GRAPHIC9 = 0x02d0_0009; public static final int ROOT_GRAPHIC10 = 0x02d0_000a; - public static final int __ = 0x02d0_000b; + public static final int ROOT_GRAPHIC11 = 0x02d0_000b; public static final int CWS_CLOSE = 0x02d0_000c; public static final int WARNING_TEXT = 0x02d0_000d; public static final int CWS_TEST_WARNING = 0x02d0_000e; @@ -29475,59 +29547,61 @@ public static final class OrbsNomap { public static final int UNIVERSE = 0x037f_0000; public static final int CONTENT = 0x037f_0001; - public static final int XP_DROPS = 0x037f_0002; - public static final int ORB_HEALTH = 0x037f_0003; - public static final int HEALTH_BACKING = 0x037f_0004; - public static final int HEALTHBUTTON = 0x037f_0005; - public static final int HEALTH_TEXT = 0x037f_0006; - public static final int HEALTH_INDICATOR = 0x037f_0007; - public static final int HEALTH_EXTRAPOISONHALF = 0x037f_0008; - public static final int HEALTH_EXTRAPOISONHALF_CONTENTS = 0x037f_0009; - public static final int ORB_HEALTH_EMPTY = 0x037f_000a; - public static final int HEALTH_EMPTY_CONTENTS = 0x037f_000b; - public static final int HEALTH_REGEN = 0x037f_000c; - public static final int ORB_HEALTH_HEART_ICON = 0x037f_000d; - public static final int ORB_PRAYER = 0x037f_000e; - public static final int PRAYER_BACKING = 0x037f_000f; - public static final int PRAYERBUTTON = 0x037f_0010; - public static final int PRAYER_TEXT = 0x037f_0011; - public static final int PRAYER_INDICATOR = 0x037f_0012; - public static final int ORB_PRAYER_EMPTY = 0x037f_0013; - public static final int ORB_PRAYER_EMPTY_GRAPHIC0 = 0x037f_0014; - public static final int PRAYER_ICON = 0x037f_0015; - public static final int ORB_RUNENERGY = 0x037f_0016; - public static final int RUNENERGY_BACKING = 0x037f_0017; - public static final int RUNBUTTON = 0x037f_0018; - public static final int RUNENERGY_TEXT = 0x037f_0019; - public static final int RUNENERGY_INDICATOR = 0x037f_001a; - public static final int ORB_RUNENERGY_EMPTY = 0x037f_001b; - public static final int ORB_RUNENERGY_EMPTY_GRAPHIC0 = 0x037f_001c; - public static final int RUNENERGY_ICON = 0x037f_001d; - public static final int ORB_SPECENERGY = 0x037f_001e; - public static final int SPECENERGY_BACKING = 0x037f_001f; - public static final int SPECBUTTON = 0x037f_0020; - public static final int SPECENERGY_TEXT = 0x037f_0021; - public static final int SPECENERGY_INDICATOR = 0x037f_0022; - public static final int ORB_SPECENERGY_EMPTY = 0x037f_0023; - public static final int ORB_SPECENERGY_EMPTY_GRAPHIC0 = 0x037f_0024; - public static final int SPEC_REGEN = 0x037f_0025; - public static final int ORB_SPECENERGY_GRAPHIC6 = 0x037f_0026; - public static final int ORB_STORE = 0x037f_0027; - public static final int STORE_BACKING = 0x037f_0028; - public static final int STORE_INDICATOR = 0x037f_0029; - public static final int STORE_BUTTON = 0x037f_002a; - public static final int STORE_ICON = 0x037f_002b; - public static final int ORB_CONTENTRECOM = 0x037f_002c; - public static final int CR_BACKING = 0x037f_002d; - public static final int CR_INDICATOR = 0x037f_002e; - public static final int CR_BUTTON = 0x037f_002f; - public static final int CR_ICON = 0x037f_0030; - public static final int ORB_WORLDMAP = 0x037f_0031; - public static final int WORLDMAP_BACKING = 0x037f_0032; - public static final int WORLDMAP = 0x037f_0033; - public static final int WIKI = 0x037f_0034; - public static final int WIKI_ICON = 0x037f_0035; - public static final int WIKI_ICON_GRAPHIC = 0x037f_0036; + public static final int TOOLTIP = 0x037f_0002; + public static final int XP_DROPS = 0x037f_0003; + public static final int ORB_HEALTH = 0x037f_0004; + public static final int HEALTH_BACKING = 0x037f_0005; + public static final int HEALTHBUTTON = 0x037f_0006; + public static final int HEALTH_TEXT = 0x037f_0007; + public static final int HEALTH_INDICATOR = 0x037f_0008; + public static final int HEALTH_EXTRAPOISONHALF = 0x037f_0009; + public static final int HEALTH_EXTRAPOISONHALF_CONTENTS = 0x037f_000a; + public static final int ORB_HEALTH_EMPTY = 0x037f_000b; + public static final int HEALTH_EMPTY_CONTENTS = 0x037f_000c; + public static final int HEALTH_REGEN = 0x037f_000d; + public static final int ORB_HEALTH_HEART_ICON = 0x037f_000e; + public static final int ORB_PRAYER = 0x037f_000f; + public static final int PRAYER_BACKING = 0x037f_0010; + public static final int PRAYERBUTTON = 0x037f_0011; + public static final int PRAYER_TEXT = 0x037f_0012; + public static final int PRAYER_INDICATOR = 0x037f_0013; + public static final int ORB_PRAYER_EMPTY = 0x037f_0014; + public static final int ORB_PRAYER_EMPTY_GRAPHIC0 = 0x037f_0015; + public static final int PRAYER_ICON = 0x037f_0016; + public static final int ORB_RUNENERGY = 0x037f_0017; + public static final int RUNENERGY_BACKING = 0x037f_0018; + public static final int RUNBUTTON = 0x037f_0019; + public static final int RUNENERGY_TEXT = 0x037f_001a; + public static final int RUNENERGY_INDICATOR = 0x037f_001b; + public static final int ORB_RUNENERGY_EMPTY = 0x037f_001c; + public static final int ORB_RUNENERGY_EMPTY_GRAPHIC0 = 0x037f_001d; + public static final int RUNENERGY_ICON = 0x037f_001e; + public static final int ORB_SPECENERGY = 0x037f_001f; + public static final int SPECENERGY_BACKING = 0x037f_0020; + public static final int SPECBUTTON = 0x037f_0021; + public static final int SPECENERGY_TEXT = 0x037f_0022; + public static final int SPECENERGY_INDICATOR = 0x037f_0023; + public static final int ORB_SPECENERGY_EMPTY = 0x037f_0024; + public static final int ORB_SPECENERGY_EMPTY_GRAPHIC0 = 0x037f_0025; + public static final int SPEC_REGEN = 0x037f_0026; + public static final int ORB_SPECENERGY_GRAPHIC6 = 0x037f_0027; + public static final int ORB_STORE = 0x037f_0028; + public static final int STORE_BACKING = 0x037f_0029; + public static final int STORE_INDICATOR = 0x037f_002a; + public static final int STORE_BUTTON = 0x037f_002b; + public static final int STORE_ICON = 0x037f_002c; + public static final int ORB_CONTENTRECOM = 0x037f_002d; + public static final int CR_BACKING = 0x037f_002e; + public static final int CR_INDICATOR = 0x037f_002f; + public static final int CR_BUTTON = 0x037f_0030; + public static final int CR_ICON = 0x037f_0031; + public static final int ORB_WORLDMAP = 0x037f_0032; + public static final int WORLDMAP_BACKING = 0x037f_0033; + public static final int WORLDMAP = 0x037f_0034; + public static final int WORLDMAP_TOOLTIP = 0x037f_0035; + public static final int WIKI = 0x037f_0036; + public static final int WIKI_ICON = 0x037f_0037; + public static final int WIKI_ICON_GRAPHIC = 0x037f_0038; } public static final class EhcWorldhop diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/NpcID.java b/runelite-api/src/main/java/net/runelite/api/gameval/NpcID.java index c76613ed3ee..a70567ed4aa 100644 --- a/runelite-api/src/main/java/net/runelite/api/gameval/NpcID.java +++ b/runelite-api/src/main/java/net/runelite/api/gameval/NpcID.java @@ -6934,10 +6934,6 @@ public final class NpcID * Monkey */ public static final int MM_TRANSMOGRIFICATION_NORMAL_MONKEY = 1469; - - /** - * Rantz - */ public static final int RANTZ = 1470; /** @@ -38209,10 +38205,6 @@ public final class NpcID * Abigaila */ public static final int TOB_SPECTATOR_MISTHALIN = 8368; - - /** - * Verzik Vitur - */ public static final int VERZIK_INITIAL = 8369; /** @@ -47267,10 +47259,6 @@ public final class NpcID */ public static final int TOB_VERZIK_PHASE2_BLOODNYLOCAS_STORY = 10845; public static final int TOB_VERZIK_CREEPER_STORY = 10846; - - /** - * Verzik Vitur - */ public static final int VERZIK_INITIAL_HARD = 10847; /** @@ -64277,5 +64265,35 @@ public final class NpcID * Wizguard */ public static final int DEADMAN_GUARD_WIZARD = 14792; + + /** + * Rantz + */ + public static final int RANTZ_PRE_QUEST = 14793; + + /** + * Rantz + */ + public static final int RANTZ_POST_QUEST = 14794; + + /** + * Verzik Vitur + */ + public static final int VERZIK_INITIAL_BASE = 14795; + + /** + * Verzik Vitur + */ + public static final int VERZIK_INITIAL_QUICKSTART = 14796; + + /** + * Verzik Vitur + */ + public static final int VERZIK_INITIAL_HARD_BASE = 14797; + + /** + * Verzik Vitur + */ + public static final int VERZIK_INITIAL_HARD_QUICKSTART = 14798; /* This file is automatically generated. Do not edit. */ } diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/ObjectID1.java b/runelite-api/src/main/java/net/runelite/api/gameval/ObjectID1.java index 745ae59060e..4dae1da313f 100644 --- a/runelite-api/src/main/java/net/runelite/api/gameval/ObjectID1.java +++ b/runelite-api/src/main/java/net/runelite/api/gameval/ObjectID1.java @@ -69354,5 +69354,11 @@ class ObjectID1 public static final int FENK_BRIDGEBROKEN_SUPPORT01 = 57719; public static final int FENK_BRIDGESUPPORT_MULTI_NORTH = 57720; public static final int FENK_BRIDGESUPPORT_MULTI_SOUTH = 57721; + public static final int AHOY_TOWN_BARRIER_MULTI = 57722; + + /** + * Energy Barrier + */ + public static final int AHOY_TOWN_BARRIER_POST_QUEST = 57723; /* This file is automatically generated. Do not edit. */ } diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java b/runelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java index 0146f856e52..393a4e9d239 100644 --- a/runelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java +++ b/runelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java @@ -2289,5 +2289,24 @@ public final class VarPlayerID public static final int WORN_ITEM_BONUS4 = 4852; public static final int WORN_ITEM_BONUS5 = 4853; public static final int WORN_ITEM_BONUS6 = 4854; + public static final int RUNE_POUCH_LOADOUT_1 = 4857; + public static final int RUNE_POUCH_LOADOUT_2 = 4858; + public static final int RUNE_POUCH_LOADOUT_3 = 4859; + public static final int RUNE_POUCH_LOADOUT_4 = 4860; + public static final int RUNE_POUCH_LOADOUT_5 = 4861; + public static final int RUNE_POUCH_LOADOUT_6 = 4862; + public static final int RUNE_POUCH_LOADOUT_7 = 4863; + public static final int RUNE_POUCH_LOADOUT_8 = 4864; + public static final int RUNE_POUCH_LOADOUT_9 = 4865; + public static final int RUNE_POUCH_LOADOUT_10 = 4866; + public static final int RUNE_POUCH_LOADOUT_11 = 4867; + public static final int RUNE_POUCH_LOADOUT_12 = 4868; + public static final int RUNE_POUCH_LOADOUT_13 = 4869; + public static final int RUNE_POUCH_LOADOUT_14 = 4870; + public static final int RUNE_POUCH_LOADOUT_15 = 4871; + public static final int RUNE_POUCH_LOADOUT_16 = 4872; + public static final int RUNE_POUCH_LOADOUT_NAME_0 = 4873; + public static final int RUNE_POUCH_LOADOUT_NAME_1 = 4874; + public static final int RUNE_POUCH_LOADOUT_NAME_2 = 4875; /* This file is automatically generated. Do not edit. */ } diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/VarbitID.java b/runelite-api/src/main/java/net/runelite/api/gameval/VarbitID.java index f246335d5d6..f8036fa9ecc 100644 --- a/runelite-api/src/main/java/net/runelite/api/gameval/VarbitID.java +++ b/runelite-api/src/main/java/net/runelite/api/gameval/VarbitID.java @@ -12336,5 +12336,77 @@ public final class VarbitID public static final int WORN_ITEMS_RC_BOOTS = 17935; public static final int WORN_ITEMS_LUMBERJACK_FULL_OUTFIT = 17936; public static final int WORN_ITEMS_ROGUE_SET = 17937; + public static final int OPTION_HIDEY_HOLES_EQUIPPED = 17938; + public static final int SETTINGS_CA_OPEN_LAST_INTERFACE_DISABLED = 17939; + public static final int CA_LAST_OPENED_INTERFACE = 17940; + public static final int CA_LAST_REWARD_TIER_SELECTED = 17941; + public static final int WORN_ITEMS_VIRTUS_MASK = 17942; + public static final int WORN_ITEMS_VIRTUS_TOP = 17943; + public static final int WORN_ITEMS_VIRTUS_LEGS = 17944; + public static final int RUNE_POUCH_LOADOUT_E_RUNE3 = 17969; + public static final int RUNE_POUCH_LOADOUT_E_RUNE4 = 17970; + public static final int RUNE_POUCH_LOADOUT_F_RUNE1 = 17971; + public static final int RUNE_POUCH_LOADOUT_E_CAP1 = 17972; + public static final int RUNE_POUCH_LOADOUT_F_RUNE2 = 17973; + public static final int RUNE_POUCH_LOADOUT_F_RUNE3 = 17974; + public static final int RUNE_POUCH_LOADOUT_F_RUNE4 = 17975; + public static final int RUNE_POUCH_LOADOUT_E_CAP2 = 17976; + public static final int RUNE_POUCH_LOADOUT_G_RUNE1 = 17977; + public static final int RUNE_POUCH_LOADOUT_G_RUNE2 = 17978; + public static final int RUNE_POUCH_LOADOUT_G_RUNE3 = 17979; + public static final int RUNE_POUCH_LOADOUT_E_CAP3 = 17980; + public static final int RUNE_POUCH_LOADOUT_G_RUNE4 = 17981; + public static final int RUNE_POUCH_LOADOUT_H_RUNE1 = 17982; + public static final int RUNE_POUCH_LOADOUT_H_RUNE2 = 17983; + public static final int RUNE_POUCH_LOADOUT_E_CAP4 = 17984; + public static final int RUNE_POUCH_LOADOUT_H_RUNE3 = 17985; + public static final int RUNE_POUCH_LOADOUT_H_RUNE4 = 17986; + public static final int RUNE_POUCH_LOADOUT_F_CAP1 = 17987; + public static final int RUNE_POUCH_LOADOUT_H_CAP3_BITSA = 17988; + public static final int RUNE_POUCH_LOADOUT_F_CAP2 = 17989; + public static final int RUNE_POUCH_LOADOUT_F_CAP3 = 17990; + public static final int RUNE_POUCH_LOADOUT_H_CAP3_BITSB = 17991; + public static final int RUNE_POUCH_LOADOUT_F_CAP4 = 17992; + public static final int RUNE_POUCH_LOADOUT_G_CAP1 = 17993; + public static final int RUNE_POUCH_LOADOUT_H_CAP3_BITSC = 17994; + public static final int RUNE_POUCH_LOADOUT_G_CAP2 = 17995; + public static final int RUNE_POUCH_LOADOUT_G_CAP3 = 17996; + public static final int RUNE_POUCH_LOADOUT_E_RUNE1_BITSA = 17997; + public static final int RUNE_POUCH_LOADOUT_G_CAP4 = 17998; + public static final int RUNE_POUCH_LOADOUT_H_CAP1 = 17999; + public static final int RUNE_POUCH_LOADOUT_E_RUNE2_BITSA = 18000; + public static final int RUNE_POUCH_LOADOUT_H_CAP2 = 18001; + public static final int RUNE_POUCH_LOADOUT_H_CAP4 = 18002; + public static final int RUNE_POUCH_LOADOUT_E_RUNE1_BITSB = 18003; + public static final int RUNE_POUCH_LOADOUT_E_RUNE2_BITSB = 18004; + public static final int RUNE_POUCH_LOADOUT_I_RUNE3 = 18005; + public static final int RUNE_POUCH_LOADOUT_I_RUNE4 = 18006; + public static final int RUNE_POUCH_LOADOUT_J_RUNE1 = 18007; + public static final int RUNE_POUCH_LOADOUT_I_CAP1 = 18008; + public static final int RUNE_POUCH_LOADOUT_J_RUNE2 = 18009; + public static final int RUNE_POUCH_LOADOUT_J_RUNE3 = 18010; + public static final int RUNE_POUCH_LOADOUT_J_RUNE4 = 18011; + public static final int RUNE_POUCH_LOADOUT_I_CAP2 = 18012; + public static final int RUNE_POUCH_LOADOUT_I_CAP3 = 18013; + public static final int RUNE_POUCH_LOADOUT_I_CAP4 = 18014; + public static final int RUNE_POUCH_LOADOUT_J_CAP2 = 18015; + public static final int RUNE_POUCH_LOADOUT_J_CAP3 = 18016; + public static final int RUNE_POUCH_LOADOUT_J_CAP4 = 18017; + public static final int RUNE_POUCH_LOADOUT_J_CAP1 = 18018; + public static final int RUNE_POUCH_LOADOUT_I_RUNE2_BITSA = 18019; + public static final int RUNE_POUCH_LOADOUT_I_RUNE1_BITSA = 18020; + public static final int RUNE_POUCH_LOADOUT_I_RUNE1_BITSB = 18021; + public static final int RUNE_POUCH_LOADOUT_I_RUNE2_BITSB = 18022; + public static final int RUNE_POUCH_LOADOUT_NAME_SELECTED = 18023; + public static final int RUNE_POUCH_LOADOUT_NAME_A = 18024; + public static final int RUNE_POUCH_LOADOUT_NAME_B = 18025; + public static final int RUNE_POUCH_LOADOUT_NAME_C = 18026; + public static final int RUNE_POUCH_LOADOUT_NAME_D = 18027; + public static final int RUNE_POUCH_LOADOUT_NAME_E = 18028; + public static final int RUNE_POUCH_LOADOUT_NAME_F = 18029; + public static final int RUNE_POUCH_LOADOUT_NAME_G = 18030; + public static final int RUNE_POUCH_LOADOUT_NAME_H = 18031; + public static final int RUNE_POUCH_LOADOUT_NAME_I = 18032; + public static final int RUNE_POUCH_LOADOUT_NAME_J = 18033; /* This file is automatically generated. Do not edit. */ } From bc7188a0924930e8d899f870d669dbcb74ed9374 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Tue, 30 Sep 2025 11:01:48 -0600 Subject: [PATCH 28/38] fairyring: use vanilla search --- .../{FairyRings.java => FairyRing.java} | 18 +- .../plugins/fairyring/FairyRingPlugin.java | 325 ++------ .../main/scripts/fairyrings_sort_update.hash | 1 + .../scripts/fairyrings_sort_update.rs2asm | 763 ++++++++++++++++++ .../plugins/fairyring/FairyRingTest.java | 2 +- .../worldmap/FairyRingLocationTest.java | 4 +- 6 files changed, 827 insertions(+), 286 deletions(-) rename runelite-client/src/main/java/net/runelite/client/plugins/fairyring/{FairyRings.java => FairyRing.java} (88%) create mode 100644 runelite-client/src/main/scripts/fairyrings_sort_update.hash create mode 100644 runelite-client/src/main/scripts/fairyrings_sort_update.rs2asm diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRings.java b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRing.java similarity index 88% rename from runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRings.java rename to runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRing.java index bfd58e8d969..76b19ee07da 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRings.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRing.java @@ -26,9 +26,13 @@ package net.runelite.client.plugins.fairyring; +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; +import javax.annotation.Nullable; import lombok.Getter; -public enum FairyRings +public enum FairyRing { // A AIQ("Mudskipper Point"), @@ -91,21 +95,29 @@ public enum FairyRings DLR("(Island) Poison Waste south of Isafdar"), DLS("Myreque hideout under The Hollows"); + private static final Map BY_CODE = Arrays.stream(FairyRing.values()) + .collect(Collectors.toUnmodifiableMap(v -> v.name(), v -> v)); + @Getter private final String destination; @Getter private final String tags; - FairyRings(String destination) + FairyRing(String destination) { this(destination, ""); } - FairyRings(String destination, String tags) + FairyRing(String destination, String tags) { this.destination = destination; this.tags = tags.toLowerCase() + " " + destination.toLowerCase(); } + @Nullable + public static FairyRing forCode(String code) + { + return BY_CODE.get(code); + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java index 56184c5f646..721657425aa 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java @@ -30,31 +30,23 @@ import com.google.common.base.Strings; import com.google.inject.Provides; -import java.util.Collection; import java.util.List; -import java.util.Map; import java.util.Optional; -import java.util.TreeMap; -import javax.annotation.Nullable; import javax.inject.Inject; -import lombok.Data; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.MenuAction; import net.runelite.api.MenuEntry; -import net.runelite.api.ScriptEvent; -import net.runelite.api.ScriptID; import net.runelite.api.SoundEffectID; import net.runelite.api.events.MenuEntryAdded; -import net.runelite.api.events.ScriptPostFired; +import net.runelite.api.events.ScriptCallbackEvent; +import net.runelite.api.gameval.DBTableID; import net.runelite.api.gameval.InterfaceID; -import net.runelite.api.gameval.SpriteID; +import net.runelite.api.gameval.VarClientID; import net.runelite.api.gameval.VarbitID; -import net.runelite.api.widgets.WidgetType; import net.runelite.api.events.GameTick; import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.WidgetLoaded; -import net.runelite.api.widgets.JavaScriptCallback; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetUtil; import net.runelite.client.callback.ClientThread; @@ -78,10 +70,6 @@ public class FairyRingPlugin extends Plugin private static final String[] middleDial = {"I", "L", "K", "J"}; private static final String[] rightDial = {"P", "S", "R", "Q"}; - private static final int ENTRY_PADDING = 3; - - private static final String MENU_OPEN = "Open"; - private static final String MENU_CLOSE = "Close"; private static final String EDIT_TAGS_MENU_OPTION = "Edit Tags"; @Inject @@ -99,23 +87,7 @@ public class FairyRingPlugin extends Plugin @Inject private ConfigManager configManager; - private ChatboxTextInput searchInput = null; private ChatboxTextInput tagInput; - private Widget searchBtn; - private Collection codes = null; - - @Data - private static class CodeWidgets - { - // The fairy hideout has both of these null, because its not the same as the rest of them - @Nullable - private Widget favorite; - - @Nullable - private Widget code; - - private Widget description; - } @Provides FairyRingConfig getConfig(ConfigManager configManager) @@ -154,44 +126,13 @@ public void onWidgetLoaded(WidgetLoaded widgetLoaded) { setWidgetTextToDestination(); - Widget header = client.getWidget(InterfaceID.FairyringsLog.TITLEBOX); - if (header != null) + if (config.autoOpen()) { - searchBtn = header.createChild(-1, WidgetType.GRAPHIC); - searchBtn.setSpriteId(SpriteID.GeSmallicons.SEARCH); - searchBtn.setOriginalWidth(17); - searchBtn.setOriginalHeight(17); - searchBtn.setOriginalX(11); - searchBtn.setOriginalY(11); - searchBtn.setHasListener(true); - searchBtn.setAction(1, MENU_OPEN); - searchBtn.setOnOpListener((JavaScriptCallback) this::menuOpen); - searchBtn.setName("Search"); - searchBtn.revalidate(); - - codes = null; - - if (config.autoOpen()) - { - openSearch(); - } + clientThread.invokeLater(() -> openSearch()); } } } - private void menuOpen(ScriptEvent e) - { - openSearch(); - client.playSoundEffect(SoundEffectID.UI_BOOP); - } - - private void menuClose(ScriptEvent e) - { - updateFilter(""); - chatboxPanelManager.close(); - client.playSoundEffect(SoundEffectID.UI_BOOP); - } - private void setWidgetTextToDestination() { Widget fairyRingTeleportButton = client.getWidget(InterfaceID.Fairyrings.CONFIRM); @@ -200,7 +141,7 @@ private void setWidgetTextToDestination() String destination; try { - FairyRings fairyRingDestination = getFairyRingDestination(client.getVarbitValue(VarbitID.FAIRYRING_1), + FairyRing fairyRingDestination = getFairyRingDestination(client.getVarbitValue(VarbitID.FAIRYRING_1), client.getVarbitValue(VarbitID.FAIRYRING_2), client.getVarbitValue(VarbitID.FAIRYRING_3)); destination = fairyRingDestination.getDestination(); } @@ -213,241 +154,74 @@ private void setWidgetTextToDestination() } } - private FairyRings getFairyRingDestination(int varbitValueDialLeft, int varbitValueDialMiddle, int varbitValueDialRight) - { - return FairyRings.valueOf(leftDial[varbitValueDialLeft] + middleDial[varbitValueDialMiddle] + rightDial[varbitValueDialRight]); - } - private void openSearch() { - updateFilter(""); - searchBtn.setAction(1, MENU_CLOSE); - searchBtn.setOnOpListener((JavaScriptCallback) this::menuClose); - searchInput = chatboxPanelManager.openTextInput("Filter fairy rings") - .onChanged(s -> clientThread.invokeLater(() -> updateFilter(s))) - .onDone(s -> false) - .onClose(() -> - { - clientThread.invokeLater(() -> updateFilter("")); - searchBtn.setOnOpListener((JavaScriptCallback) this::menuOpen); - searchBtn.setAction(1, MENU_OPEN); - }) - .build(); - } - - @Subscribe - public void onGameTick(GameTick t) - { - // This has to happen because the only widget that gets hidden is the tli one - Widget fairyRingTeleportButton = client.getWidget(InterfaceID.Fairyrings.CONFIRM); - boolean fairyRingWidgetOpen = fairyRingTeleportButton != null && !fairyRingTeleportButton.isHidden(); - boolean searchInputBoxOpen = searchInput != null && chatboxPanelManager.getCurrentInput() == searchInput; - boolean tagInputBoxOpen = tagInput != null && chatboxPanelManager.getCurrentInput() == tagInput; - - if (!fairyRingWidgetOpen && (searchInputBoxOpen || tagInputBoxOpen)) + var widget = client.getWidget(InterfaceID.FairyringsLog.TITLEBOX_GRAPHIC2); + if (widget != null) { - chatboxPanelManager.close(); + client.createScriptEvent(widget.getOnOpListener()) + .setOp(1) + .run(); } } - private void updateFilter(String input) + @Subscribe + private void onScriptCallbackEvent(ScriptCallbackEvent ev) { - final String filter = input.toLowerCase(); - final Widget list = client.getWidget(InterfaceID.FairyringsLog.CONTENTS); - final Widget favorites = client.getWidget(InterfaceID.FairyringsLog.FAVES); - - if (list == null) + String code = null; + if ("fairyringFilterFavorite".equals(ev.getEventName())) { - return; - } - - if (codes != null) - { - // Check to make sure the list hasn't been rebuild since we were last her - // Do this by making sure the list's dynamic children are the same as when we last saw them - if (codes.stream().noneMatch(w -> + var widget = client.getWidget(client.getIntStack()[client.getIntStackSize() - 2]); + if (widget != null) { - Widget codeWidget = w.getCode(); - if (codeWidget == null) - { - return false; - } - return list.getChild(codeWidget.getIndex()) == codeWidget; - })) - { - codes = null; + code = widget.getText(); } } - - if (codes == null) + else if ("fairyringFilterDbrow".equals(ev.getEventName())) { - // Find all of the widgets that we care about, grouping by their Y value - Map codeMap = new TreeMap<>(); - - for (Widget w : list.getStaticChildren()) - { - if (w.isSelfHidden()) - { - continue; - } - - if (w.getSpriteId() != -1) - { - codeMap.computeIfAbsent(w.getRelativeY(), k -> new CodeWidgets()).setFavorite(w); - } - else if (!Strings.isNullOrEmpty(w.getText())) - { - codeMap.computeIfAbsent(w.getRelativeY(), k -> new CodeWidgets()).setDescription(w); - } - } - - for (Widget w : list.getDynamicChildren()) - { - if (w.isSelfHidden()) - { - continue; - } - - CodeWidgets c = codeMap.computeIfAbsent(w.getRelativeY(), k -> new CodeWidgets()); - c.setCode(w); - } - - if (favorites != null) - { - for (Widget w : favorites.getStaticChildren()) - { - if (w.getId() == InterfaceID.FairyringsLog.DIVIDER) - { - continue; - } - - // Favorites widgets are pre-allocated and hidden if the max of 4 favorites isn't reached - if (w.getSpriteId() != -1 && !w.isSelfHidden()) - { - codeMap.computeIfAbsent(w.getRelativeY(), k -> new CodeWidgets()).setFavorite(w); - } - else if (!Strings.isNullOrEmpty(w.getName()) && !w.isSelfHidden()) - { - codeMap.computeIfAbsent(w.getRelativeY(), k -> new CodeWidgets()).setDescription(w); - } - else if (!Strings.isNullOrEmpty(w.getText()) && !w.isSelfHidden()) - { - codeMap.computeIfAbsent(w.getRelativeY(), k -> new CodeWidgets()).setCode(w); - } - } - } - - codes = codeMap.values(); - } - - // reset the separator widget - Widget separator = client.getWidget(InterfaceID.FairyringsLog.DIVIDER); - if (separator != null) - { - separator.setHidden(true); - separator.setOriginalY(3); + code = (String) client.getDBTableField(client.getIntStack()[client.getIntStackSize() - 2], DBTableID.Fairyring.COL_CODE, 0)[0]; } - // Relayout the panel - int y = 0; - CodeWidgets lastFavorite = null; - boolean hasFavorites = false; - boolean hasNormal = false; - for (CodeWidgets c : codes) + if (code != null && !code.isEmpty()) { - String code = Text.removeTags(c.getDescription().getName()).replace(" ", ""); + code = code.replace(" ", ""); String tags = null; - if (!code.isEmpty()) + var ring = FairyRing.forCode(code); + if (ring != null) { - try - { - FairyRings ring = FairyRings.valueOf(code); - tags = ring.getTags(); - } - catch (IllegalArgumentException e) - { - log.warn("Unable to find ring with code '{}'", code, e); - } - } - - boolean hidden = !(filter.isEmpty() - || Text.removeTags(c.getDescription().getText()).toLowerCase().contains(filter) - || code.toLowerCase().contains(filter) - || tags != null && tags.contains(filter) - || getConfigTags(code).stream().anyMatch(s -> s.contains(filter) - )); - - // add padding to the first widget after the separator - if (!hidden && lastFavorite != null && (c.getFavorite() == null || c.getFavorite().getSpriteId() == SpriteID.FavouriteIcons.ADD)) - { - y += ENTRY_PADDING; - lastFavorite = null; - } - - if (c.getCode() != null) - { - c.getCode().setHidden(hidden); - c.getCode().setOriginalY(y); + tags = ring.getTags(); } - if (c.getFavorite() != null) - { - c.getFavorite().setHidden(hidden); - c.getFavorite().setOriginalY(y); - } - - c.getDescription().setHidden(hidden); - c.getDescription().setOriginalY(y); - - if (!hidden) - { - y += c.getDescription().getHeight() + ENTRY_PADDING; - - if (c.getFavorite() != null && c.getFavorite().getSpriteId() == SpriteID.FavouriteIcons.REMOVE) - { - hasFavorites = true; - lastFavorite = c; - } - else - { - hasNormal = true; - } + var filter = client.getVarcStrValue(VarClientID.MESLAYERINPUT); - // if we have both favorites and standard items in the search results, show the separator - if (hasFavorites && hasNormal) - { - separator.setHidden(false); - } - } - else if (c.getFavorite() != null && c.getFavorite().getSpriteId() == SpriteID.FavouriteIcons.REMOVE) + if (code.toLowerCase().contains(filter) + || tags != null && tags.contains(filter) + || getConfigTags(code).stream().anyMatch(s -> s.contains(filter)) + ) { - // separator widget layouts from the bottom of the favorites container - separator.setOriginalY(separator.getOriginalY() + c.getDescription().getHeight() + ENTRY_PADDING); + client.getIntStack()[client.getIntStackSize() - 1] = 1; } } + } - y -= ENTRY_PADDING; - - if (y < 0) - { - y = 0; - } + @Subscribe + public void onGameTick(GameTick t) + { + // This has to happen because the only widget that gets hidden is the tli one + Widget fairyRingTeleportButton = client.getWidget(InterfaceID.Fairyrings.CONFIRM); + boolean fairyRingWidgetOpen = fairyRingTeleportButton != null && !fairyRingTeleportButton.isHidden(); + boolean tagInputBoxOpen = tagInput != null && chatboxPanelManager.getCurrentInput() == tagInput; - int newHeight = 0; - if (list.getScrollHeight() > 0) + if (!fairyRingWidgetOpen && tagInputBoxOpen) { - newHeight = (list.getScrollY() * y) / list.getScrollHeight(); + chatboxPanelManager.close(); } + } - list.setScrollHeight(y); - list.revalidateScroll(); - client.runScript( - ScriptID.UPDATE_SCROLLBAR, - InterfaceID.FairyringsLog.SCROLLBAR, - InterfaceID.FairyringsLog.CONTENTS, - newHeight - ); + private FairyRing getFairyRingDestination(int varbitValueDialLeft, int varbitValueDialMiddle, int varbitValueDialRight) + { + return FairyRing.valueOf(leftDial[varbitValueDialLeft] + middleDial[varbitValueDialMiddle] + rightDial[varbitValueDialRight]); } @Subscribe @@ -467,15 +241,6 @@ public void onMenuEntryAdded(MenuEntryAdded event) } } - @Subscribe - public void onScriptPostFired(ScriptPostFired event) - { - if (event.getScriptId() == ScriptID.FAIRYRINGS_SORT_UPDATE && searchInput != null && tagInput == null) - { - clientThread.invokeLater(() -> updateFilter(searchInput.getValue())); - } - } - private List getConfigTags(String fairyRingCode) { String config = Optional.ofNullable(configManager.getConfiguration(FairyRingConfig.CONFIG_GROUP + '.' + FairyRingConfig.CONFIG_GROUP_TAGS, fairyRingCode)).orElse("").toLowerCase(); diff --git a/runelite-client/src/main/scripts/fairyrings_sort_update.hash b/runelite-client/src/main/scripts/fairyrings_sort_update.hash new file mode 100644 index 00000000000..68dda177ddc --- /dev/null +++ b/runelite-client/src/main/scripts/fairyrings_sort_update.hash @@ -0,0 +1 @@ +7245804424EB949F248D65FB11DDA8AB75D26B7390D2F7C4BD8FABB15F2FCF62 \ No newline at end of file diff --git a/runelite-client/src/main/scripts/fairyrings_sort_update.rs2asm b/runelite-client/src/main/scripts/fairyrings_sort_update.rs2asm new file mode 100644 index 00000000000..be44b65293e --- /dev/null +++ b/runelite-client/src/main/scripts/fairyrings_sort_update.rs2asm @@ -0,0 +1,763 @@ +.id 8080 +.int_arg_count 6 +.obj_arg_count 0 + iload 2 + iconst 1 + if_icmpeq LABEL4 + jump LABEL32 +LABEL4: + get_varc_int 54 + iconst 1 + if_icmpeq LABEL11 + get_varc_int 54 + iconst 0 + if_icmpeq LABEL11 + jump LABEL14 +LABEL11: + get_varc_int 54 + set_varc_int 54 + jump LABEL16 +LABEL14: + iconst 0 + set_varc_int 54 +LABEL16: + get_varc_int + iconst 0 + if_icmplt LABEL20 + jump LABEL22 +LABEL20: + iconst 0 + set_varc_int +LABEL22: + iload 1 + iload 0 + iconst 792 + iconst 789 + iconst 790 + iconst 791 + iconst 773 + iconst 788 + invoke 31 + jump LABEL45 +LABEL32: + iconst 2266 + iconst 1 + iconst 0 + sound_synth + get_varc_int 54 + iconst 1 + if_icmpeq LABEL40 + jump LABEL43 +LABEL40: + iconst 0 + set_varc_int 54 + jump LABEL45 +LABEL43: + iconst 1 + set_varc_int 54 +LABEL45: + iconst -1 + istore 6 + iconst -1 + istore 7 + iconst -1 + istore 8 + iload 0 + if_getwidth + iconst 20 + sub + istore 9 + iload 9 + iconst 0 + if_icmple LABEL60 + jump LABEL62 +LABEL60: + iconst 143 + istore 9 +LABEL62: + iload 0 + cc_deleteall + iload 4 + cc_deleteall + iconst 17 + istore 10 + iconst 0 + istore 11 + iconst 0 + istore 12 + iconst 1 + istore 13 + iconst 1 + istore 14 + invoke 8081 + ostore 0 +LABEL78: + iload 12 + iconst 10 + if_icmplt LABEL82 + jump LABEL241 +LABEL82: + iconst 105 + iconst 73 + iconst 1297 + iload 12 + enum + istore 6 + iconst 105 + iconst 73 + iconst 1298 + iload 12 + enum + istore 8 + iconst 105 + iconst 73 + iconst 1299 + iload 12 + enum + istore 7 + iload 5 + iconst 1 + if_icmpeq LABEL104 + jump LABEL126 +LABEL104: + oload 0 + string_length + iconst 0 + if_icmpgt LABEL109 + jump LABEL125 +LABEL109: + iload 6 + if_gettext + lowercase + sconst ":" + invoke 7125 + oload 0 + iconst 0 + string_indexof_string + iconst -1 + if_icmpne LABEL120 + jump LABEL123 +LABEL120: + iconst 1 + istore 14 + jump LABEL125 +LABEL123: + iconst 0 + istore 14 +LABEL125: + iload 8 ; + iload 14 ; + sconst "fairyringFilterFavorite" ; + runelite_callback ; + istore 14 ; + pop_int ; + jump LABEL128 +LABEL126: + iconst 1 + istore 14 +LABEL128: + iload 6 + iconst -1 + if_icmpne LABEL132 + jump LABEL236 +LABEL132: + iload 7 + iconst -1 + if_icmpne LABEL136 + jump LABEL236 +LABEL136: + iload 8 + iconst -1 + if_icmpne LABEL140 + jump LABEL236 +LABEL140: + iload 6 + if_gettext + string_length + iconst 0 + if_icmpgt LABEL146 + jump LABEL227 +LABEL146: + iload 14 + iconst 1 + if_icmpeq LABEL150 + jump LABEL227 +LABEL150: + iload 6 + if_gettext + iload 9 + iconst 495 + paraheight + iconst 12 + multiply + iconst 5 + add + istore 10 + iconst 0 + iload 6 + if_sethide + iconst 0 + iload 8 + if_sethide + iconst 0 + iload 7 + if_sethide + iload 9 + iload 10 + iconst 0 + iconst 0 + iload 6 + if_setsize + iload 9 + iload 10 + iconst 0 + iconst 0 + iload 8 + if_setsize + iconst 20 + iload 11 + iconst 0 + iconst 0 + iload 6 + if_setposition + iconst 2 + iload 11 + iconst 0 + iconst 0 + iload 7 + if_setposition + iconst 20 + iload 11 + iconst 0 + iconst 0 + iload 8 + if_setposition + sconst "" + iload 8 + if_gettext + sconst "" + join_string 3 + iload 6 + if_setopbase + iconst 45 + iload 8 + iconst 16744319 + sconst "ii" + iload 6 + if_setonmouseover + iconst 45 + iload 8 + iconst 16727871 + sconst "ii" + iload 6 + if_setonmouseleave + iconst 0 + istore 13 + iload 11 + iload 10 + add + iconst 3 + add + istore 11 + jump LABEL236 +LABEL227: + iconst 1 + iload 6 + if_sethide + iconst 1 + iload 7 + if_sethide + iconst 1 + iload 8 + if_sethide +LABEL236: + iload 12 + iconst 1 + add + istore 12 + jump LABEL78 +LABEL241: + iload 13 + iconst 0 + if_icmpeq LABEL245 + jump LABEL249 +LABEL245: + iload 11 + iconst 3 + add + istore 11 +LABEL249: + iload 13 + iload 3 + if_sethide + iconst 0 + iload 11 + iconst 1 + iconst 0 + iload 4 + if_setsize + iconst -1 + istore 15 + iconst 64 + define_array 65609 + iconst 0 + istore 16 + sconst "" + ostore 2 + iconst 89 + db_findall_with_count + pop_int + db_findnext + istore 17 + iconst 0 + istore 18 +LABEL273: + iload 17 + iconst -1 + if_icmpne LABEL277 + jump LABEL360 +LABEL277: + iload 17 + iconst 364608 + iconst 0 + db_getfield + istore 15 + iload 15 + iconst -1 + if_icmpne LABEL286 + jump LABEL357 +LABEL286: + iload 5 + iconst 1 + if_icmpeq LABEL290 + jump LABEL312 +LABEL290: + oload 0 + string_length + iconst 0 + if_icmpgt LABEL295 + jump LABEL311 +LABEL295: + iload 15 + if_gettext + lowercase + sconst ":" + invoke 7125 + oload 0 + iconst 0 + string_indexof_string + iconst -1 + if_icmpne LABEL306 + jump LABEL309 +LABEL306: + iconst 1 + istore 14 + jump LABEL311 +LABEL309: + iconst 0 + istore 14 +LABEL311: + iload 17 ; + iload 14 ; + sconst "fairyringFilterDbrow" ; + runelite_callback ; + istore 14 ; + pop_int ; + jump LABEL314 +LABEL312: + iconst 1 + istore 14 +LABEL314: + iload 17 + iconst 364624 + iconst 0 + db_getfield + istore 7 + iload 15 + if_gettext + string_length + iconst 0 + if_icmpgt LABEL325 + jump LABEL347 +LABEL325: + iload 14 + iconst 1 + if_icmpeq LABEL329 + jump LABEL347 +LABEL329: + iconst 0 + iload 15 + if_sethide + iload 7 + iconst -1 + if_icmpne LABEL336 + jump LABEL339 +LABEL336: + iconst 0 + iload 7 + if_sethide +LABEL339: + iload 16 + iload 15 + set_array_int 1 + iload 16 + iconst 1 + add + istore 16 + jump LABEL357 +LABEL347: + iconst 1 + iload 15 + if_sethide + iload 7 + iconst -1 + if_icmpne LABEL354 + jump LABEL357 +LABEL354: + iconst 1 + iload 7 + if_sethide +LABEL357: + db_findnext + istore 17 + jump LABEL273 +LABEL360: + iload 16 + iconst 0 + if_icmpgt LABEL364 + jump LABEL382 +LABEL364: + get_varc_int 54 + iconst 1 + if_icmpeq LABEL368 + jump LABEL375 +LABEL368: + oload 1 + iconst 0 + iload 16 + iconst 1 + sub + invoke 1341 + jump LABEL382 +LABEL375: + oload 1 + iconst 0 + iload 16 + iconst 1 + sub + iconst 823 + invoke 1342 +LABEL382: + iload 0 + cc_deleteall +LABEL384: + iload 18 + iload 16 + if_icmplt LABEL388 + jump LABEL508 +LABEL388: + iconst 364608 + iload 18 + get_array_int 1 + iconst 0 + db_find_with_count + pop_int + db_findnext + istore 17 + iload 17 + iconst -1 + if_icmpne LABEL400 + jump LABEL410 +LABEL400: + iload 17 + iconst 364624 + iconst 0 + db_getfield + istore 7 + iload 17 + iconst 364592 + iconst 0 + db_getfield + ostore 2 +LABEL410: + iload 18 + get_array_int 1 + if_gettext + iload 9 + iconst 495 + paraheight + iconst 12 + multiply + iconst 5 + add + istore 10 + iload 7 + iconst -1 + if_icmpne LABEL425 + jump LABEL431 +LABEL425: + iconst 2 + iload 11 + iconst 0 + iconst 0 + iload 7 + if_setposition +LABEL431: + iload 9 + iload 10 + iconst 0 + iconst 0 + iload 18 + get_array_int 1 + if_setsize + iconst 20 + iload 11 + iconst 0 + iconst 0 + iload 18 + get_array_int 1 + if_setposition + iload 0 + iconst 4 + iload 18 + iconst 0 + cc_create + iload 9 + iload 10 + iconst 0 + iconst 0 + cc_setsize + iconst 20 + iload 18 + get_array_int 1 + if_gety + iconst 0 + iconst 0 + cc_setposition + iconst 495 + cc_settextfont + iconst 16727871 + cc_setcolour + iconst 1 + cc_settextshadow + iconst 0 + iconst 0 + iconst 0 + cc_settextalign + oload 2 + cc_settext + sconst "" + oload 2 + sconst "" + join_string 3 + iload 18 + get_array_int 1 + if_setopbase + iconst 85 + iload 0 + cc_getid + iconst 16744319 + sconst "iii" + iload 18 + get_array_int 1 + if_setonmouseover + iconst 85 + iload 0 + cc_getid + iconst 16727871 + sconst "iii" + iload 18 + get_array_int 1 + if_setonmouseleave + iload 11 + iload 10 + add + iconst 3 + add + istore 11 + iload 18 + iconst 1 + add + istore 18 + jump LABEL384 +LABEL508: + iconst 24969356 + if_gettext + ostore 2 + iload 5 + iconst 1 + if_icmpeq LABEL515 + jump LABEL536 +LABEL515: + oload 0 + string_length + iconst 0 + if_icmpgt LABEL520 + jump LABEL536 +LABEL520: + iconst 24969356 + if_gettext + lowercase + sconst ":" + invoke 7125 + oload 0 + iconst 0 + string_indexof_string + iconst -1 + if_icmpne LABEL531 + jump LABEL534 +LABEL531: + iconst 1 + istore 14 + jump LABEL536 +LABEL534: + iconst 0 + istore 14 +LABEL536: + oload 2 + string_length + iconst 0 + if_icmpgt LABEL541 + jump LABEL591 +LABEL541: + iload 14 + iconst 1 + if_icmpeq LABEL545 + jump LABEL591 +LABEL545: + iconst 0 + iconst 24969356 + if_sethide + oload 2 + iload 9 + iconst 495 + paraheight + iconst 12 + multiply + iconst 5 + add + istore 10 + iload 9 + iload 10 + iconst 0 + iconst 0 + iconst 24969356 + if_setsize + iconst 20 + iload 11 + iconst 0 + iconst 0 + iconst 24969356 + if_setposition + iconst 16727871 + iconst 24969356 + if_setcolour + iconst 45 + iconst -2147483645 + iconst 16744319 + sconst "ii" + iconst 24969356 + if_setonmouseover + iconst 45 + iconst -2147483645 + iconst 16727871 + sconst "ii" + iconst 24969356 + if_setonmouseleave + iload 11 + iload 10 + add + iconst 3 + add + istore 11 + jump LABEL594 +LABEL591: + iconst 1 + iconst 24969356 + if_sethide +LABEL594: + iload 11 + iconst 0 + if_icmpgt LABEL598 + jump LABEL602 +LABEL598: + iload 11 + iconst 3 + sub + istore 11 +LABEL602: + iload 0 + if_getheight + istore 10 + iload 11 + iconst 0 + if_icmple LABEL609 + jump LABEL640 +LABEL609: + iload 0 + iconst 4 + iload 18 + iconst 0 + cc_create + iconst 0 + iconst 0 + iconst 0 + iconst 0 + cc_setposition + iconst 0 + iconst 0 + iconst 1 + iconst 1 + cc_setsize + iconst 495 + cc_settextfont + iconst 16750623 + cc_setcolour + iconst 1 + cc_settextshadow + iconst 1 + iconst 1 + iconst 0 + cc_settextalign + sconst "There are no fairy rings which go to that destination which you have access to." + cc_settext + iload 18 + iconst 1 + add + istore 18 +LABEL640: + iload 11 + iload 10 + if_icmpgt LABEL644 + jump LABEL659 +LABEL644: + iconst 0 + iload 11 + iload 0 + if_setscrollsize + iload 11 + iload 10 + sub + istore 10 + get_varc_int + iload 10 + if_icmpgt LABEL656 + jump LABEL658 +LABEL656: + iload 10 + set_varc_int +LABEL658: + jump LABEL665 +LABEL659: + iconst 0 + iconst 0 + iload 0 + if_setscrollsize + iconst 0 + set_varc_int +LABEL665: + iload 1 + iload 0 + get_varc_int + invoke 72 + return diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/fairyring/FairyRingTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/fairyring/FairyRingTest.java index 2a3fee94464..893ab5e3290 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/fairyring/FairyRingTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/fairyring/FairyRingTest.java @@ -35,6 +35,6 @@ public class FairyRingTest @Test public void testFairyRingsAlphabetized() { - assertTrue(isSorted(Stream.of(FairyRings.values()).map(FairyRings::name).toArray(String[]::new))); + assertTrue(isSorted(Stream.of(FairyRing.values()).map(FairyRing::name).toArray(String[]::new))); } } diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/worldmap/FairyRingLocationTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/worldmap/FairyRingLocationTest.java index 55905036f73..005d3c74ca7 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/worldmap/FairyRingLocationTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/worldmap/FairyRingLocationTest.java @@ -28,7 +28,7 @@ import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import net.runelite.client.plugins.fairyring.FairyRings; +import net.runelite.client.plugins.fairyring.FairyRing; import static org.apache.commons.lang3.ArrayUtils.isSorted; import static org.junit.Assert.assertTrue; import org.junit.Test; @@ -44,7 +44,7 @@ public void testFairyRingsAlphabetized() @Test public void testFairyRingsInFairyRingPlugin() { - Set fairyRings = Stream.of(FairyRings.values()).map(FairyRings::name).collect(Collectors.toSet()); + Set fairyRings = Stream.of(FairyRing.values()).map(FairyRing::name).collect(Collectors.toSet()); for (FairyRingLocation r : FairyRingLocation.values()) { From cf0b31ebefab40453f11f616b4baea6d83565e08 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Tue, 30 Sep 2025 11:11:46 -0600 Subject: [PATCH 29/38] fairyring: do not allow editing tags on the fairy resistance hideout This doesn't actually save, and the script callback isn't setup for filtering it either. --- .../runelite/client/plugins/fairyring/FairyRingPlugin.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java index 721657425aa..5220418c27a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java @@ -227,8 +227,9 @@ private FairyRing getFairyRingDestination(int varbitValueDialLeft, int varbitVal @Subscribe public void onMenuEntryAdded(MenuEntryAdded event) { - if (WidgetUtil.componentToInterface(event.getActionParam1()) == InterfaceID.FAIRYRINGS_LOG && - event.getOption().equals("Use code")) + if (WidgetUtil.componentToInterface(event.getActionParam1()) == InterfaceID.FAIRYRINGS_LOG + && event.getOption().equals("Use code") + && !event.getTarget().isEmpty()) { client.getMenu().createMenuEntry(-1) .setParam0(event.getActionParam0()) From b6989a168c036ed2d73ccc96f1d2f3578bab8c12 Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Tue, 30 Sep 2025 12:42:52 -0600 Subject: [PATCH 30/38] Update Item variations to 2025-10-1 --- .../src/main/resources/item_variations.json | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/runelite-client/src/main/resources/item_variations.json b/runelite-client/src/main/resources/item_variations.json index ac9f15261f1..26b3886c6e8 100644 --- a/runelite-client/src/main/resources/item_variations.json +++ b/runelite-client/src/main/resources/item_variations.json @@ -9777,16 +9777,23 @@ ], "sanguinesti staff": [ 22323, - 22481 + 22481, + 25731, + 25733 ], "ghrazi rapier": [ 22324, - 23628 + 23628, + 25734 ], "scythe of vitur": [ 22325, 22486, - 22664 + 22664, + 25736, + 25738, + 25739, + 25741 ], "starter sword": [ 22331, @@ -10876,18 +10883,6 @@ 25728, 25729 ], - "holy sanguinesti staff": [ - 25731, - 25733 - ], - "holy scythe of vitur": [ - 25736, - 25738 - ], - "sanguine scythe of vitur": [ - 25739, - 25741 - ], "antipoison potion": [ 25758, 25759, From e5849af5867039dec136c6f8264b4383c55d8ab2 Mon Sep 17 00:00:00 2001 From: chsami Date: Wed, 1 Oct 2025 11:45:43 +0200 Subject: [PATCH 31/38] refactor(logout): fix logout delay when hotkey was set to none. --- .../plugins/microbot/util/player/Rs2Player.java | 14 ++++++-------- .../client/plugins/microbot/util/tabs/Rs2Tab.java | 8 +++++++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/player/Rs2Player.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/player/Rs2Player.java index 47e8e895055..471059be142 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/player/Rs2Player.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/player/Rs2Player.java @@ -226,9 +226,9 @@ public static void handleAnimationChanged(AnimationChanged event) { * Wait for walking */ public static void waitForWalking() { - boolean result = sleepUntilTrue(Rs2Player::isWalking, 100, 5000); + boolean result = sleepUntilTrue(Rs2Player::isMoving, 100, 5000); if (!result) return; - sleepUntil(() -> !Rs2Player.isWalking()); + sleepUntil(() -> !Rs2Player.isMoving()); } /** @@ -239,9 +239,9 @@ public static void waitForWalking() { * If the player does not start walking within this time, the method exits early. */ public static void waitForWalking(int time) { - boolean result = sleepUntilTrue(Rs2Player::isWalking, 100, time); + boolean result = sleepUntilTrue(Rs2Player::isMoving, 100, time); if (!result) return; - sleepUntil(() -> !Rs2Player.isWalking(), time); + sleepUntil(() -> !Rs2Player.isMoving(), time); } /** @@ -440,10 +440,8 @@ public static boolean isRunEnabled() { */ public static void logout() { if (!Microbot.isLoggedIn()) return; - if (Rs2Tab.getCurrentTab() != InterfaceTab.LOGOUT) { - Rs2Tab.switchToLogout(); - sleepUntil(() -> Rs2Tab.getCurrentTab() == InterfaceTab.LOGOUT); - } + + Rs2Tab.switchTo(InterfaceTab.LOGOUT); Widget currentWorldWidget = Rs2Widget.getWidget(69, 3); if (currentWorldWidget != null) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/tabs/Rs2Tab.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/tabs/Rs2Tab.java index c6310339058..44a53147f47 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/tabs/Rs2Tab.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/tabs/Rs2Tab.java @@ -64,7 +64,13 @@ public static boolean switchTo(InterfaceTab tab) { if (tab == InterfaceTab.NOTHING_SELECTED && Microbot.getVarbitValue(VarbitID.RESIZABLE_STONE_ARRANGEMENT) == 0) return false; - Rs2Keyboard.keyPress(tab.getHotkey()); + int hotkey = tab.getHotkey(); + if (hotkey == -1) { + log.warn("Tab {} does not have a hotkey assigned, cannot switch to it.", tab.getName()); + return false; + } else { + Rs2Keyboard.keyPress(hotkey); + } return sleepUntil(() -> isCurrentTab(tab)); } From 3202bfde4a270c086587cfdb90d61220314e7bc4 Mon Sep 17 00:00:00 2001 From: RuneLite updater Date: Wed, 1 Oct 2025 10:12:32 +0000 Subject: [PATCH 32/38] Release 1.11.19 --- cache/pom.xml | 2 +- pom.xml | 4 ++-- runelite-api/pom.xml | 2 +- runelite-client/pom.xml | 2 +- runelite-jshell/pom.xml | 2 +- runelite-maven-plugin/pom.xml | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cache/pom.xml b/cache/pom.xml index 36f69db4e5e..2919fe97123 100644 --- a/cache/pom.xml +++ b/cache/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.11.19-SNAPSHOT + 1.11.19 cache diff --git a/pom.xml b/pom.xml index bb344a2f9db..446f8178905 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.11.19-SNAPSHOT + 1.11.19 pom RuneLite @@ -61,7 +61,7 @@ https://github.com/runelite/runelite scm:git:git://github.com/runelite/runelite scm:git:git@github.com:runelite/runelite - HEAD + runelite-parent-1.11.19 diff --git a/runelite-api/pom.xml b/runelite-api/pom.xml index e749c196a4d..2d05b197253 100644 --- a/runelite-api/pom.xml +++ b/runelite-api/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.11.19-SNAPSHOT + 1.11.19 runelite-api diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index c2e83c58062..9ebd69fae64 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.11.19-SNAPSHOT + 1.11.19 client diff --git a/runelite-jshell/pom.xml b/runelite-jshell/pom.xml index 0bc5ac60d45..ff6afb60d4c 100644 --- a/runelite-jshell/pom.xml +++ b/runelite-jshell/pom.xml @@ -30,7 +30,7 @@ net.runelite runelite-parent - 1.11.19-SNAPSHOT + 1.11.19 jshell diff --git a/runelite-maven-plugin/pom.xml b/runelite-maven-plugin/pom.xml index 96ec21fae17..e6170569676 100644 --- a/runelite-maven-plugin/pom.xml +++ b/runelite-maven-plugin/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.11.19-SNAPSHOT + 1.11.19 runelite-maven-plugin From 3a42ef384be6ce4a39663d0027c8bd9b9e9c89e9 Mon Sep 17 00:00:00 2001 From: RuneLite updater Date: Wed, 1 Oct 2025 10:12:36 +0000 Subject: [PATCH 33/38] Bump for 1.11.20-SNAPSHOT [ci skip] --- cache/pom.xml | 2 +- pom.xml | 4 ++-- runelite-api/pom.xml | 2 +- runelite-client/pom.xml | 2 +- runelite-jshell/pom.xml | 2 +- runelite-maven-plugin/pom.xml | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cache/pom.xml b/cache/pom.xml index 2919fe97123..30f05e713af 100644 --- a/cache/pom.xml +++ b/cache/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.11.19 + 1.11.20-SNAPSHOT cache diff --git a/pom.xml b/pom.xml index 446f8178905..f1605f38489 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.11.19 + 1.11.20-SNAPSHOT pom RuneLite @@ -61,7 +61,7 @@ https://github.com/runelite/runelite scm:git:git://github.com/runelite/runelite scm:git:git@github.com:runelite/runelite - runelite-parent-1.11.19 + HEAD diff --git a/runelite-api/pom.xml b/runelite-api/pom.xml index 2d05b197253..199345516a3 100644 --- a/runelite-api/pom.xml +++ b/runelite-api/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.11.19 + 1.11.20-SNAPSHOT runelite-api diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index 9ebd69fae64..c5d08bd883e 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.11.19 + 1.11.20-SNAPSHOT client diff --git a/runelite-jshell/pom.xml b/runelite-jshell/pom.xml index ff6afb60d4c..3797f812a7e 100644 --- a/runelite-jshell/pom.xml +++ b/runelite-jshell/pom.xml @@ -30,7 +30,7 @@ net.runelite runelite-parent - 1.11.19 + 1.11.20-SNAPSHOT jshell diff --git a/runelite-maven-plugin/pom.xml b/runelite-maven-plugin/pom.xml index e6170569676..db6db0ed655 100644 --- a/runelite-maven-plugin/pom.xml +++ b/runelite-maven-plugin/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.11.19 + 1.11.20-SNAPSHOT runelite-maven-plugin From 31f3ff31afa0c952943485a74c70808cce8a12ea Mon Sep 17 00:00:00 2001 From: chsami Date: Wed, 1 Oct 2025 13:30:46 +0200 Subject: [PATCH 34/38] refactor: update equipment checks and improve inventory setup handling + moved getHeadIcon to Rs2NpcModel --- .../configs/SpecialAttackConfigs.java | 2 +- .../ui/InventorySetupsPluginPanel.java | 51 +++++-------------- .../examples/ExamplePrePostScheduleTasks.java | 6 +-- .../microbot/util/npc/Rs2NpcModel.java | 30 ++++++++++- 4 files changed, 45 insertions(+), 44 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/configs/SpecialAttackConfigs.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/configs/SpecialAttackConfigs.java index 6563ceeb06e..ca9d5c7569b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/configs/SpecialAttackConfigs.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/configs/SpecialAttackConfigs.java @@ -85,7 +85,7 @@ public boolean useSpecWeapon() { public boolean useSpecWeapon(String name, int specEnergy, boolean is2H) { if (name.isEmpty()) return false; - if (Rs2Equipment.isWearingShield() && is2H && Rs2Inventory.isFull()) return false; + if (Rs2Equipment.isWearing(EquipmentInventorySlot.SHIELD) && is2H && Rs2Inventory.isFull()) return false; if (currentEquipment == null) { currentEquipment = new ArrayList<>(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java index bfac6f329e4..88ab265e515 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/inventorysetups/ui/InventorySetupsPluginPanel.java @@ -24,33 +24,11 @@ */ package net.runelite.client.plugins.microbot.inventorysetups.ui; -import net.runelite.api.gameval.InterfaceID; -import net.runelite.client.plugins.microbot.inventorysetups.InventorySetupUtilities; -import net.runelite.client.plugins.microbot.inventorysetups.InventorySetup; -import net.runelite.client.plugins.microbot.inventorysetups.InventorySetupsItem; -import net.runelite.client.plugins.microbot.inventorysetups.InventorySetupsPanelViewID; -import net.runelite.client.plugins.microbot.inventorysetups.MInventorySetupsPlugin; -import static net.runelite.client.plugins.microbot.inventorysetups.MInventorySetupsPlugin.CONFIG_KEY_PANEL_VIEW; -import static net.runelite.client.plugins.microbot.inventorysetups.MInventorySetupsPlugin.CONFIG_KEY_SECTION_MODE; -import static net.runelite.client.plugins.microbot.inventorysetups.MInventorySetupsPlugin.CONFIG_KEY_UNASSIGNED_MAXIMIZED; -import static net.runelite.client.plugins.microbot.inventorysetups.MInventorySetupsPlugin.TUTORIAL_LINK; - -import net.runelite.client.plugins.microbot.inventorysetups.InventorySetupsSection; -import net.runelite.client.plugins.microbot.inventorysetups.InventorySetupsSlotID; -import net.runelite.client.plugins.microbot.inventorysetups.InventorySetupsSortingID; - -import java.awt.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import net.runelite.client.plugins.microbot.inventorysetups.serialization.InventorySetupPortable; import lombok.Getter; import lombok.Setter; import net.runelite.client.game.ItemManager; +import net.runelite.client.plugins.microbot.inventorysetups.*; +import net.runelite.client.plugins.microbot.inventorysetups.serialization.InventorySetupPortable; import net.runelite.client.ui.ColorScheme; import net.runelite.client.ui.PluginPanel; import net.runelite.client.ui.components.IconTextField; @@ -58,23 +36,22 @@ import net.runelite.client.util.ImageUtil; import net.runelite.client.util.LinkBrowser; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.ImageIcon; -import javax.swing.JLabel; -import javax.swing.JMenuItem; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JScrollPane; -import javax.swing.SwingUtilities; +import javax.swing.*; import javax.swing.border.EmptyBorder; +import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; +import java.util.List; +import java.util.*; import java.util.stream.Collectors; +import static net.runelite.api.gameval.InventoryID.INV; +import static net.runelite.api.gameval.InventoryID.WORN; +import static net.runelite.client.plugins.microbot.inventorysetups.MInventorySetupsPlugin.*; + // The main panel of the plugin that contains all viewing components public class InventorySetupsPluginPanel extends PluginPanel { @@ -804,8 +781,8 @@ public void doHighlighting() return; } - final List inv = plugin.getNormalizedContainer(InterfaceID.INVENTORY); - final List eqp = plugin.getNormalizedContainer(InterfaceID.EQUIPMENT); + final List inv = plugin.getNormalizedContainer(INV); + final List eqp = plugin.getNormalizedContainer(WORN); highlightContainerPanel(inv, inventoryPanel); highlightContainerPanel(eqp, equipmentPanel); @@ -830,13 +807,13 @@ public void highlightContainerPanel(final List container, f public void highlightInventory() { - final List inv = plugin.getNormalizedContainer(InterfaceID.INVENTORY); + final List inv = plugin.getNormalizedContainer(INV); highlightContainerPanel(inv, inventoryPanel); } public void highlightEquipment() { - final List eqp = plugin.getNormalizedContainer(InterfaceID.EQUIPMENT); + final List eqp = plugin.getNormalizedContainer(WORN); highlightContainerPanel(eqp, equipmentPanel); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/examples/ExamplePrePostScheduleTasks.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/examples/ExamplePrePostScheduleTasks.java index d1696ca711c..e56b64c7829 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/examples/ExamplePrePostScheduleTasks.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/pluginscheduler/tasks/examples/ExamplePrePostScheduleTasks.java @@ -12,11 +12,9 @@ import net.runelite.client.plugins.microbot.util.inventory.Rs2Inventory; import net.runelite.client.plugins.microbot.util.walker.Rs2Walker; -import static net.runelite.client.plugins.microbot.util.Global.sleepUntil; - import java.util.concurrent.CompletableFuture; -import javax.net.ssl.KeyManager; +import static net.runelite.client.plugins.microbot.util.Global.sleepUntil; /** * Example implementation showing how to extend {@link AbstractPrePostScheduleTasks} @@ -164,7 +162,7 @@ private boolean prepareBasicSetup() { Rs2Bank.depositAll(); sleepUntil(() -> Rs2Inventory.isEmpty(), 5000); Rs2Bank.depositEquipment(); - sleepUntil(() -> Rs2Equipment.isNaked(), 5000); + sleepUntil(() -> !Rs2Equipment.isWearing(), 5000); // TODO: Add your plugin's specific equipment and item withdrawal logic here // Example: diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/npc/Rs2NpcModel.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/npc/Rs2NpcModel.java index 3e213260a48..0f3245c9767 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/npc/Rs2NpcModel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/npc/Rs2NpcModel.java @@ -2,6 +2,7 @@ import lombok.EqualsAndHashCode; import lombok.Getter; +import net.runelite.api.HeadIcon; import net.runelite.api.NPC; import net.runelite.api.NPCComposition; import net.runelite.api.NpcOverrides; @@ -11,8 +12,6 @@ import org.jetbrains.annotations.Nullable; import java.util.Arrays; -import java.util.Objects; -import java.util.function.BiPredicate; import java.util.function.Predicate; @Getter @@ -164,4 +163,31 @@ public static Predicate matches(boolean exact, String... names) { Arrays.stream(names).anyMatch(s -> name.contains(s.toLowerCase())); }; } + + /** + * Gets the overhead prayer icon of the NPC, if any. + * @return + */ + public HeadIcon getHeadIcon() { + if (runeliteNpc == null) { + return null; + } + + if (runeliteNpc.getOverheadSpriteIds() == null) { + Microbot.log("Failed to find the correct overhead prayer."); + return null; + } + + for (int i = 0; i < runeliteNpc.getOverheadSpriteIds().length; i++) { + int overheadSpriteId = runeliteNpc.getOverheadSpriteIds()[i]; + + if (overheadSpriteId == -1) continue; + + return HeadIcon.values()[overheadSpriteId]; + } + + Microbot.log("Found overheadSpriteIds: " + Arrays.toString(runeliteNpc.getOverheadSpriteIds()) + " but failed to find valid overhead prayer."); + + return null; + } } From 19b899f4aaf9f31ca2e037d8115a713245bccbce Mon Sep 17 00:00:00 2001 From: chsami Date: Wed, 1 Oct 2025 13:31:01 +0200 Subject: [PATCH 35/38] docs --- docs/development.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/development.md b/docs/development.md index 30d47eb94b5..525e0f8b20c 100644 --- a/docs/development.md +++ b/docs/development.md @@ -135,7 +135,7 @@ import net.runelite.client.plugins.microbot.Microbot; import net.runelite.client.plugins.microbot.Script; import net.runelite.client.plugins.microbot.util.camera.Rs2Camera; import net.runelite.client.plugins.microbot.util.inventory.Rs2Inventory; -import net.runelite.client.plugins.microbot.util.math.Random; +import net.runelite.client.plugins.microbot.util.math.Rs2Random; import net.runelite.client.plugins.microbot.util.npc.Rs2Npc; import net.runelite.client.plugins.microbot.util.player.Rs2Player; From eb198862dc49c2f60cf4a5836da4cf40ae4c2335 Mon Sep 17 00:00:00 2001 From: chsami Date: Wed, 1 Oct 2025 13:40:10 +0200 Subject: [PATCH 36/38] refactor: clean up imports and remove unused annotations --- runelite-client/pom.xml | 5 --- ...bleExamplePrePostScheduleRequirements.java | 44 +++++++++---------- .../microbot/util/world/Rs2WorldUtil.java | 2 - 3 files changed, 21 insertions(+), 30 deletions(-) diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index 48ea9813a6a..26e8fb717aa 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -70,11 +70,6 @@ cfr 0.152 - - com.microsoft.signalr - signalr - 7.0.4 - com.fasterxml.jackson.core jackson-core diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/VoxPlugins/schedulable/example/SchedulableExamplePrePostScheduleRequirements.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/VoxPlugins/schedulable/example/SchedulableExamplePrePostScheduleRequirements.java index 1644a8d90c9..58183a098a6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/VoxPlugins/schedulable/example/SchedulableExamplePrePostScheduleRequirements.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/VoxPlugins/schedulable/example/SchedulableExamplePrePostScheduleRequirements.java @@ -1,48 +1,46 @@ package net.runelite.client.plugins.microbot.VoxPlugins.schedulable.example; -import net.runelite.client.plugins.microbot.util.inventory.Rs2Inventory; -import net.runelite.client.plugins.microbot.util.bank.Rs2Bank; -import net.runelite.client.plugins.microbot.util.magic.Runes; - -import java.time.Duration; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import io.reactivex.rxjava3.functions.BooleanSupplier; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import net.runelite.api.EquipmentInventorySlot; +import net.runelite.api.coords.WorldArea; import net.runelite.api.coords.WorldPoint; import net.runelite.api.gameval.ItemID; - import net.runelite.client.plugins.microbot.VoxPlugins.schedulable.example.enums.UnifiedLocation; import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.PrePostScheduleRequirements; import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.data.ItemRequirementCollection; import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.enums.RequirementPriority; +import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.enums.RequirementType; import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.enums.TaskContext; +import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.SpellbookRequirement; +import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.collection.LootRequirement; +import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.conditional.ConditionalRequirement; import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.item.ItemRequirement; import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.location.LocationRequirement; -import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.collection.LootRequirement; -import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.SpellbookRequirement; +import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.logical.OrRequirement; +import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.shop.ShopItemRequirement; import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.shop.ShopRequirement; import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.shop.models.ShopOperation; -import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.shop.ShopItemRequirement; -import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.enums.RequirementType; -import net.runelite.client.plugins.microbot.util.shop.models.Rs2ShopItem; -import net.runelite.client.plugins.microbot.util.shop.models.Rs2ShopType; -import net.runelite.client.plugins.microbot.util.shop.StoreLocations; -import net.runelite.api.coords.WorldArea; +import net.runelite.client.plugins.microbot.util.bank.Rs2Bank; import net.runelite.client.plugins.microbot.util.bank.enums.BankLocation; import net.runelite.client.plugins.microbot.util.equipment.Rs2Equipment; import net.runelite.client.plugins.microbot.util.grandexchange.models.TimeSeriesInterval; import net.runelite.client.plugins.microbot.util.grounditem.models.Rs2SpawnLocation; -import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.logical.OrRequirement; -import net.runelite.client.plugins.microbot.pluginscheduler.tasks.requirements.requirement.conditional.ConditionalRequirement; -import net.runelite.client.plugins.microbot.util.magic.Rs2Staff; +import net.runelite.client.plugins.microbot.util.inventory.Rs2Inventory; import net.runelite.client.plugins.microbot.util.magic.Rs2Spellbook; +import net.runelite.client.plugins.microbot.util.magic.Rs2Staff; +import net.runelite.client.plugins.microbot.util.magic.Runes; +import net.runelite.client.plugins.microbot.util.shop.StoreLocations; +import net.runelite.client.plugins.microbot.util.shop.models.Rs2ShopItem; +import net.runelite.client.plugins.microbot.util.shop.models.Rs2ShopType; + +import java.time.Duration; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.BooleanSupplier; /** * Example implementation of PrePostScheduleRequirements for the SchedulableExample plugin. diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/world/Rs2WorldUtil.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/world/Rs2WorldUtil.java index 5d8d80099d5..631e5150035 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/world/Rs2WorldUtil.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/world/Rs2WorldUtil.java @@ -18,7 +18,6 @@ import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; -import io.reactivex.rxjava3.annotations.Nullable; import static net.runelite.client.plugins.microbot.util.Global.sleepGaussian; import static net.runelite.client.plugins.microbot.util.Global.sleepUntil; @@ -50,7 +49,6 @@ public class Rs2WorldUtil { * @param worldId The world ID to check accessibility for * @return true if the player can access the world, false otherwise */ - @Nullable public static boolean canAccessWorld(int worldId) { try { if (worldId == -1){ From 3ca1fa4685db20cc6a0703ee84ff1483eee00550 Mon Sep 17 00:00:00 2001 From: chsami Date: Wed, 1 Oct 2025 13:44:39 +0200 Subject: [PATCH 37/38] refactor: clean up imports and remove unused annotations --- .../plugins/screenshot/ScreenshotPlugin.java | 61 ++++++++----------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java index 10bcf2c7425..b920543120f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java @@ -29,44 +29,15 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.inject.Provides; -import java.awt.Image; -import java.awt.image.BufferedImage; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.util.Date; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.ScheduledExecutorService; -import java.util.function.Consumer; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; -import net.runelite.api.Actor; -import net.runelite.api.ChatMessageType; -import net.runelite.api.Client; -import net.runelite.api.GameState; -import net.runelite.api.Player; -import net.runelite.api.ScriptID; +import net.runelite.api.*; import net.runelite.api.annotations.Component; -import net.runelite.api.events.ActorDeath; -import net.runelite.api.events.AnimationChanged; -import net.runelite.api.events.ChatMessage; -import net.runelite.api.events.GameTick; -import net.runelite.api.events.PostClientTick; -import net.runelite.api.events.ScriptCallbackEvent; -import net.runelite.api.events.ScriptPreFired; -import net.runelite.api.events.WidgetLoaded; +import net.runelite.api.events.*; import net.runelite.api.gameval.AnimationID; import net.runelite.api.gameval.InterfaceID; import net.runelite.api.gameval.VarClientID; import net.runelite.api.gameval.VarbitID; import net.runelite.api.widgets.Widget; -import static net.runelite.client.RuneLite.SCREENSHOT_DIR; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; @@ -78,12 +49,30 @@ import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.DrawManager; import net.runelite.client.ui.NavigationButton; -import net.runelite.client.util.HotkeyListener; -import net.runelite.client.util.ImageCapture; -import net.runelite.client.util.ImageUtil; -import net.runelite.client.util.LinkBrowser; -import net.runelite.client.util.Text; +import net.runelite.client.ui.overlay.Overlay; +import net.runelite.client.util.*; import org.apache.commons.lang3.StringUtils; +import net.runelite.client.ui.overlay.Overlay; +import net.runelite.client.ui.overlay.OverlayManager; + +import javax.inject.Inject; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.Date; +import java.util.Map; +import java.util.Queue; +import java.util.Set; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.ScheduledExecutorService; +import java.util.function.Consumer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import static net.runelite.client.RuneLite.SCREENSHOT_DIR; @PluginDescriptor( name = "Screenshot", From 748f086b7eda29f1a6604ebd83fd8e88381ebc74 Mon Sep 17 00:00:00 2001 From: chsami Date: Wed, 1 Oct 2025 13:51:37 +0200 Subject: [PATCH 38/38] refactor: reorganize imports and streamline event handling in ScreenshotPlugin --- .../client/plugins/screenshot/ScreenshotPlugin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java index b920543120f..16cf5c887c1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java @@ -50,10 +50,9 @@ import net.runelite.client.ui.DrawManager; import net.runelite.client.ui.NavigationButton; import net.runelite.client.ui.overlay.Overlay; +import net.runelite.client.ui.overlay.OverlayManager; import net.runelite.client.util.*; import org.apache.commons.lang3.StringUtils; -import net.runelite.client.ui.overlay.Overlay; -import net.runelite.client.ui.overlay.OverlayManager; import javax.inject.Inject; import java.awt.*; @@ -154,7 +153,8 @@ enum KillType @Inject private Client client; - + @Inject + private OverlayManager overlayManager; @Inject private ClientUI clientUi;