Skip to content

Commit 868a876

Browse files
added pinginfo from a server specified in the config
1 parent 2dc5928 commit 868a876

File tree

6 files changed

+67
-9
lines changed

6 files changed

+67
-9
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.2</version>
9+
<version>1.2.3</version>
1010
<packaging>jar</packaging>
1111
<name>${project.artifactId}</name>
1212

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ public class Config {
1919
public static boolean messageOfTheDayOverride = false;
2020
public static String messageOfTheDay = "";
2121
public static boolean bStats = false;
22+
public static boolean useMainServer = false;
23+
public static String mainServer = "main";
2224

2325
/**
2426
* Loads a config file, and if it doesn't exist creates one

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ public void onEnable() {
3737
log("config", "§3Version Name: §r" + ChatColor.translateAlternateColorCodes('&', Config.versionName));
3838
log("config", "§3Version Minimum Protocol: §r" + Config.versionMinProtocol);
3939
log("config", "§3Set Hover Info: §r" + Config.setHoverInfo);
40-
if(Config.messageOfTheDayOverride)
41-
log("config", "§3Message Of The Day: §r" + ChatColor.translateAlternateColorCodes('&',Config.messageOfTheDay));
40+
if (Config.messageOfTheDayOverride)
41+
log("config", "§3Message Of The Day: §r" + ChatColor.translateAlternateColorCodes('&', Config.messageOfTheDay));
4242

4343
// Load Plugin Metrics
4444
if (Config.bStats) {
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.zeroBzeroT.serverPingPlayerList;
2+
3+
import net.md_5.bungee.api.Callback;
4+
import net.md_5.bungee.api.ProxyServer;
5+
import net.md_5.bungee.api.ServerPing;
6+
7+
import java.util.concurrent.ExecutionException;
8+
import java.util.concurrent.FutureTask;
9+
import java.util.concurrent.TimeUnit;
10+
import java.util.concurrent.TimeoutException;
11+
12+
/**
13+
* Test a Server Connection
14+
*/
15+
public class ServerInfoRetriever implements Callback<ServerPing> {
16+
public ServerPing ping = null;
17+
public final FutureTask<Object> task = new FutureTask<>(() -> {
18+
}, new Object());
19+
20+
public static ServerPing getServerPing(String name) throws ExecutionException, InterruptedException, TimeoutException {
21+
ServerInfoRetriever sig = new ServerInfoRetriever();
22+
ProxyServer.getInstance().getServerInfo(name).ping(sig);
23+
sig.task.get(1000, TimeUnit.MILLISECONDS);
24+
25+
return sig.ping;
26+
}
27+
28+
@Override
29+
public void done(ServerPing serverPing, Throwable throwable) {
30+
if (throwable == null)
31+
ping = serverPing;
32+
33+
task.run();
34+
}
35+
}

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

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
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;
1112

1213
public final class ServerListListener implements Listener {
13-
1414
private final transient Main plugin;
1515

1616
public ServerListListener(Main plugin) {
@@ -36,9 +36,28 @@ public void onProxyPing(final ProxyPingEvent event) {
3636

3737
// Server info player list
3838
if (Config.setHoverInfo) {
39-
final ServerPing.Players players = response.getPlayers();
40-
final ServerPing.PlayerInfo[] playerHoverInfo = this.plugin.getProxy().getPlayers().stream().map(player -> new ServerPing.PlayerInfo(player.getName(), player.getUniqueId())).toArray(ServerPing.PlayerInfo[]::new);
41-
players.setSample(playerHoverInfo);
39+
ServerPing ping = null;
40+
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();
57+
final ServerPing.PlayerInfo[] playerHoverInfo = this.plugin.getProxy().getPlayers().stream().map(player -> new ServerPing.PlayerInfo(player.getName(), player.getUniqueId())).toArray(ServerPing.PlayerInfo[]::new);
58+
players.setSample(playerHoverInfo);
59+
players.setOnline(this.plugin.getProxy().getPlayers().size());
60+
}
4261
}
4362

4463
event.setResponse(response);

src/main/resources/config.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# ServerPingPlayerList V${project.version}
2-
versionName: "ZeroPaper 1.12.2+"
2+
versionName: "LimeWire 5.5.16"
33
versionMinProtocol: 340 # 1.12.2
44
setHoverInfo: true
55
messageOfTheDayOverride: false
66
messageOfTheDay: "A Minecraft Server"
7-
bStats: true
7+
bStats: true
8+
useMainServer: false
9+
mainServer: main

0 commit comments

Comments
 (0)