package mineplex.bungee.playerCount; import java.io.File; import java.util.concurrent.TimeUnit; import mineplex.serverdata.Region; import mineplex.serverdata.ServerManager; import mineplex.serverdata.ServerRepository; import mineplex.serverdata.data.BungeeServer; import net.md_5.bungee.api.ServerPing.Players; import net.md_5.bungee.api.config.ListenerInfo; import net.md_5.bungee.api.event.ProxyPingEvent; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.event.EventHandler; public class PlayerCount implements Listener, Runnable { private Plugin _plugin; private ServerRepository _repository; private ListenerInfo _listenerInfo; private int _totalPlayers = -1; public PlayerCount(Plugin plugin) { _plugin = plugin; _plugin.getProxy().getScheduler().schedule(_plugin, this, 500L, 500L, TimeUnit.MILLISECONDS); _plugin.getProxy().getPluginManager().registerListener(_plugin, this); _listenerInfo = _plugin.getProxy().getConfigurationAdapter().getListeners().iterator().next(); Region region = !new File("eu.dat").exists() ? Region.US : Region.EU; _repository = ServerManager.getServerRepository(region); } public void run() { _repository.updateBungeeStatus(new BungeeServer(_listenerInfo.getHost().getAddress().getHostAddress(), _listenerInfo.getHost().getAddress().getHostAddress(), _listenerInfo.getHost().getPort(), _plugin.getProxy().getOnlineCount(), 1250, (int) ((Runtime.getRuntime().maxMemory() - Runtime.getRuntime().freeMemory()) / 1048576), (int) (Runtime.getRuntime().maxMemory() / 1048576)), 15); _totalPlayers = 0; for (BungeeServer server : _repository.getGlobalBungeeStatuses()) { _totalPlayers += server.getPlayerCount(); } } @EventHandler public void ServerPing(ProxyPingEvent event) { net.md_5.bungee.api.ServerPing serverPing = event.getResponse(); event.setResponse(new net.md_5.bungee.api.ServerPing(serverPing.getVersion(), new Players(_totalPlayers + 1, _totalPlayers, null), serverPing.getDescription(), serverPing.getFaviconObject())); } public int getTotalPlayers() { return _totalPlayers; } }