Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.24 KB | None | 0 0
  1. package com.shadowhawkcoding.servermanager.commands;
  2.  
  3. import com.shadowhawkcoding.servermanager.ServerManager;
  4. import net.md_5.bungee.BungeeCord;
  5. import net.md_5.bungee.api.Callback;
  6. import net.md_5.bungee.api.ChatColor;
  7. import net.md_5.bungee.api.CommandSender;
  8. import net.md_5.bungee.api.ServerPing;
  9. import net.md_5.bungee.api.chat.*;
  10. import net.md_5.bungee.api.config.ServerInfo;
  11. import net.md_5.bungee.api.connection.ProxiedPlayer;
  12. import net.md_5.bungee.api.plugin.Command;
  13.  
  14. import java.util.concurrent.TimeUnit;
  15.  
  16. @SuppressWarnings("ALL")
  17. public class ServerCommand extends Command {
  18.  
  19. public ServerCommand() {
  20. super("server", null, "connect");
  21. }
  22.  
  23. @Override
  24. public void execute(CommandSender s, String[] args) {
  25. if (!(s instanceof ProxiedPlayer)) {
  26. s.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "The console can't connect to servers!"));
  27. return;
  28. }
  29. ProxiedPlayer p = (ProxiedPlayer) s;
  30. if (!p.hasPermission("servermanager.commands.server.use")) {
  31. p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Permissions > " + ChatColor.RED + "You don't have permission to do this!"));
  32. return;
  33. }
  34. if (args.length == 0) {
  35. p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "Please enter a server to connect to."));
  36. p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.GOLD + "Avaliable servers: "));
  37. for(ServerInfo si : BungeeCord.getInstance().getServers().values()){
  38. if (ServerManager.serverStatus.get(si) && !ServerManager.getInstance().getConfig().getSection("server." + si.getName()).getBoolean("is-hidden")
  39. && (ServerManager.getInstance().isServerWhitelisted(si) &&
  40. !ServerManager.getInstance().getServerWhitelist(si).contains(p.getUniqueId()))){
  41. BaseComponent[] bc0 = TextComponent.fromLegacyText(ChatColor.GREEN + "" + ChatColor.BOLD + si.getName() + " | ");
  42. TextComponent tc0 = new TextComponent(bc0);
  43.  
  44. BaseComponent[] bc1 = TextComponent.fromLegacyText(ChatColor.GOLD + "" + ChatColor.BOLD + "CONNECT");
  45. TextComponent tc1 = new TextComponent(bc1);
  46.  
  47. tc1.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(ChatColor.GREEN + "Connect to " + si.getName() + "!")));
  48. tc1.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "server " + si.getName()));
  49. tc0.addExtra(tc1);
  50.  
  51. TextComponent finalTC = tc0;
  52.  
  53. p.sendMessage(finalTC);
  54. }
  55. }
  56. return;
  57. }
  58. ServerInfo si = BungeeCord.getInstance().getServerInfo(args[0]);
  59. if (si == null) {
  60. p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "Sorry, but that server does not exist."));
  61. return;
  62. }
  63.  
  64.  
  65.  
  66. if (ServerManager.getInstance().isServerWhitelisted(si) &&
  67. !ServerManager.getInstance().getServerWhitelist(si).contains(p.getUniqueId())) {
  68. p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "Sorry, but you can't access this server."));
  69. return;
  70. }
  71. final boolean[] pass = {true};
  72. si.ping(new Callback<ServerPing>() {
  73. @Override
  74. public void done(ServerPing result, Throwable error) {
  75. if(error != null){
  76. ServerManager.serverStatus.remove(si);
  77. ServerManager.serverStatus.put(si, false);
  78. BungeeCord.getInstance().getConsole().sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "WARNING: Server " + si.getName() + " is not responding!"));
  79. p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "Sorry, but that server is not responding. Try again in a bit."));
  80. pass[0] = false;
  81. return;
  82. }else{
  83. ServerManager.serverStatus.remove(si);
  84. ServerManager.serverStatus.put(si, true);
  85. if(ServerManager.getInstance().getConfig().getSection("server." + si.getName()).getInt("max-players") <= result.getPlayers().getOnline()){
  86. p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.RED + "Sorry, but this server is full."));
  87. pass[0] = false;
  88. return;
  89. }
  90.  
  91. }
  92. }
  93. });
  94.  
  95. if(pass[0] == true){
  96. p.sendMessage(TextComponent.fromLegacyText(ChatColor.BLUE + "Servers > " + ChatColor.GOLD + "Connecting you to " + si.getName() + "..."));
  97. p.connect(si);
  98. BungeeCord.getInstance().getScheduler().schedule(new ServerManager(), new Runnable() {
  99. @Override
  100. public void run() {
  101. if (!si.getPlayers().contains(p)){
  102. BaseComponent[] bc0 = TextComponent.fromLegacyText(ChatColor.RED + "Looks like you didn't successfully connect. Sorry about that. ");
  103. TextComponent tc0 = new TextComponent(bc0);
  104.  
  105. BaseComponent[] bc1 = TextComponent.fromLegacyText(ChatColor.GOLD + "" + ChatColor.BOLD + "RETRY CONNECTION");
  106. TextComponent tc1 = new TextComponent(bc1);
  107.  
  108. tc1.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(ChatColor.GREEN + "Connect to " + si.getName() + "!")));
  109. tc1.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "server " + si.getName()));
  110. tc0.addExtra(tc1);
  111.  
  112. TextComponent finalTC = tc0;
  113.  
  114. p.sendMessage(finalTC);
  115. return;
  116. }
  117. }
  118. },10, TimeUnit.SECONDS);
  119. }
  120.  
  121. }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement