public ProxyGroupObjectBasicImplementation(String name, List<ProxyObject> proxies, int onlinePlayerCount, int maxPlayerCount, int maxPlayerCountPerProxy, int keepFreeSlots, int ram, String motd, boolean isStatic, int priority, List<String> serverGroups, String base, String proxyChooseStrategy, List<String> hostNames) { this.name = name; this.proxies = proxies; this.onlinePlayerCount = onlinePlayerCount; this.maxPlayerCount = maxPlayerCount; this.maxPlayerCountPerProxy = maxPlayerCountPerProxy; this.keepFreeSlots= keepFreeSlots; this.ram = ram; this.motd = motd; this.isStatic = isStatic; this.priority = priority; this.serverGroups = serverGroups; this.base = base; this.proxyChooseStrategy = ProxyChooseStrategy.valueOf(proxyChooseStrategy); this.hostNames = hostNames; }
@Override public ProxyObject getProxy(String proxyName) { for (ProxyGroupObject group : proxyGroups) for (ProxyObject proxy : group.getProxies()) if (proxy.getName().equals(proxyName)) return proxy; for (ProxyGroupObject group : proxyGroups) for (ProxyObject proxy : group.getProxies()) if (proxy.getName().equalsIgnoreCase(proxyName)) return proxy; return null; }
@Override public ServerObject getServer(String serverName) { for (ServerGroupObject group : serverGroups) for (ServerObject server : group.getServers()) if (server.getName().equals(serverName)) return server; for (ServerGroupObject group : serverGroups) for (ServerObject server : group.getServers()) if (server.getName().equalsIgnoreCase(serverName)) return server; return null; }
public String replace(String string, ServerObject server) { if (server == null) return ChatColor.translateAlternateColorCodes('&', string); return ChatColor.translateAlternateColorCodes('&', string .replace("%name%", server.getName()) .replace("%server_name%", server.getName()) .replace("%current_players%", Integer.toString(server.getOnlinePlayerCount())) .replace("%max_players%", Integer.toString(server.getMaxPlayerCount())) .replace("%state%", server.getState()) .replace("%extra%", server.getExtra()) .replace("%motd%", server.getMotd()) .replace("%map%", server.getMap())); }
@Override public void execute(CommandSender sender, String[] strings) { for (ServerGroupObject serverGroupObject : TimoCloudAPI.getBungeeAPI().getThisProxy().getGroup().getServerGroups()) { for (ServerObject serverObject : serverGroupObject.getServers()) { sender.sendMessage( new TextComponent(ChatColor.translateAlternateColorCodes('&', "&a[" + serverObject.getName() + "] &e(" + serverObject.getOnlinePlayerCount() + "): &r" + serverObject.getOnlinePlayers().stream().map(PlayerObject::getName).sorted(String.CASE_INSENSITIVE_ORDER).collect(Collectors.joining(", ")))) ); } } sender.sendMessage(new TextComponent(ChatColor.RESET + "Total players online: " + TimoCloudAPI.getBungeeAPI().getThisProxy().getGroup().getOnlinePlayerCount())); } }
@EventHandler public void onProxyPingEvent(ProxyPingEvent event) { ProxyObject proxyObject = TimoCloudAPI.getBungeeAPI().getThisProxy(); ServerPing serverPing = event.getResponse(); serverPing.setPlayers(new ServerPing.Players( proxyObject.getGroup().getMaxPlayerCount(), proxyObject.getGroup().getOnlinePlayerCount(), serverPing.getPlayers().getSample() )); serverPing.setDescriptionComponent(new TextComponent(ChatColor.translateAlternateColorCodes('&', proxyObject.getGroup().getMotd()))); } }
@Override public void execute(CommandSender sender, String[] args) { if (args.length == 0) { sendMessage(sender, "Please specify the name of the player you want to find"); return; } PlayerObject playerObject = TimoCloudAPI.getUniversalAPI().getPlayer(args[0]); if (playerObject == null) { sendMessage(sender, "&cThe player '&e" + args[0] + "&c' is not online."); return; } sendMessage(sender, "&e" + playerObject.getName() + " &ais online at &6" + playerObject.getServer().getName()); }
@Override public PlayerObject getPlayer(UUID uuid) { for (ProxyObject proxyObject : getProxyGroups().stream().map(ProxyGroupObject::getProxies).flatMap(List::stream).collect(Collectors.toList())) for (PlayerObject playerObject : proxyObject.getOnlinePlayers()) if (playerObject.getUuid().equals(uuid)) return playerObject; return null; }
@Override public PlayerObject getPlayer(String name) { for (ProxyObject proxyObject : getProxyGroups().stream().map(ProxyGroupObject::getProxies).flatMap(List::stream).collect(Collectors.toList())) for (PlayerObject playerObject : proxyObject.getOnlinePlayers()) if (playerObject.getName().equals(name)) return playerObject; return null; }
@Override public int compareTo(Object o) { if (! (o instanceof ServerObject)) return 1; ServerObject so = (ServerObject) o; try { return Integer.parseInt(getName().split("-")[getName().split("-").length-1]) - Integer.parseInt(so.getName().split("-")[so.getName().split("-").length-1]); } catch (Exception e) { return getName().compareTo(so.getName()); } } }
@Override public ServerGroupObject getServerGroup(String groupName) { List<ServerGroupObject> groups = getServerGroups(); if (groups == null) return null; for (ServerGroupObject group : groups) if (group.getName().equals(groupName)) return group; for (ServerGroupObject group : groups) if (group.getName().equalsIgnoreCase(groupName)) return group; return null; }
/** * Converts an API object into an internal server object * * @param object The API object which shall be converted * @return An internal server object */ public Server getServerByServerObject(ServerObject object) { if (object == null) return null; return getServerById(object.getId()); }
/** * Converts an API object into an internal proxy object * * @param object The API object which shall be converted * @return An internal proxy object */ public Proxy getProxyByProxyObject(ProxyObject object) { if (object == null) return null; return getProxyById(object.getId()); }
@Override public int compareTo(Object o) { if (! (o instanceof ProxyObject)) return 1; ProxyObject so = (ProxyObject) o; try { return Integer.parseInt(getName().split("-")[getName().split("-").length-1]) - Integer.parseInt(so.getName().split("-")[so.getName().split("-").length-1]); } catch (Exception e) { return getName().compareTo(so.getName()); } } }
@Override public boolean isSortedOut() { return getGroup().getSortOutStates().contains(getState()); }
private void setState(String state) { TimoCloudAPI.getBukkitAPI().getThisServer().setState(state); }
public ProxyGroupObject getProxyGroupByHostName(String hostName) { for (ProxyGroupObject group : TimoCloudAPI.getUniversalAPI().getProxyGroups()) for (String hostName1 : group.getHostNames()) if (matches(hostName, hostName1)) return group; return null; }
public void onSignClick(Player player, Location location) { SignInstance signInstance = getSignInstanceByLocation(location); if (signInstance == null || signInstance.getTarget() == null || signInstance.getTargetServer() == null) return; TimoCloudBukkit.getInstance().sendPlayerToServer(player, signInstance.getTargetServer().getName()); }