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 e46ab2ec4c..238338f63b 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 @@ -160,6 +160,8 @@ public class WorldHopperPlugin extends Plugin @Getter(AccessLevel.PACKAGE) private int currentPing; + private final Map storedPings = new HashMap<>(); + private final HotkeyListener previousKeyListener = new HotkeyListener(() -> config.previousKey()) { @Override @@ -754,7 +756,7 @@ public class WorldHopperPlugin extends Plugin for (World world : worldResult.getWorlds()) { - int ping = Ping.ping(world); + int ping = ping(world); SwingUtilities.invokeLater(() -> panel.updatePing(world.getId(), ping)); } @@ -795,7 +797,7 @@ public class WorldHopperPlugin extends Plugin return; } - int ping = Ping.ping(world); + int ping = ping(world); log.trace("Ping for world {} is: {}", world.getId(), ping); SwingUtilities.invokeLater(() -> panel.updatePing(world.getId(), ping)); } @@ -819,9 +821,26 @@ public class WorldHopperPlugin extends Plugin return; } - currentPing = Ping.ping(currentWorld); + currentPing = ping(currentWorld); log.trace("Ping for current world is: {}", currentPing); SwingUtilities.invokeLater(() -> panel.updatePing(currentWorld.getId(), currentPing)); } + + Integer getStoredPing(World world) + { + if (!config.ping()) + { + return null; + } + + return storedPings.get(world.getId()); + } + + private int ping(World world) + { + int ping = Ping.ping(world); + storedPings.put(world.getId(), ping); + return ping; + } } 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 a531dabaf4..9f15b8a068 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 @@ -378,7 +378,7 @@ class WorldSwitcherPanel extends PluginPanel */ private WorldTableRow buildRow(World world, boolean stripe, boolean current, boolean favorite) { - WorldTableRow row = new WorldTableRow(world, current, favorite, + WorldTableRow row = new WorldTableRow(world, current, favorite, plugin.getStoredPing(world), world1 -> { plugin.hopTo(world1); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableRow.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableRow.java index 31449ff61b..2aea475eb0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableRow.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableRow.java @@ -91,7 +91,7 @@ class WorldTableRow extends JPanel private Color lastBackground; private boolean current; - WorldTableRow(World world, boolean current, boolean favorite, Consumer onSelect, BiConsumer onFavorite) + WorldTableRow(World world, boolean current, boolean favorite, Integer ping, Consumer onSelect, BiConsumer onFavorite) { this.current = current; this.world = world; @@ -164,7 +164,7 @@ class WorldTableRow extends JPanel worldField.setPreferredSize(new Dimension(WORLD_COLUMN_WIDTH, 0)); worldField.setOpaque(false); - JPanel pingField = buildPingField(); + JPanel pingField = buildPingField(ping); pingField.setPreferredSize(new Dimension(PING_COLUMN_WIDTH, 0)); pingField.setOpaque(false); @@ -282,7 +282,7 @@ class WorldTableRow extends JPanel return column; } - private JPanel buildPingField() + private JPanel buildPingField(Integer ping) { JPanel column = new JPanel(new BorderLayout()); column.setBorder(new EmptyBorder(0, 5, 0, 5)); @@ -292,6 +292,11 @@ class WorldTableRow extends JPanel column.add(pingField, BorderLayout.EAST); + if (ping != null) + { + setPing(ping); + } + return column; }