From c3fa428aa9d2e1425f4f0b2f827d9d568f2f033d Mon Sep 17 00:00:00 2001 From: isaacph <37312022+isaacph@users.noreply.github.com> Date: Sat, 24 Apr 2021 23:56:40 -0400 Subject: [PATCH] world hopper: add region filter config --- .../client/plugins/worldhopper/WorldHopperConfig.java | 11 +++++++++++ .../client/plugins/worldhopper/WorldHopperPlugin.java | 9 +++++++-- .../plugins/worldhopper/WorldSwitcherPanel.java | 11 +++++++++-- 3 files changed, 27 insertions(+), 4 deletions(-) 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 d1135ffe34..44c33c22ab 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 @@ -136,6 +136,17 @@ public interface WorldHopperConfig extends Config return SubscriptionFilterMode.BOTH; } + @ConfigItem( + keyName = "regionFilter", + name = "Filter worlds by region", + description = "Restrict sidebar worlds to one region", + position = 8 + ) + default RegionFilterMode regionFilter() + { + return RegionFilterMode.NONE; + } + @ConfigItem( keyName = "displayPing", name = "Display current ping", 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 f0d4f88185..6fbd1a4c09 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 @@ -209,7 +209,8 @@ public class WorldHopperPlugin extends Plugin overlayManager.add(worldHopperOverlay); - panel.setFilterMode(config.subscriptionFilter()); + panel.setSubscriptionFilterMode(config.subscriptionFilter()); + panel.setRegionFilterMode(config.regionFilter()); // The plugin has its own executor for pings, as it blocks for a long time hopperExecutorService = new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor()); @@ -272,7 +273,11 @@ public class WorldHopperPlugin extends Plugin } break; case "subscriptionFilter": - panel.setFilterMode(config.subscriptionFilter()); + panel.setSubscriptionFilterMode(config.subscriptionFilter()); + updateList(); + break; + case "regionFilter": + panel.setRegionFilterMode(config.regionFilter()); updateList(); break; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldSwitcherPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldSwitcherPanel.java index 2f0d428712..0f7b34773f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldSwitcherPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldSwitcherPanel.java @@ -66,7 +66,9 @@ class WorldSwitcherPanel extends PluginPanel private final ArrayList rows = new ArrayList<>(); private final WorldHopperPlugin plugin; @Setter(AccessLevel.PACKAGE) - private SubscriptionFilterMode filterMode; + private SubscriptionFilterMode subscriptionFilterMode; + @Setter(AccessLevel.PACKAGE) + private RegionFilterMode regionFilterMode; WorldSwitcherPanel(WorldHopperPlugin plugin) { @@ -231,7 +233,7 @@ class WorldSwitcherPanel extends PluginPanel { World world = worlds.get(i); - switch (filterMode) + switch (subscriptionFilterMode) { case FREE: if (world.getTypes().contains(WorldType.MEMBERS)) @@ -247,6 +249,11 @@ class WorldSwitcherPanel extends PluginPanel break; } + if (regionFilterMode.getRegion() != null && !regionFilterMode.getRegion().equals(world.getRegion())) + { + continue; + } + rows.add(buildRow(world, i % 2 == 0, world.getId() == plugin.getCurrentWorld() && plugin.getLastWorld() != 0, plugin.isFavorite(world))); }