From e1839fdd19fe676da1f80593c98ac3555d8ceb9b Mon Sep 17 00:00:00 2001 From: mohammed jasem alaajel Date: Tue, 19 Jul 2022 10:58:21 +0400 Subject: [PATCH 1/5] instead of returning null return 0 --- .../com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java b/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java index 278dee7..0237e70 100644 --- a/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java +++ b/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java @@ -125,7 +125,7 @@ public String onPlaceholderRequest(Player p, String identifier) { } servers.put(identifier, 0); - return null; + return "0"; } From b5432a04aabb0e6560d7ba8eaef368f8cb0ff7a5 Mon Sep 17 00:00:00 2001 From: mohammed jasem alaajel Date: Tue, 19 Jul 2022 11:05:23 +0400 Subject: [PATCH 2/5] change interval from 60 seconds to 1, general improvements --- .../RedisBungeeExpansion.java | 27 +++++++------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java b/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java index 0237e70..f3abbf0 100644 --- a/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java +++ b/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java @@ -32,24 +32,18 @@ public final class RedisBungeeExpansion extends PlaceholderExpansion implements private final String CHANNEL = "legacy:redisbungee"; - private int fetchInterval = 60; - - private boolean registered = false; + private static final int FETCH_INTERVAL = 1; // in seconds public RedisBungeeExpansion() { - if (!registered) { - Bukkit.getMessenger().registerOutgoingPluginChannel(getPlaceholderAPI(), CHANNEL); - Bukkit.getMessenger().registerIncomingPluginChannel(getPlaceholderAPI(), CHANNEL, this); - registered = true; - } + Bukkit.getMessenger().registerOutgoingPluginChannel(getPlaceholderAPI(), CHANNEL); + Bukkit.getMessenger().registerIncomingPluginChannel(getPlaceholderAPI(), CHANNEL, this); } @Override public boolean register() { List srvs = getStringList("tracked_servers"); - - if (srvs != null && !srvs.isEmpty()) { + if (!srvs.isEmpty()) { for (String s : srvs) { servers.put(s, 0); } @@ -151,7 +145,7 @@ public void run() { getPlayers("ALL"); } - }.runTaskTimer(getPlaceholderAPI(), 100L, 20L * fetchInterval); + }.runTaskTimer(getPlaceholderAPI(), 100L, 20L * FETCH_INTERVAL); } @Override @@ -159,7 +153,7 @@ public void stop() { if (task != null) { try { task.cancel(); - } catch (Exception ex) { + } catch (Exception ignored) { } task = null; } @@ -168,11 +162,8 @@ public void stop() { @Override public void clear() { servers.clear(); - if (registered) { - Bukkit.getMessenger().unregisterOutgoingPluginChannel(getPlaceholderAPI(), CHANNEL); - Bukkit.getMessenger().unregisterIncomingPluginChannel(getPlaceholderAPI(), CHANNEL, this); - registered = false; - } + Bukkit.getMessenger().unregisterOutgoingPluginChannel(getPlaceholderAPI(), CHANNEL); + Bukkit.getMessenger().unregisterIncomingPluginChannel(getPlaceholderAPI(), CHANNEL, this); } @Override @@ -220,7 +211,7 @@ public void onPluginMessageReceived(String channel, Player player, byte[] messag } } - } catch (Exception e) { + } catch (Exception ignored) { } } } From c7300073526fb6e52dc02cc6c921a1f3b69bc44e Mon Sep 17 00:00:00 2001 From: mohammed jasem alaajel Date: Wed, 20 Jul 2022 06:28:12 +0400 Subject: [PATCH 3/5] update version --- pom.xml | 2 +- .../com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a203ac7..c0da684 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.helpchat RedisBungeeExpansion - 2.0.1 + 2.0.2 jar RedisBungeeExpansion diff --git a/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java b/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java index f3abbf0..609a15c 100644 --- a/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java +++ b/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java @@ -68,7 +68,7 @@ public String getAuthor() { @Override public String getVersion() { - return "2.0.1"; + return "2.0.2"; } @Override From eda25c96bb61d60f59ae8daad6ea6979ff92a98b Mon Sep 17 00:00:00 2001 From: md5nake <25557150+md5nake@users.noreply.github.com> Date: Tue, 25 Jun 2024 18:28:59 +0200 Subject: [PATCH 4/5] Clean up servers after request inactivity --- .../RedisBungeeExpansion.java | 84 +++++++++---------- 1 file changed, 39 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java b/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java index 609a15c..723f4af 100644 --- a/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java +++ b/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java @@ -2,8 +2,6 @@ import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; -import me.clip.placeholderapi.PlaceholderAPI; -import me.clip.placeholderapi.PlaceholderAPIPlugin; import me.clip.placeholderapi.expansion.Cacheable; import me.clip.placeholderapi.expansion.Configurable; import me.clip.placeholderapi.expansion.PlaceholderExpansion; @@ -11,28 +9,22 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.plugin.messaging.PluginMessageListener; -import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; import java.io.ByteArrayInputStream; import java.io.DataInputStream; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; public final class RedisBungeeExpansion extends PlaceholderExpansion implements PluginMessageListener, Taskable, Cacheable, Configurable { - - private final Map servers = new ConcurrentHashMap<>(); - - private int total = 0; - - private BukkitTask task; - - private final String CHANNEL = "legacy:redisbungee"; - private static final int FETCH_INTERVAL = 1; // in seconds + private static final int CLEANUP_INTERVAL = 10; // in seconds + private final Set readServers = new HashSet<>(); + private final ConcurrentHashMap servers = new ConcurrentHashMap<>(); + private final String CHANNEL = "legacy:redisbungee"; + private int total = 0; + private BukkitTask fetchTask; + private BukkitTask cleanupTask; public RedisBungeeExpansion() { Bukkit.getMessenger().registerOutgoingPluginChannel(getPlaceholderAPI(), CHANNEL); @@ -41,7 +33,6 @@ public RedisBungeeExpansion() { @Override public boolean register() { - List srvs = getStringList("tracked_servers"); if (!srvs.isEmpty()) { for (String s : srvs) { @@ -101,7 +92,7 @@ private void getPlayers(String server) { @Override public String onPlaceholderRequest(Player p, String identifier) { - + readServers.add(identifier); if (identifier.equalsIgnoreCase("total") || identifier.equalsIgnoreCase("all")) { return String.valueOf(total); @@ -126,49 +117,60 @@ public String onPlaceholderRequest(Player p, String identifier) { @Override public void start() { - - task = new BukkitRunnable() { - - @Override - public void run() { - - if (servers.isEmpty()) { - - getPlayers("ALL"); - - return; + cleanupTask = Bukkit.getScheduler().runTaskTimer(getPlaceholderAPI(), () -> { + for (String server : servers.keySet()) { + if (!readServers.contains(server)) { + servers.remove(server); } + } - for (String server : servers.keySet()) { - getPlayers(server); - } + readServers.clear(); + }, 100L, 20L * CLEANUP_INTERVAL); + fetchTask = Bukkit.getScheduler().runTaskTimer(getPlaceholderAPI(), () -> { + if (servers.isEmpty()) { getPlayers("ALL"); + return; } - }.runTaskTimer(getPlaceholderAPI(), 100L, 20L * FETCH_INTERVAL); + + for (String server : servers.keySet()) { + getPlayers(server); + } + + getPlayers("ALL"); + }, 100L, 20L * FETCH_INTERVAL); } @Override public void stop() { - if (task != null) { + if (fetchTask != null) { try { - task.cancel(); + fetchTask.cancel(); } catch (Exception ignored) { } - task = null; + fetchTask = null; + } + + if (cleanupTask != null) { + try { + cleanupTask.cancel(); + } catch (Exception ignored) { + } + cleanupTask = null; } } @Override public void clear() { servers.clear(); + readServers.clear(); + Bukkit.getMessenger().unregisterOutgoingPluginChannel(getPlaceholderAPI(), CHANNEL); Bukkit.getMessenger().unregisterIncomingPluginChannel(getPlaceholderAPI(), CHANNEL, this); } @Override public void onPluginMessageReceived(String channel, Player player, byte[] message) { - if (!channel.equals(CHANNEL)) { return; } @@ -176,15 +178,12 @@ public void onPluginMessageReceived(String channel, Player player, byte[] messag DataInputStream in = new DataInputStream(new ByteArrayInputStream(message)); try { - String subChannel = in.readUTF(); if (subChannel.equals("PlayerCount")) { - String server = in.readUTF(); if (in.available() > 0) { - int count = in.readInt(); if (server.equals("ALL")) { @@ -193,10 +192,7 @@ public void onPluginMessageReceived(String channel, Player player, byte[] messag servers.put(server, count); } } - - } else if (subChannel.equals("GetServers")) { - String[] serverList = in.readUTF().split(", "); if (serverList.length == 0) { @@ -204,13 +200,11 @@ public void onPluginMessageReceived(String channel, Player player, byte[] messag } for (String server : serverList) { - if (!servers.containsKey(server)) { servers.put(server, 0); } } } - } catch (Exception ignored) { } } From 4a2def48b361bc8ac88ed9c9b2397224d8bd61a1 Mon Sep 17 00:00:00 2001 From: md5nake <25557150+md5nake@users.noreply.github.com> Date: Tue, 25 Jun 2024 18:29:06 +0200 Subject: [PATCH 5/5] Bump version to 2.0.3 --- pom.xml | 2 +- .../com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index c0da684..2d1895a 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.helpchat RedisBungeeExpansion - 2.0.2 + 2.0.3 jar RedisBungeeExpansion diff --git a/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java b/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java index 723f4af..4e010cf 100644 --- a/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java +++ b/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java @@ -59,7 +59,7 @@ public String getAuthor() { @Override public String getVersion() { - return "2.0.2"; + return "2.0.3"; } @Override