world hopper: add region filter config

This commit is contained in:
isaacph
2021-04-24 23:56:40 -04:00
committed by GitHub
parent 6270cb4261
commit c3fa428aa9
3 changed files with 27 additions and 4 deletions

View File

@@ -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",

View File

@@ -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;
}

View File

@@ -66,7 +66,9 @@ class WorldSwitcherPanel extends PluginPanel
private final ArrayList<WorldTableRow> 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)));
}