Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.shadowhawkcoding.servermanager.commands;
- import com.shadowhawkcoding.servermanager.ServerManager;
- import net.md_5.bungee.BungeeCord;
- import net.md_5.bungee.api.Callback;
- import net.md_5.bungee.api.ChatColor;
- import net.md_5.bungee.api.CommandSender;
- import net.md_5.bungee.api.ServerPing;
- import net.md_5.bungee.api.chat.*;
- import net.md_5.bungee.api.config.ServerInfo;
- import net.md_5.bungee.api.connection.ProxiedPlayer;
- import net.md_5.bungee.api.plugin.Command;
- import java.util.concurrent.TimeUnit;
- @SuppressWarnings("ALL")
- public class ServerCommand extends Command {
- public ServerCommand() {
- super("server", null, "connect");
- }
- @Override
- public void execute(CommandSender s, String[] args) {
- if (!(s instanceof ProxiedPlayer)) {
- s.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "The console can't connect to servers!"));
- return;
- }
- ProxiedPlayer p = (ProxiedPlayer) s;
- if (!p.hasPermission("servermanager.commands.server.use")) {
- p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Permissions > " + ChatColor.RED + "You don't have permission to do this!"));
- return;
- }
- if (args.length == 0) {
- p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "Please enter a server to connect to."));
- p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.GOLD + "Avaliable servers: "));
- for(ServerInfo si : BungeeCord.getInstance().getServers().values()){
- if (ServerManager.serverStatus.get(si) && !ServerManager.getInstance().getConfig().getSection("server." + si.getName()).getBoolean("is-hidden")
- && (ServerManager.getInstance().isServerWhitelisted(si) &&
- !ServerManager.getInstance().getServerWhitelist(si).contains(p.getUniqueId()))){
- BaseComponent[] bc0 = TextComponent.fromLegacyText(ChatColor.GREEN + "" + ChatColor.BOLD + si.getName() + " | ");
- TextComponent tc0 = new TextComponent(bc0);
- BaseComponent[] bc1 = TextComponent.fromLegacyText(ChatColor.GOLD + "" + ChatColor.BOLD + "CONNECT");
- TextComponent tc1 = new TextComponent(bc1);
- tc1.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(ChatColor.GREEN + "Connect to " + si.getName() + "!")));
- tc1.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "server " + si.getName()));
- tc0.addExtra(tc1);
- TextComponent finalTC = tc0;
- p.sendMessage(finalTC);
- }
- }
- return;
- }
- ServerInfo si = BungeeCord.getInstance().getServerInfo(args[0]);
- if (si == null) {
- p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "Sorry, but that server does not exist."));
- return;
- }
- if (ServerManager.getInstance().isServerWhitelisted(si) &&
- !ServerManager.getInstance().getServerWhitelist(si).contains(p.getUniqueId())) {
- p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "Sorry, but you can't access this server."));
- return;
- }
- final boolean[] pass = {true};
- si.ping(new Callback<ServerPing>() {
- @Override
- public void done(ServerPing result, Throwable error) {
- if(error != null){
- ServerManager.serverStatus.remove(si);
- ServerManager.serverStatus.put(si, false);
- BungeeCord.getInstance().getConsole().sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "WARNING: Server " + si.getName() + " is not responding!"));
- p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "Sorry, but that server is not responding. Try again in a bit."));
- pass[0] = false;
- return;
- }else{
- ServerManager.serverStatus.remove(si);
- ServerManager.serverStatus.put(si, true);
- if(ServerManager.getInstance().getConfig().getSection("server." + si.getName()).getInt("max-players") <= result.getPlayers().getOnline()){
- p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "Sorry, but this server is full."));
- pass[0] = false;
- return;
- }
- }
- }
- });
- if(pass[0] == true){
- p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.GOLD + "Connecting you to " + si.getName() + "..."));
- p.connect(si);
- BungeeCord.getInstance().getScheduler().schedule(new ServerManager(), new Runnable() {
- @Override
- public void run() {
- if (!si.getPlayers().contains(p)){
- BaseComponent[] bc0 = TextComponent.fromLegacyText(ChatColor.RED + "Looks like you didn't successfully connect. Sorry about that. ");
- TextComponent tc0 = new TextComponent(bc0);
- BaseComponent[] bc1 = TextComponent.fromLegacyText(ChatColor.GOLD + "" + ChatColor.BOLD + "RETRY CONNECTION");
- TextComponent tc1 = new TextComponent(bc1);
- tc1.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(ChatColor.GREEN + "Connect to " + si.getName() + "!")));
- tc1.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "server " + si.getName()));
- tc0.addExtra(tc1);
- TextComponent finalTC = tc0;
- p.sendMessage(finalTC);
- return;
- }
- }
- },10, TimeUnit.SECONDS);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement