void |
setLang(java.lang.String key,
java.lang.String value)
@@ -877,6 +883,20 @@ public
+
+
+
+
+-
+
getGlobalPlayers
+public java.util.Collection<NamedContainer<java.lang.String,java.util.UUID>> getGlobalPlayers()
+Get players on this network across all known proxies
+
+- Returns:
+- Player Collection
+
+
+
diff --git a/Javadoc/SubServers.Client.Bukkit.jar b/Javadoc/SubServers.Client.Bukkit.jar
index de2b5b0e..321f8663 100644
Binary files a/Javadoc/SubServers.Client.Bukkit.jar and b/Javadoc/SubServers.Client.Bukkit.jar differ
diff --git a/Javadoc/SubServers.Host.jar b/Javadoc/SubServers.Host.jar
index 26a78025..f88f64c1 100644
Binary files a/Javadoc/SubServers.Host.jar and b/Javadoc/SubServers.Host.jar differ
diff --git a/SubServers.Bungee/src.jar b/SubServers.Bungee/src.jar
index e2e4c9da..48b719df 100644
Binary files a/SubServers.Bungee/src.jar and b/SubServers.Bungee/src.jar differ
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java
index 77ec678d..34aeebb2 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Server.java
@@ -1,10 +1,13 @@
package net.ME1312.SubServers.Bungee.Host;
import net.ME1312.SubServers.Bungee.Library.ExtraDataHandler;
+import net.ME1312.SubServers.Bungee.Library.NamedContainer;
import net.ME1312.SubServers.Bungee.Network.ClientHandler;
import net.md_5.bungee.api.config.ServerInfo;
+import java.util.Collection;
import java.util.List;
+import java.util.UUID;
/**
* Server Interface
@@ -46,6 +49,13 @@ public interface Server extends ServerInfo, ClientHandler, ExtraDataHandler {
*/
void removeGroup(String value);
+ /**
+ * Get players on this server across all known proxies
+ *
+ * @return Player Collection
+ */
+ Collection> getGlobalPlayers();
+
/**
* If the server is hidden from players
*
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java
index 575f359c..fcee9cd0 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/ServerContainer.java
@@ -11,15 +11,14 @@ import net.ME1312.SubServers.Bungee.Network.Client;
import net.ME1312.SubServers.Bungee.Network.ClientHandler;
import net.ME1312.SubServers.Bungee.Network.SubDataServer;
import net.ME1312.SubServers.Bungee.SubAPI;
+import net.ME1312.SubServers.Bungee.SubPlugin;
import net.md_5.bungee.BungeeServerInfo;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import org.json.JSONObject;
import java.net.InetSocketAddress;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
/**
* Server Class
@@ -96,6 +95,23 @@ public class ServerContainer extends BungeeServerInfo implements Server {
Collections.sort(groups);
}
+ @SuppressWarnings({"deprecation", "unchecked"})
+ @Override
+ public Collection> getGlobalPlayers() {
+ List> players = new ArrayList>();
+ SubPlugin plugin = SubAPI.getInstance().getInternals();
+ if (plugin.redis) {
+ try {
+ for (UUID player : (Set) plugin.redis("getPlayersOnServer", new NamedContainer<>(String.class, getName()))) players.add(new NamedContainer<>((String) plugin.redis("getNameFromUuid", new NamedContainer<>(UUID.class, player)), player));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ for (ProxiedPlayer player : getPlayers()) players.add(new NamedContainer<>(player.getName(), player.getUniqueId()));
+ }
+ return players;
+ }
+
@Override
public boolean isHidden() {
return hidden;
@@ -178,11 +194,10 @@ public class ServerContainer extends BungeeServerInfo implements Server {
info.put("restricted", isRestricted());
info.put("hidden", isHidden());
JSONObject players = new JSONObject();
- for (ProxiedPlayer player : getPlayers()) {
+ for (NamedContainer player : getGlobalPlayers()) {
JSONObject pinfo = new JSONObject();
- pinfo.put("name", player.getName());
- pinfo.put("nick", player.getDisplayName());
- players.put(player.getUniqueId().toString(), pinfo);
+ pinfo.put("name", player.name());
+ players.put(player.get().toString(), pinfo);
}
info.put("players", players);
if (getSubData() != null) info.put("subdata", getSubData().getAddress().toString());
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/lang.yml b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/lang.yml
index 2472c47b..d3b8c7b0 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/lang.yml
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Files/lang.yml
@@ -22,7 +22,6 @@ Lang:
'Command.Help.Info': ' &7Info:&f $str$'
'Command.Help.Terminate': ' &7Teleport to Server:&f $str$'
'Command.Help.Host.Create': ' &7Create Server:&f $str$'
- 'Command.Help.Server.Teleport': ' &7Teleport to Server:&f $str$'
'Command.Help.SubServer.Start': ' &7Start Server:&f $str$'
'Command.Help.SubServer.Stop': ' &7Stop Server:&f $str$'
'Command.Help.SubServer.Terminate': ' &7Terminate Server:&f $str$'
@@ -73,7 +72,7 @@ Lang:
'Interface.Generic.Back-Arrow': '&e&l<--'
'Interface.Generic.Next-Arrow': '&e&l-->'
'Interface.Generic.Undo': '&6Undo'
- 'Interface.Generic.Downloading': '&bSubServers &1&l\u00BB&b Downloading - $str$'
+ 'Interface.Generic.Downloading': '&7SubServers &8&l\u00BB&7 Downloading:&f $str$'
'Interface.Generic.Downloading.Title': 'Downloading...'
'Interface.Generic.Downloading.Title-Color': '&b'
'Interface.Generic.Downloading.Title-Color-Alt': '&3'
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadHostInfo.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadHostInfo.java
index 54ba1d5f..23835ddf 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadHostInfo.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadHostInfo.java
@@ -3,6 +3,7 @@ package net.ME1312.SubServers.Bungee.Network.Packet;
import net.ME1312.SubServers.Bungee.Host.Host;
import net.ME1312.SubServers.Bungee.Host.SubCreator;
import net.ME1312.SubServers.Bungee.Host.SubServer;
+import net.ME1312.SubServers.Bungee.Library.NamedContainer;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.ME1312.SubServers.Bungee.Network.Client;
import net.ME1312.SubServers.Bungee.Network.ClientHandler;
@@ -14,6 +15,7 @@ import net.md_5.bungee.api.connection.ProxiedPlayer;
import org.json.JSONObject;
import java.util.ArrayList;
+import java.util.UUID;
/**
* Download Host Info Packet
@@ -80,11 +82,10 @@ public class PacketDownloadHostInfo implements PacketIn, PacketOut {
sinfo.put("running", server.isRunning());
sinfo.put("temp", server.isTemporary());
JSONObject players = new JSONObject();
- for (ProxiedPlayer player : server.getPlayers()) {
+ for (NamedContainer player : server.getGlobalPlayers()) {
JSONObject pinfo = new JSONObject();
- pinfo.put("name", player.getName());
- pinfo.put("nick", player.getDisplayName());
- players.put(player.getUniqueId().toString(), pinfo);
+ pinfo.put("name", player.name());
+ players.put(player.get().toString(), pinfo);
}
sinfo.put("players", players);
servers.put(server.getName(), sinfo);
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlayerList.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlayerList.java
index 3decbabd..c51cd202 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlayerList.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadPlayerList.java
@@ -1,14 +1,18 @@
package net.ME1312.SubServers.Bungee.Network.Packet;
+import net.ME1312.SubServers.Bungee.Library.NamedContainer;
import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.ME1312.SubServers.Bungee.Network.Client;
import net.ME1312.SubServers.Bungee.Network.PacketIn;
import net.ME1312.SubServers.Bungee.Network.PacketOut;
import net.ME1312.SubServers.Bungee.SubPlugin;
+import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import org.json.JSONObject;
+import java.util.UUID;
+
/**
* Download Player List Packet
*/
@@ -39,16 +43,24 @@ public class PacketDownloadPlayerList implements PacketIn, PacketOut {
}
@Override
+ @SuppressWarnings("unchecked")
public JSONObject generate() {
JSONObject json = new JSONObject();
json.put("id", id);
JSONObject players = new JSONObject();
- for (ProxiedPlayer player : plugin.getPlayers()) {
+ for (NamedContainer player : plugin.api.getGlobalPlayers()) {
JSONObject pinfo = new JSONObject();
- pinfo.put("name", player.getName());
- pinfo.put("nick", player.getDisplayName());
- pinfo.put("server", player.getServer().getInfo().getName());
- players.put(player.getUniqueId().toString(), pinfo);
+ pinfo.put("name", player.get());
+ if (plugin.redis) {
+ try {
+ pinfo.put("server", ((ServerInfo) plugin.redis("getServerFor", new NamedContainer<>(UUID.class, player.get()))).getName());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ pinfo.put("server", plugin.getPlayer(player.get()).getServer().getInfo().getName());
+ }
+ players.put(player.get().toString(), pinfo);
}
json.put("players", players);
return json;
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java
index 83e2dc59..44fee5be 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadProxyInfo.java
@@ -51,7 +51,7 @@ public class PacketDownloadProxyInfo implements PacketIn, PacketOut {
json.put("bungee", bungee);
JSONObject minecraft = new JSONObject();
minecraft.put("version", plugin.api.getGameVersion());
- minecraft.put("players", plugin.getPlayers().size());
+ minecraft.put("players", plugin.api.getGlobalPlayers().size());
json.put("minecraft", minecraft);
JSONObject system = new JSONObject();
JSONObject os = new JSONObject();
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadServerInfo.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadServerInfo.java
index cdcde18e..41f33068 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadServerInfo.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketDownloadServerInfo.java
@@ -3,6 +3,7 @@ package net.ME1312.SubServers.Bungee.Network.Packet;
import net.ME1312.SubServers.Bungee.Host.Server;
import net.ME1312.SubServers.Bungee.Host.ServerContainer;
import net.ME1312.SubServers.Bungee.Host.SubServer;
+import net.ME1312.SubServers.Bungee.Library.NamedContainer;
import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.ME1312.SubServers.Bungee.Network.Client;
@@ -14,6 +15,7 @@ import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
/**
* Download Server Info Packet
@@ -85,11 +87,10 @@ public class PacketDownloadServerInfo implements PacketIn, PacketOut {
info.put("extra", server.getExtra().toJSON());
JSONObject players = new JSONObject();
- for (ProxiedPlayer player : server.getPlayers()) {
+ for (NamedContainer player : server.getGlobalPlayers()) {
JSONObject pinfo = new JSONObject();
- pinfo.put("name", player.getName());
- pinfo.put("nick", player.getDisplayName());
- players.put(player.getUniqueId().toString(), pinfo);
+ pinfo.put("name", player.name());
+ players.put(player.get().toString(), pinfo);
}
info.put("players", players);
}
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java
index baa46563..5f1c616d 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubAPI.java
@@ -14,6 +14,7 @@ import net.ME1312.SubServers.Bungee.Library.UniversalFile;
import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.ME1312.SubServers.Bungee.Network.SubDataServer;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.lang.reflect.InvocationTargetException;
import java.net.InetAddress;
@@ -433,6 +434,26 @@ public final class SubAPI {
return getSubServers().get(name.toLowerCase());
}
+ /**
+ * Get players on this network across all known proxies
+ *
+ * @return Player Collection
+ */
+ @SuppressWarnings("unchecked")
+ public Collection> getGlobalPlayers() {
+ List> players = new ArrayList>();
+ if (plugin.redis) {
+ try {
+ for (UUID player : (Set) plugin.redis("getPlayersOnline")) players.add(new NamedContainer<>((String) plugin.redis("getNameFromUuid", new NamedContainer<>(UUID.class, player)), player));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ for (ProxiedPlayer player : plugin.getPlayers()) players.add(new NamedContainer<>(player.getName(), player.getUniqueId()));
+ }
+ return players;
+ }
+
/**
* Adds to the Language Map
*
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java
index 1cf06eaf..ae0cb79d 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubCommand.java
@@ -513,7 +513,6 @@ public final class SubCommand extends Command implements TabExecutor {
/**
* BungeeCord /server
*/
- @SuppressWarnings("unchecked")
public static final class BungeeServer extends Command implements TabExecutor {
private SubPlugin plugin;
protected BungeeServer(SubPlugin plugin, String command) {
@@ -547,7 +546,7 @@ public final class SubCommand extends Command implements TabExecutor {
if (i != 0) serverm.addExtra(div);
TextComponent message = new TextComponent(plugin.lang.get().getSection("Lang").getColoredString("Bungee.Server.List", '&').replace("$str$", server.getDisplayName()));
try {
- message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{new TextComponent(plugin.lang.get().getSection("Lang").getColoredString("Bungee.Server.Hover", '&').replace("$int$", Integer.toString((plugin.redis)?((Set)plugin.redis("getPlayersOnServer", new NamedContainer<>(String.class, server.getName()))).size():server.getPlayers().size())))}));
+ message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{new TextComponent(plugin.lang.get().getSection("Lang").getColoredString("Bungee.Server.Hover", '&').replace("$int$", Integer.toString(server.getGlobalPlayers().size())))}));
} catch (Exception e) {
e.printStackTrace();
}
@@ -595,7 +594,6 @@ public final class SubCommand extends Command implements TabExecutor {
/**
* BungeeCord /glist
*/
- @SuppressWarnings("unchecked")
public static final class BungeeList extends Command {
private SubPlugin plugin;
protected BungeeList(SubPlugin plugin, String command) {
@@ -616,15 +614,7 @@ public final class SubCommand extends Command implements TabExecutor {
int players = 0;
for (Server server : plugin.api.getServers().values()) {
List playerlist = new ArrayList();
- if (plugin.redis) {
- try {
- for (UUID player : (Set) plugin.redis("getPlayersOnServer", new NamedContainer<>(String.class, server.getName()))) playerlist.add((String) plugin.redis("getNameFromUuid", new NamedContainer<>(UUID.class, player)));
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- for (ProxiedPlayer player : server.getPlayers()) playerlist.add(player.getName());
- }
+ for (NamedContainer player : server.getGlobalPlayers()) playerlist.add(player.name());
Collections.sort(playerlist);
players += playerlist.size();
diff --git a/SubServers.Client/Bukkit/src.jar b/SubServers.Client/Bukkit/src.jar
index 9583ec03..8fb3e8d6 100644
Binary files a/SubServers.Client/Bukkit/src.jar and b/SubServers.Client/Bukkit/src.jar differ
diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java
index 841f5d85..b6c65604 100644
--- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java
+++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/SubCommand.java
@@ -26,7 +26,7 @@ import java.nio.charset.Charset;
import java.text.DecimalFormat;
import java.util.*;
-public final class SubCommand implements CommandExecutor{
+public final class SubCommand implements CommandExecutor {
private SubPlugin plugin;
public SubCommand(SubPlugin plugin) {
diff --git a/SubServers.Host/src.jar b/SubServers.Host/src.jar
index 09da4ff7..1653385f 100644
Binary files a/SubServers.Host/src.jar and b/SubServers.Host/src.jar differ
|