Skip to content

Commit 3b2f7b8

Browse files
rewrote ping code
1 parent 868a876 commit 3b2f7b8

File tree

5 files changed

+45
-58
lines changed

5 files changed

+45
-58
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>org.zeroBzeroT</groupId>
88
<artifactId>ServerPingPlayerList</artifactId>
9-
<version>1.2.3</version>
9+
<version>1.2.4</version>
1010
<packaging>jar</packaging>
1111
<name>${project.artifactId}</name>
1212

src/main/java/org/zeroBzeroT/serverPingPlayerList/Main.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
11
package org.zeroBzeroT.serverPingPlayerList;
22

3+
import net.md_5.bungee.api.Callback;
34
import net.md_5.bungee.api.ChatColor;
5+
import net.md_5.bungee.api.ProxyServer;
6+
import net.md_5.bungee.api.ServerPing;
47
import net.md_5.bungee.api.plugin.Plugin;
8+
import net.md_5.bungee.api.scheduler.ScheduledTask;
59
import org.bstats.bungeecord.Metrics;
610
import org.zeroBzeroT.serverPingPlayerList.listener.ServerListListener;
711

812
import java.io.File;
13+
import java.util.concurrent.TimeUnit;
914

1015
public final class Main extends Plugin {
16+
public ServerPing mainPing = null;
17+
18+
ScheduledTask pingTask = null;
19+
1120
@Override
1221
public void onEnable() {
1322
super.onEnable();
@@ -27,6 +36,9 @@ public void onEnable() {
2736
return;
2837
}
2938

39+
// Server Ping Update Task
40+
StartPingTask();
41+
3042
// Commands
3143
getProxy().getPluginManager().registerCommand(this, new ReloadCommand(this));
3244

@@ -39,17 +51,38 @@ public void onEnable() {
3951
log("config", "§3Set Hover Info: §r" + Config.setHoverInfo);
4052
if (Config.messageOfTheDayOverride)
4153
log("config", "§3Message Of The Day: §r" + ChatColor.translateAlternateColorCodes('&', Config.messageOfTheDay));
54+
if (Config.useMainServer)
55+
log("config", "§3Ping Pass-Through-Server: §r" + Config.mainServer);
4256

4357
// Load Plugin Metrics
4458
if (Config.bStats) {
4559
new Metrics(this, 16229);
4660
}
4761
}
4862

63+
void StartPingTask() {
64+
mainPing = null;
65+
66+
if (pingTask != null)
67+
pingTask.cancel();
68+
69+
if (Config.useMainServer) {
70+
Callback<ServerPing> pingBack = (result, error) -> mainPing = result;
71+
72+
pingTask = getProxy().getScheduler().schedule(this,
73+
() -> ProxyServer.getInstance().getServerInfo(Config.mainServer).ping(pingBack),
74+
5, 5, TimeUnit.SECONDS
75+
);
76+
}
77+
}
78+
4979
@Override
5080
public void onDisable() {
5181
super.onDisable();
5282

83+
if (pingTask != null)
84+
pingTask.cancel();
85+
5386
getProxy().getPluginManager().unregisterListeners(this);
5487
}
5588

src/main/java/org/zeroBzeroT/serverPingPlayerList/ReloadCommand.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44
import net.md_5.bungee.api.ProxyServer;
55
import net.md_5.bungee.api.chat.TextComponent;
66
import net.md_5.bungee.api.plugin.Command;
7-
import net.md_5.bungee.api.plugin.Plugin;
87

98
/**
109
* ReloadCommand
1110
*/
1211
public class ReloadCommand extends Command {
13-
private final Plugin plugin;
12+
private final Main plugin;
1413

15-
public ReloadCommand(Plugin plugin) {
14+
public ReloadCommand(Main plugin) {
1615
super("spplreload");
1716
this.plugin = plugin;
1817
}
@@ -32,5 +31,8 @@ public void execute(CommandSender sender, String[] args) {
3231
} catch (Exception e) {
3332
e.printStackTrace();
3433
}
34+
35+
// Restart the ping task
36+
plugin.StartPingTask();
3537
}
3638
}

src/main/java/org/zeroBzeroT/serverPingPlayerList/ServerInfoRetriever.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/main/java/org/zeroBzeroT/serverPingPlayerList/listener/ServerListListener.java

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import net.md_5.bungee.event.EventHandler;
99
import org.zeroBzeroT.serverPingPlayerList.Config;
1010
import org.zeroBzeroT.serverPingPlayerList.Main;
11-
import org.zeroBzeroT.serverPingPlayerList.ServerInfoRetriever;
1211

1312
public final class ServerListListener implements Listener {
1413
private final transient Main plugin;
@@ -27,7 +26,7 @@ public void onProxyPing(final ProxyPingEvent event) {
2726
if (version.getProtocol() < Config.versionMinProtocol) version.setProtocol(Config.versionMinProtocol);
2827
response.setVersion(version);
2928

30-
// message of the day
29+
// Message of the day
3130
if (Config.messageOfTheDayOverride) {
3231
response.setDescriptionComponent(
3332
new TextComponent(ChatColor.translateAlternateColorCodes('&', Config.messageOfTheDay))
@@ -36,24 +35,12 @@ public void onProxyPing(final ProxyPingEvent event) {
3635

3736
// Server info player list
3837
if (Config.setHoverInfo) {
39-
ServerPing ping = null;
38+
final ServerPing.Players players = response.getPlayers();
4039

41-
if (Config.useMainServer) {
42-
try {
43-
ping = ServerInfoRetriever.getServerPing(Config.mainServer);
44-
} catch (Exception e) {
45-
plugin.log("onProxyPing", "Error retrieving server ping from '" + Config.mainServer + "': " + e.getClass().getSimpleName());
46-
}
47-
48-
if (ping != null) {
49-
final ServerPing.Players players = response.getPlayers();
50-
players.setSample(ping.getPlayers().getSample());
51-
players.setOnline(ping.getPlayers().getSample().length);
52-
}
53-
}
54-
55-
if (ping == null || !Config.useMainServer) {
56-
final ServerPing.Players players = response.getPlayers();
40+
if (Config.useMainServer && plugin.mainPing != null && plugin.mainPing.getPlayers().getSample() != null) {
41+
players.setSample(plugin.mainPing.getPlayers().getSample());
42+
players.setOnline(plugin.mainPing.getPlayers().getSample().length);
43+
} else {
5744
final ServerPing.PlayerInfo[] playerHoverInfo = this.plugin.getProxy().getPlayers().stream().map(player -> new ServerPing.PlayerInfo(player.getName(), player.getUniqueId())).toArray(ServerPing.PlayerInfo[]::new);
5845
players.setSample(playerHoverInfo);
5946
players.setOnline(this.plugin.getProxy().getPlayers().size());

0 commit comments

Comments
 (0)