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())); }
/** * 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()); }
private void setState(String state) { TimoCloudAPI.getBukkitAPI().getThisServer().setState(state); }
@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())); } }
.filter(server -> !server.getName().equals(notThisName)) .filter(server -> server.getOnlinePlayerCount() < server.getMaxPlayerCount()) .collect(Collectors.toList()); List<ServerObject> removeServers = new ArrayList<>(); if (history.contains(server.getName()) && ! removeServers.contains(server)) removeServers.add(server); for (int i = servers.size()-1; i>= 0; i--) { ServerObject server = servers.get(i); if (server.getOnlinePlayerCount() < server.getMaxPlayerCount()) { target = server; break; break; return TimoCloudBungee.getInstance().getProxy().getServers().get(target.getName());
@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; }
private void processDynamicSignsPerGroupAndTemplate(ServerGroupObject group, SignTemplate template, Collection<SignInstance> signInstances) { if (group == null) return; signInstances = signInstances.stream().filter(this::isSignActive).collect(Collectors.toList()); Collection<String> sortOutStates = template.getSortOutStates() != null ? template.getSortOutStates() : group.getSortOutStates(); List<ServerObject> targets = group.getServers().stream().filter(serverObject -> ! sortOutStates.contains(serverObject.getState())).collect(Collectors.toList()); List<SignInstance> withPriority = signInstances.stream().filter((signInstance) -> signInstance.getPriority() != 0).collect(Collectors.toList()); List<SignInstance> withoutPriority = signInstances.stream().filter((signInstance) -> signInstance.getPriority() == 0).collect(Collectors.toList()); withPriority.sort(Comparator.comparing(SignInstance::getPriority)); Integer lastPriority = null; int step = -1; for (SignInstance signInstance : withPriority) { if (signInstance == null) return; if (lastPriority == null || signInstance.getPriority() != lastPriority) { step++; lastPriority = signInstance.getPriority(); } writeSign(step < targets.size() ? targets.get(step) : null, step < targets.size() ? signInstance.getTemplate() : getSignTemplate("NoFreeServerFound"), signInstance); } step = -1; withoutPriority.sort(compareSignInstancesByLocation); for (SignInstance signInstance : withoutPriority) { if (signInstance == null) return; step++; writeSign(step < targets.size() ? targets.get(step) : null, step < targets.size() ? signInstance.getTemplate() : getSignTemplate("NoFreeServerFound"), signInstance); } }
@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()); } } }
public void setStateByPlayerCount() { int cur = TimoCloudBukkit.getInstance().getOnlinePlayersAmount(); String currentState = TimoCloudAPI.getBukkitAPI().getThisServer().getState(); if (!currentState.equals(lastStateSet)) stateBefore = currentState; if (!TimoCloudBukkit.getInstance().getFileManager().getConfig().getStringList("PlayersToState.enabledWhileStates").contains(stateBefore)) return; double percentage = (double) cur / (double) TimoCloudBukkit.getInstance().getMaxPlayersAmount() * 100; String state = null; List<Double> steps = new ArrayList<>(); Map<Double, String> states = new HashMap<>(); for (String step : TimoCloudBukkit.getInstance().getFileManager().getConfig().getConfigurationSection("PlayersToState.percentages").getKeys(false)) { try { Double d = NumberFormat.getInstance(Locale.GERMAN).parse(step).doubleValue(); steps.add(d); states.put(d, TimoCloudBukkit.getInstance().getFileManager().getConfig().getString("PlayersToState.percentages." + step)); } catch (Exception e) { } } Collections.sort(steps); for (double step : steps) { if (percentage >= step) state = states.get(step); } if (state == null) { setState(stateBefore); } else { setState(state); lastStateSet = state; } }
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()); }
private void writeSign(ServerObject server, SignTemplate signTemplate, SignInstance signInstance) { if (!isSignActive(signInstance)) return; if (signTemplate == null) signTemplate = templateNotFound(signInstance.getTemplateName()); signInstance.setTargetServer(server); SignLayout signLayout = signTemplate.getLayout(server == null ? "Default" : server.getState()); Sign sign = (Sign) signInstance.getLocation().getBlock().getState(); for (int i = 0; i < 4; i++) { sign.setLine(i, replace(signLayout.getLine(i).get(signInstance.getStep() % signLayout.getLine(i).size()), server)); } sign.update(); setSignBlock(signInstance, signLayout); if (signLayout.getUpdateSpeed() > 0 && updates % signLayout.getUpdateSpeed() == 0) signInstance.setStep(signInstance.getStep() + 1); }
@Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (!sender.hasPermission("timocloud.command.bukkit")) { BukkitMessageManager.noPermission(sender); return false; } if (args.length < 2) { sendHelp(sender); return false; } if (args[0].equalsIgnoreCase("setstate")) { TimoCloudAPI.getBukkitAPI().getThisServer().setState(args[1]); BukkitMessageManager.sendMessage(sender, "&aState has successfully been set to &e" + args[1]); } return false; }
@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()); }