From a7265f5996d7112cc2df9b279ca49e1ce0a02ed2 Mon Sep 17 00:00:00 2001 From: Hydrox6 Date: Sat, 25 Apr 2020 15:21:42 +0100 Subject: [PATCH 01/13] api: correct pearl fly fishing and barbarian rod animations Each of the pearl rods have 2 animation IDs, with one of them showing the casting of the rod. This casting animation is used by the normal and oily rods. However, for whatever reason, the Fly fishing and Barbarian rods both use the non-casting animation whilst active. --- runelite-api/src/main/java/net/runelite/api/AnimationID.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/AnimationID.java b/runelite-api/src/main/java/net/runelite/api/AnimationID.java index c4ba1f6163..2657f697b1 100644 --- a/runelite-api/src/main/java/net/runelite/api/AnimationID.java +++ b/runelite-api/src/main/java/net/runelite/api/AnimationID.java @@ -113,8 +113,8 @@ public final class AnimationID public static final int FISHING_BAREHAND_CAUGHT_TUNA_1 = 6710; public static final int FISHING_BAREHAND_CAUGHT_TUNA_2 = 6711; public static final int FISHING_PEARL_ROD = 8188; - public static final int FISHING_PEARL_FLY_ROD = 8189; - public static final int FISHING_PEARL_BARBARIAN_ROD = 8190; + public static final int FISHING_PEARL_FLY_ROD = 8192; + public static final int FISHING_PEARL_BARBARIAN_ROD = 8193; public static final int FISHING_PEARL_OILY_ROD = 6932; public static final int MINING_BRONZE_PICKAXE = 625; public static final int MINING_IRON_PICKAXE = 626; From d85a72da0f2a7114e85453e7c81b52726fa05e3d Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 26 Apr 2020 11:56:39 -0400 Subject: [PATCH 02/13] runelite: log startup failures as errors --- runelite-client/src/main/java/net/runelite/client/RuneLite.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLite.java b/runelite-client/src/main/java/net/runelite/client/RuneLite.java index 463f93b639..b9304a11e6 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -274,7 +274,7 @@ public class RuneLite } catch (Exception e) { - log.warn("Failure during startup", e); + log.error("Failure during startup", e); SwingUtilities.invokeLater(() -> new FatalErrorDialog("RuneLite has encountered an unexpected error during startup.") .open()); From 62e05610a0fd15e7f433c27a3c5d47550b68646c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Boutet?= Date: Sun, 26 Apr 2020 12:58:14 -0400 Subject: [PATCH 03/13] idlenotifier: Add bolt tip attaching animations --- .../src/main/java/net/runelite/api/AnimationID.java | 10 +++++++++- .../plugins/idlenotifier/IdleNotifierPlugin.java | 8 ++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/runelite-api/src/main/java/net/runelite/api/AnimationID.java b/runelite-api/src/main/java/net/runelite/api/AnimationID.java index 2657f697b1..ca40b93a7e 100644 --- a/runelite-api/src/main/java/net/runelite/api/AnimationID.java +++ b/runelite-api/src/main/java/net/runelite/api/AnimationID.java @@ -72,8 +72,16 @@ public final class AnimationID public static final int FLETCHING_STRING_YEW_LONGBOW = 6688; public static final int FLETCHING_STRING_MAGIC_SHORTBOW = 6683; public static final int FLETCHING_STRING_MAGIC_LONGBOW = 6689; - public static final int FLETCHING_ATTACH_FEATHERS_TO_ARROWSHAFT = 8481; + public static final int FLETCHING_ATTACH_BOLT_TIPS_TO_BRONZE_BOLT = 8472; + public static final int FLETCHING_ATTACH_BOLT_TIPS_TO_IRON_BROAD_BOLT = 8473; + public static final int FLETCHING_ATTACH_BOLT_TIPS_TO_BLURITE_BOLT = 8474; + public static final int FLETCHING_ATTACH_BOLT_TIPS_TO_STEEL_BOLT = 8475; + public static final int FLETCHING_ATTACH_BOLT_TIPS_TO_MITHRIL_BOLT = 8476; + public static final int FLETCHING_ATTACH_BOLT_TIPS_TO_ADAMANT_BOLT = 8477; + public static final int FLETCHING_ATTACH_BOLT_TIPS_TO_RUNE_BOLT = 8478; + public static final int FLETCHING_ATTACH_BOLT_TIPS_TO_DRAGON_BOLT = 8479; public static final int FLETCHING_ATTACH_HEADS = 8480; + public static final int FLETCHING_ATTACH_FEATHERS_TO_ARROWSHAFT = 8481; public static final int GEM_CUTTING_OPAL = 890; public static final int GEM_CUTTING_JADE = 891; public static final int GEM_CUTTING_REDTOPAZ = 892; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java index 6dddea5d78..5c4b78d3a2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java @@ -175,6 +175,14 @@ public class IdleNotifierPlugin extends Plugin case FLETCHING_STRING_MAGIC_LONGBOW: case FLETCHING_ATTACH_FEATHERS_TO_ARROWSHAFT: case FLETCHING_ATTACH_HEADS: + case FLETCHING_ATTACH_BOLT_TIPS_TO_BRONZE_BOLT: + case FLETCHING_ATTACH_BOLT_TIPS_TO_IRON_BROAD_BOLT: + case FLETCHING_ATTACH_BOLT_TIPS_TO_BLURITE_BOLT: + case FLETCHING_ATTACH_BOLT_TIPS_TO_STEEL_BOLT: + case FLETCHING_ATTACH_BOLT_TIPS_TO_MITHRIL_BOLT: + case FLETCHING_ATTACH_BOLT_TIPS_TO_ADAMANT_BOLT: + case FLETCHING_ATTACH_BOLT_TIPS_TO_RUNE_BOLT: + case FLETCHING_ATTACH_BOLT_TIPS_TO_DRAGON_BOLT: /* Smithing(Anvil, Furnace, Cannonballs */ case SMITHING_ANVIL: case SMITHING_SMELTING: From a20ae62995e10e0ba3e1deb24db124d67160012f Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 26 Apr 2020 12:59:01 -0400 Subject: [PATCH 04/13] combat level plugin: use script events for attack level range hook --- .../main/java/net/runelite/api/ScriptID.java | 6 + .../combatlevel/CombatLevelPlugin.java | 10 +- .../src/main/scripts/PvpWidgetBuilder.hash | 1 - .../src/main/scripts/PvpWidgetBuilder.rs2asm | 125 ------------------ 4 files changed, 11 insertions(+), 131 deletions(-) delete mode 100644 runelite-client/src/main/scripts/PvpWidgetBuilder.hash delete mode 100644 runelite-client/src/main/scripts/PvpWidgetBuilder.rs2asm diff --git a/runelite-api/src/main/java/net/runelite/api/ScriptID.java b/runelite-api/src/main/java/net/runelite/api/ScriptID.java index 8aaff6d5ef..9e8468687b 100644 --- a/runelite-api/src/main/java/net/runelite/api/ScriptID.java +++ b/runelite-api/src/main/java/net/runelite/api/ScriptID.java @@ -274,4 +274,10 @@ public final class ScriptID */ @ScriptArguments(integer = 16) public static final int BANKMAIN_SEARCH_REFRESH = 283; + + /** + * Called to update the PVP widget (wilderness level/protection) + */ + @ScriptArguments(integer = 3) + public static final int PVP_WIDGET_BUILDER = 388; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/combatlevel/CombatLevelPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/combatlevel/CombatLevelPlugin.java index b2b4944521..0d401d8e13 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/combatlevel/CombatLevelPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/combatlevel/CombatLevelPlugin.java @@ -33,16 +33,17 @@ import javax.inject.Inject; import net.runelite.api.Client; import net.runelite.api.Experience; import net.runelite.api.GameState; +import net.runelite.api.ScriptID; import net.runelite.api.Skill; import net.runelite.api.WorldType; -import net.runelite.client.events.ConfigChanged; import net.runelite.api.events.GameTick; -import net.runelite.api.events.ScriptCallbackEvent; +import net.runelite.api.events.ScriptPostFired; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; +import net.runelite.client.events.ConfigChanged; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.overlay.OverlayManager; @@ -162,10 +163,9 @@ public class CombatLevelPlugin extends Plugin } @Subscribe - public void onScriptCallbackEvent(ScriptCallbackEvent event) + public void onScriptPostFired(ScriptPostFired scriptPostFired) { - if (config.wildernessAttackLevelRange() - && "wildernessWidgetTextSet".equals(event.getEventName())) + if (scriptPostFired.getScriptId() == ScriptID.PVP_WIDGET_BUILDER && config.wildernessAttackLevelRange()) { appendAttackLevelRangeText(); } diff --git a/runelite-client/src/main/scripts/PvpWidgetBuilder.hash b/runelite-client/src/main/scripts/PvpWidgetBuilder.hash deleted file mode 100644 index 3e4a898362..0000000000 --- a/runelite-client/src/main/scripts/PvpWidgetBuilder.hash +++ /dev/null @@ -1 +0,0 @@ -1DC252B93DF0D948329C4EAD151FA9406A17D3CF2C5C3EC0317BF4DCD1B3811A \ No newline at end of file diff --git a/runelite-client/src/main/scripts/PvpWidgetBuilder.rs2asm b/runelite-client/src/main/scripts/PvpWidgetBuilder.rs2asm deleted file mode 100644 index 4e85d37ecd..0000000000 --- a/runelite-client/src/main/scripts/PvpWidgetBuilder.rs2asm +++ /dev/null @@ -1,125 +0,0 @@ -.id 388 -.int_stack_count 1 -.string_stack_count 0 -.int_var_count 3 -.string_var_count 0 - invoke 384 - istore 1 - invoke 1138 - istore 2 - iload 2 - iconst 1 - if_icmpeq LABEL8 - jump LABEL80 -LABEL8: - get_varp 1676 - iconst 4 - if_icmpgt LABEL12 - jump LABEL31 -LABEL12: - iload 1 - iconst 0 - if_icmpgt LABEL16 - jump LABEL27 -LABEL16: - get_varbit 5954 - iconst 1 - if_icmpeq LABEL20 - jump LABEL27 -LABEL20: - sconst "Level: " - iload 1 - tostring - join_string 2 - iload 0 - if_settext - jump LABEL30 -LABEL27: - sconst "Deadman" - iload 0 - if_settext -LABEL30: - jump LABEL79 -LABEL31: - get_varbit 4965 - iconst 0 - if_icmpgt LABEL35 - jump LABEL45 -LABEL35: - sconst "Protection" - iload 0 - if_settext - iconst 0 - iconst 13 - iconst 1 - iconst 2 - iload 0 - if_setposition - jump LABEL79 -LABEL45: - iload 1 - iconst 0 - if_icmpgt LABEL49 - jump LABEL60 -LABEL49: - get_varbit 5954 - iconst 1 - if_icmpeq LABEL53 - jump LABEL60 -LABEL53: - sconst "Level: " - iload 1 - tostring - join_string 2 - iload 0 - if_settext - jump LABEL79 -LABEL60: - get_varc_int 78 - iconst 1 - if_icmpeq LABEL64 - jump LABEL68 -LABEL64: - sconst "Guarded" - iload 0 - if_settext - jump LABEL79 -LABEL68: - get_varc_int 78 - iconst 2 - if_icmpeq LABEL72 - jump LABEL76 -LABEL72: - sconst "No PvP" - iload 0 - if_settext - jump LABEL79 -LABEL76: - sconst "Deadman" - iload 0 - if_settext -LABEL79: - jump LABEL94 -LABEL80: - iload 1 - iconst 0 - if_icmpgt LABEL84 - jump LABEL91 -LABEL84: - sconst "Level: " - iload 1 - tostring - join_string 2 - iload 0 - if_settext - jump LABEL94 -LABEL91: - sconst "" - iload 0 - if_settext -LABEL94: - iload 1 - invoke 387 - sconst "wildernessWidgetTextSet" ; set callback name - runelite_callback ; invoke callback - return From 1e679fd385717da44cf6b92ac36b3bb2be8642cc Mon Sep 17 00:00:00 2001 From: RansomTime <47819665+RansomTime@users.noreply.github.com> Date: Sun, 26 Apr 2020 19:43:54 +0100 Subject: [PATCH 05/13] cluescrolls: Clarify West Ardougne Church clue location (#11238) --- .../runelite/client/plugins/cluescrolls/clues/EmoteClue.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java index 4706d16cf5..36c6d814b0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java @@ -155,7 +155,7 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu new EmoteClue("Spin in Draynor Manor by the fountain. Equip an iron platebody, studded leather chaps and a bronze full helmet.", "Draynor Manor", DRAYNOR_MANOR_BY_THE_FOUNTAIN, new WorldPoint(3088, 3336, 0), SPIN, item(IRON_PLATEBODY), item(STUDDED_CHAPS), item(BRONZE_FULL_HELM)), new EmoteClue("Spin in front of the Soul altar. Beware of double agents! Equip a dragon pickaxe, helm of neitiznot and a pair of rune boots.", "Soul altar", SOUL_ALTAR, new WorldPoint(1815, 3856, 0), SPIN, any("Dragon or Crystal pickaxe", item(DRAGON_PICKAXE), item(DRAGON_PICKAXE_12797), item(INFERNAL_PICKAXE), item(INFERNAL_PICKAXE_UNCHARGED), item(DRAGON_PICKAXEOR), item(CRYSTAL_PICKAXE), item(CRYSTAL_PICKAXE_INACTIVE)), item(HELM_OF_NEITIZNOT), item(RUNE_BOOTS)), new EmoteClue("Spin in the Varrock Castle courtyard. Equip a black axe, a coif and a ruby ring.", "Varrock Castle", OUTSIDE_VARROCK_PALACE_COURTYARD, new WorldPoint(3213, 3463, 0), SPIN, item(BLACK_AXE), item(COIF), item(RUBY_RING)), - new EmoteClue("Spin in West Ardougne Church. Equip a dragon spear and red dragonhide chaps.", "Ardougne", CHAPEL_IN_WEST_ARDOUGNE, new WorldPoint(2530, 3290, 0), SPIN, item(DRAGON_SPEAR), item(RED_DHIDE_CHAPS)), + new EmoteClue("Spin in West Ardougne Church. Equip a dragon spear and red dragonhide chaps.", "West Ardougne Church", CHAPEL_IN_WEST_ARDOUGNE, new WorldPoint(2530, 3290, 0), SPIN, item(DRAGON_SPEAR), item(RED_DHIDE_CHAPS)), new EmoteClue("Spin on the bridge by the Barbarian Village. Salute before you talk to me. Equip purple gloves, a steel kiteshield and a mithril full helmet.", "Barbarian Village", EAST_OF_THE_BARBARIAN_VILLAGE_BRIDGE, new WorldPoint(3105, 3420, 0), SPIN, SALUTE, item(PURPLE_GLOVES), item(STEEL_KITESHIELD), item(MITHRIL_FULL_HELM)), new EmoteClue("Stamp in the Enchanted valley west of the waterfall. Beware of double agents! Equip a dragon axe.", "Enchanted Valley", NORTHWESTERN_CORNER_OF_THE_ENCHANTED_VALLEY, new WorldPoint(3030, 4522, 0), STAMP, item(DRAGON_AXE)), new EmoteClue("Think in middle of the wheat field by the Lumbridge mill. Equip a blue gnome robetop, a turquoise gnome robe bottom and an oak shortbow.", "Lumbridge mill", WHEAT_FIELD_NEAR_THE_LUMBRIDGE_WINDMILL, new WorldPoint(3159, 3298, 0), THINK, item(BLUE_ROBE_TOP), item(TURQUOISE_ROBE_BOTTOMS), item(OAK_SHORTBOW)), From 9226db8e055e8ef72fc9592b56d10cef28511a77 Mon Sep 17 00:00:00 2001 From: Aaron King Date: Sun, 26 Apr 2020 15:29:03 -0600 Subject: [PATCH 06/13] item stats: add the in-bank equipment interface --- .../src/main/java/net/runelite/api/widgets/WidgetID.java | 1 + .../src/main/java/net/runelite/api/widgets/WidgetInfo.java | 1 + .../runelite/client/plugins/itemstats/ItemStatOverlay.java | 5 ++++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java index 5287e418a0..b2228e1f96 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java @@ -259,6 +259,7 @@ public class WidgetID static final int DEPOSIT_EQUIPMENT = 42; static final int INCINERATOR = 44; static final int INCINERATOR_CONFIRM = 45; + static final int EQUIPMENT_CONTENT_CONTAINER = 66; } static class GrandExchange diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index a7c3bbc94e..d2bed8d9ce 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -141,6 +141,7 @@ public enum WidgetInfo BANK_DEPOSIT_EQUIPMENT(WidgetID.BANK_GROUP_ID, WidgetID.Bank.DEPOSIT_EQUIPMENT), BANK_DEPOSIT_INVENTORY(WidgetID.BANK_GROUP_ID, WidgetID.Bank.DEPOSIT_INVENTORY), BANK_TAB_CONTAINER(WidgetID.BANK_GROUP_ID, WidgetID.Bank.TAB_CONTAINER), + BANK_EQUIPMENT_CONTAINER(WidgetID.BANK_GROUP_ID, WidgetID.Bank.EQUIPMENT_CONTENT_CONTAINER), GRAND_EXCHANGE_WINDOW_CONTAINER(WidgetID.GRAND_EXCHANGE_GROUP_ID, WidgetID.GrandExchange.WINDOW_CONTAINER), GRAND_EXCHANGE_OFFER_CONTAINER(WidgetID.GRAND_EXCHANGE_GROUP_ID, WidgetID.GrandExchange.OFFER_CONTAINER), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatOverlay.java index c574c4dbb2..57ca7dde8a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatOverlay.java @@ -36,6 +36,7 @@ import net.runelite.api.Item; import net.runelite.api.ItemContainer; import net.runelite.api.MenuEntry; import net.runelite.api.widgets.Widget; +import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.game.ItemManager; import net.runelite.client.ui.JagexColors; @@ -105,7 +106,9 @@ public class ItemStatOverlay extends Overlay int itemId = entry.getIdentifier(); - if (group == WidgetInfo.EQUIPMENT.getGroupId()) + if (group == WidgetInfo.EQUIPMENT.getGroupId() || + // For bank worn equipment, check widget parent to differentiate from normal bank items + (group == WidgetID.BANK_GROUP_ID && widget.getParentId() == WidgetInfo.BANK_EQUIPMENT_CONTAINER.getId())) { final Widget widgetItem = widget.getChild(1); if (widgetItem != null) From 8eee9d12f66a0f1358ccaefcd7ad127c0c0ba42a Mon Sep 17 00:00:00 2001 From: Spedwards Date: Mon, 27 Apr 2020 08:50:18 +1000 Subject: [PATCH 07/13] world hopper: add region filter option to quick-hopping --- .../plugins/worldhopper/RegionFilterMode.java | 58 +++++++++++++++++++ .../worldhopper/WorldHopperConfig.java | 23 ++++++-- .../worldhopper/WorldHopperPlugin.java | 6 ++ 3 files changed, 81 insertions(+), 6 deletions(-) create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/RegionFilterMode.java diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/RegionFilterMode.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/RegionFilterMode.java new file mode 100644 index 0000000000..2a1a244b89 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/RegionFilterMode.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2019, Liam Edwards + * 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 OWNER 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.worldhopper; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import net.runelite.http.api.worlds.WorldRegion; + +@NoArgsConstructor +@AllArgsConstructor +public enum RegionFilterMode +{ + NONE, + AUSTRALIA(WorldRegion.AUSTRALIA), + GERMANY(WorldRegion.GERMANY), + UNITED_KINGDOM(WorldRegion.UNITED_KINGDOM) + { + @Override + public String toString() + { + return "U.K."; + } + }, + UNITED_STATES(WorldRegion.UNITED_STATES_OF_AMERICA) + { + @Override + public String toString() + { + return "USA"; + } + }; + + @Getter + private WorldRegion region; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperConfig.java index d21ed61e80..7d6bb4c268 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperConfig.java @@ -70,11 +70,22 @@ public interface WorldHopperConfig extends Config return true; } + @ConfigItem( + keyName = "quickHopRegionFilter", + name = "Quick-hop region", + description = "Limit quick-hopping to worlds of a specific region", + position = 3 + ) + default RegionFilterMode quickHopRegionFilter() + { + return RegionFilterMode.NONE; + } + @ConfigItem( keyName = "showSidebar", name = "Show world hopper sidebar", description = "Show sidebar containing all worlds that mimics in-game interface", - position = 3 + position = 4 ) default boolean showSidebar() { @@ -85,7 +96,7 @@ public interface WorldHopperConfig extends Config keyName = "ping", name = "Show world ping", description = "Shows ping to each game world", - position = 4 + position = 5 ) default boolean ping() { @@ -96,7 +107,7 @@ public interface WorldHopperConfig extends Config keyName = "showMessage", name = "Show world hop message in chat", description = "Shows what world is being hopped to in the chat", - position = 5 + position = 6 ) default boolean showWorldHopMessage() { @@ -107,7 +118,7 @@ public interface WorldHopperConfig extends Config keyName = "menuOption", name = "Show Hop-to menu option", description = "Adds Hop-to menu option to the friends list and clan members list", - position = 6 + position = 7 ) default boolean menuOption() { @@ -118,7 +129,7 @@ public interface WorldHopperConfig extends Config keyName = "subscriptionFilter", name = "Show subscription types", description = "Only show free worlds, member worlds, or both types of worlds in sidebar", - position = 7 + position = 8 ) default SubscriptionFilterMode subscriptionFilter() { @@ -129,7 +140,7 @@ public interface WorldHopperConfig extends Config keyName = "displayPing", name = "Display current ping", description = "Displays ping to current game world", - position = 7 + position = 9 ) default boolean displayPing() { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java index d8f29c54d0..67d84d227d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java @@ -560,6 +560,12 @@ public class WorldHopperPlugin extends Plugin world = worlds.get(worldIdx); + // Check world region if filter is enabled + if (config.quickHopRegionFilter() != RegionFilterMode.NONE && world.getRegion() != config.quickHopRegionFilter().getRegion()) + { + continue; + } + EnumSet types = world.getTypes().clone(); types.remove(WorldType.BOUNTY); From 5b7eb0adafa385c1098048b769962cac2647f6bc Mon Sep 17 00:00:00 2001 From: Ron Young Date: Thu, 9 Jan 2020 07:39:45 -0600 Subject: [PATCH 08/13] revert banktags: move new tagtab button to the bottom of the list 358703f30719b6785078dc827db42b937dbc7902 --- .../runelite/client/plugins/banktags/tabs/TabInterface.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java index 82a19b4f3d..3b1100453a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java @@ -981,7 +981,7 @@ public class TabInterface } int proposedIndex = currentTabIndex + direction; - int numTabs = tabManager.size() + 1; + int numTabs = tabManager.size(); if (proposedIndex >= numTabs || proposedIndex < 0) { @@ -1075,7 +1075,7 @@ public class TabInterface { int y = bounds.y + MARGIN + BUTTON_HEIGHT; - if (maxTabs > tabManager.size()) + if (maxTabs >= tabManager.size()) { currentTabIndex = 0; } @@ -1122,8 +1122,6 @@ public class TabInterface } } - updateWidget(newTab, y); - boolean hidden = !(tabManager.size() > 0); upButton.setHidden(hidden); From 8b2f5195468d84bc535436942889888f3ef73494 Mon Sep 17 00:00:00 2001 From: Ron Young Date: Thu, 9 Jan 2020 07:24:03 -0600 Subject: [PATCH 09/13] widgets: add bank item count and equipment button ids --- .../src/main/java/net/runelite/api/widgets/WidgetID.java | 4 ++++ .../src/main/java/net/runelite/api/widgets/WidgetInfo.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java index b2228e1f96..79a9ee8765 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java @@ -251,6 +251,9 @@ public class WidgetID static final int BANK_CONTAINER = 1; static final int INVENTORY_ITEM_CONTAINER = 3; static final int BANK_TITLE_BAR = 3; + static final int ITEM_COUNT_TOP = 4; + static final int ITEM_COUNT_BAR = 5; + static final int ITEM_COUNT_BOTTOM = 6; static final int CONTENT_CONTAINER = 8; static final int TAB_CONTAINER = 9; static final int ITEM_CONTAINER = 11; @@ -260,6 +263,7 @@ public class WidgetID static final int INCINERATOR = 44; static final int INCINERATOR_CONFIRM = 45; static final int EQUIPMENT_CONTENT_CONTAINER = 66; + static final int EQUIPMENT_BUTTON = 107; } static class GrandExchange diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index d2bed8d9ce..b54e93c5e4 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -142,6 +142,10 @@ public enum WidgetInfo BANK_DEPOSIT_INVENTORY(WidgetID.BANK_GROUP_ID, WidgetID.Bank.DEPOSIT_INVENTORY), BANK_TAB_CONTAINER(WidgetID.BANK_GROUP_ID, WidgetID.Bank.TAB_CONTAINER), BANK_EQUIPMENT_CONTAINER(WidgetID.BANK_GROUP_ID, WidgetID.Bank.EQUIPMENT_CONTENT_CONTAINER), + BANK_EQUIPMENT_BUTTON(WidgetID.BANK_GROUP_ID, WidgetID.Bank.EQUIPMENT_BUTTON), + BANK_ITEM_COUNT_TOP(WidgetID.BANK_GROUP_ID, WidgetID.Bank.ITEM_COUNT_TOP), + BANK_ITEM_COUNT_BAR(WidgetID.BANK_GROUP_ID, WidgetID.Bank.ITEM_COUNT_BAR), + BANK_ITEM_COUNT_BOTTOM(WidgetID.BANK_GROUP_ID, WidgetID.Bank.ITEM_COUNT_BOTTOM), GRAND_EXCHANGE_WINDOW_CONTAINER(WidgetID.GRAND_EXCHANGE_GROUP_ID, WidgetID.GrandExchange.WINDOW_CONTAINER), GRAND_EXCHANGE_OFFER_CONTAINER(WidgetID.GRAND_EXCHANGE_GROUP_ID, WidgetID.GrandExchange.OFFER_CONTAINER), From cac0828253158d89e2049b5d39203811183b52f0 Mon Sep 17 00:00:00 2001 From: Ron Young Date: Thu, 9 Jan 2020 07:25:31 -0600 Subject: [PATCH 10/13] tabinterface: move equipment button into title bar and move title bar widgets --- .../plugins/banktags/tabs/TabInterface.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java index 3b1100453a..144a17cceb 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java @@ -74,6 +74,7 @@ import net.runelite.api.widgets.ItemQuantityMode; import net.runelite.api.widgets.JavaScriptCallback; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetConfig; +import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetSizeMode; import net.runelite.api.widgets.WidgetType; @@ -234,6 +235,35 @@ public class TabInterface client.setVarbit(Varbits.CURRENT_BANK_TAB, 0); openTag(config.tab()); } + + Widget equipmentButton = client.getWidget(WidgetInfo.BANK_EQUIPMENT_BUTTON); + Widget titleBar = client.getWidget(WidgetInfo.BANK_TITLE_BAR); + if (equipmentButton == null || titleBar == null || titleBar.getOriginalX() > 0) + { + // don't keep moving widgets if they have already been moved + return; + } + + equipmentButton.setOriginalX(6); + equipmentButton.setOriginalY(4); + equipmentButton.revalidate(); + + // the bank item count is 3 widgets + for (int child = WidgetInfo.BANK_ITEM_COUNT_TOP.getChildId(); child <= WidgetInfo.BANK_ITEM_COUNT_BOTTOM.getChildId(); child++) + { + Widget widget = client.getWidget(WidgetID.BANK_GROUP_ID, child); + if (widget == null) + { + return; + } + + widget.setOriginalX(widget.getOriginalX() + equipmentButton.getWidth()); + widget.revalidate(); + } + + titleBar.setOriginalX(equipmentButton.getWidth() / 2); + titleBar.setOriginalWidth(titleBar.getWidth() - equipmentButton.getWidth()); + titleBar.revalidate(); } private void handleDeposit(MenuOptionClicked event, Boolean inventory) From 2706199944d32b1a24bfe1157a1abe53fa6f608e Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 4 Apr 2020 15:29:01 -0400 Subject: [PATCH 11/13] chatboxtextinput: conditionally close input from ondone callback --- .../client/game/chatbox/ChatboxTextInput.java | 20 ++++++++++++++++--- .../plugins/banktags/BankTagsPlugin.java | 3 ++- .../plugins/banktags/tabs/TabInterface.java | 7 ++++--- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java index ffc7e10dc5..4d2bfe8170 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java +++ b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java @@ -106,7 +106,7 @@ public class ChatboxTextInput extends ChatboxInput implements KeyListener, Mouse private Runnable onClose = null; @Getter - private Consumer onDone = null; + private Predicate onDone = null; @Getter private Consumer onChanged = null; @@ -235,6 +235,20 @@ public class ChatboxTextInput extends ChatboxInput implements KeyListener, Mouse } public ChatboxTextInput onDone(Consumer onDone) + { + this.onDone = (s) -> + { + onDone.accept(s); + return true; + }; + return this; + } + + /** + * Called when the user attempts to close the input by pressing enter + * Return false to cancel the close + */ + public ChatboxTextInput onDone(Predicate onDone) { this.onDone = onDone; return this; @@ -753,9 +767,9 @@ public class ChatboxTextInput extends ChatboxInput implements KeyListener, Mouse break; case KeyEvent.VK_ENTER: ev.consume(); - if (onDone != null) + if (onDone != null && !onDone.test(getValue())) { - onDone.accept(getValue()); + return; } chatboxPanelManager.close(); return; 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 8f2dbfc23e..08a0a3aab7 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 @@ -37,6 +37,7 @@ import java.util.Collection; import java.util.Set; import java.util.TreeSet; import java.util.List; +import java.util.function.Consumer; import java.util.regex.Pattern; import java.util.stream.Collectors; import javax.inject.Inject; @@ -407,7 +408,7 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener, KeyLis chatboxPanelManager.openTextInput(name + " tags:
(append " + VAR_TAG_SUFFIX + " for variation tag)") .addCharValidator(FILTERED_CHARS) .value(initialValue) - .onDone((newValue) -> + .onDone((Consumer) (newValue) -> clientThread.invoke(() -> { // Split inputted tags to vartags (ending with *) and regular tags diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java index 82a19b4f3d..21e0fa9f59 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java @@ -45,6 +45,7 @@ import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; import java.util.Objects; +import java.util.function.Consumer; import java.util.function.IntPredicate; import java.util.stream.Collectors; import javax.inject.Inject; @@ -268,7 +269,7 @@ public class TabInterface chatboxPanelManager.openTextInput((inventory ? "Inventory " : "Equipment ") + " tags:") .addCharValidator(FILTERED_CHARS) - .onDone((newTags) -> + .onDone((Consumer) (newTags) -> clientThread.invoke(() -> { final List tags = Text.fromCSV(newTags.toLowerCase()); @@ -290,7 +291,7 @@ public class TabInterface case NewTab.NEW_TAB: chatboxPanelManager.openTextInput("Tag name") .addCharValidator(FILTERED_CHARS) - .onDone((tagName) -> clientThread.invoke(() -> + .onDone((Consumer) (tagName) -> clientThread.invoke(() -> { if (!Strings.isNullOrEmpty(tagName)) { @@ -908,7 +909,7 @@ public class TabInterface { chatboxPanelManager.openTextInput("Enter new tag name for tag \"" + oldTag + "\":") .addCharValidator(FILTERED_CHARS) - .onDone((newTag) -> clientThread.invoke(() -> + .onDone((Consumer) (newTag) -> clientThread.invoke(() -> { if (!Strings.isNullOrEmpty(newTag) && !newTag.equalsIgnoreCase(oldTag)) { From b337cf8ee17ef5bfbb163ffa3d2810ec722c496c Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 4 Apr 2020 15:31:32 -0400 Subject: [PATCH 12/13] questlist, music, fairyring: don't close filter when pressing enter --- .../net/runelite/client/plugins/fairyring/FairyRingPlugin.java | 1 + .../main/java/net/runelite/client/plugins/music/MusicPlugin.java | 1 + .../net/runelite/client/plugins/questlist/QuestListPlugin.java | 1 + 3 files changed, 3 insertions(+) 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 644c05859b..9f57996a27 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 @@ -196,6 +196,7 @@ public class FairyRingPlugin extends Plugin searchBtn.setOnOpListener((JavaScriptCallback) this::menuClose); searchInput = chatboxPanelManager.openTextInput("Filter fairy rings") .onChanged(s -> clientThread.invokeLater(() -> updateFilter(s))) + .onDone(s -> false) .onClose(() -> { clientThread.invokeLater(() -> updateFilter("")); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java index 8205c3f3a3..c2db561546 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java @@ -321,6 +321,7 @@ public class MusicPlugin extends Plugin musicSearchButton.setOnOpListener((JavaScriptCallback) e -> closeSearch()); searchInput = chatboxPanelManager.openTextInput("Search music list") .onChanged(s -> clientThread.invokeLater(() -> updateFilter(s.trim()))) + .onDone(s -> false) .onClose(() -> { clientThread.invokeLater(() -> updateFilter("")); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java index 7243c24717..166ef3f669 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java @@ -233,6 +233,7 @@ public class QuestListPlugin extends Plugin questSearchButton.setOnOpListener((JavaScriptCallback) e -> closeSearch()); searchInput = chatboxPanelManager.openTextInput("Search quest list") .onChanged(s -> clientThread.invokeLater(() -> updateFilter(s))) + .onDone(s -> false) .onClose(() -> { clientThread.invokeLater(() -> updateFilter("")); From 5bfefcccb86f46f52b50367d488af5f30a148daa Mon Sep 17 00:00:00 2001 From: Tyler Davis Date: Mon, 27 Apr 2020 17:41:44 -0700 Subject: [PATCH 13/13] account: Fix tooltip and dialog verbiage (#11132) This commit changes uses of "login" and "logout" to "log in" and "log out" when they are representing a verb. --- .../net/runelite/client/plugins/account/AccountPlugin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/account/AccountPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/account/AccountPlugin.java index 55ab81fbe3..901987356c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/account/AccountPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/account/AccountPlugin.java @@ -75,14 +75,14 @@ public class AccountPlugin extends Plugin loginButton = NavigationButton.builder() .tab(false) .icon(LOGIN_IMAGE) - .tooltip("Login to RuneLite") + .tooltip("Log in to RuneLite") .onClick(this::loginClick) .build(); logoutButton = NavigationButton.builder() .tab(false) .icon(LOGOUT_IMAGE) - .tooltip("Logout of RuneLite") + .tooltip("Log out of RuneLite") .onClick(this::logoutClick) .build(); @@ -113,7 +113,7 @@ public class AccountPlugin extends Plugin private void logoutClick() { if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(null, - "Are you sure you want to logout from RuneLite?", "Logout Confirmation", + "Are you sure you want to log out from RuneLite?", "Logout Confirmation", JOptionPane.YES_NO_OPTION)) { executor.execute(sessionManager::logout);