Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.94 KB | None | 0 0
  1. package de.bluegamestv.core.proxy.lobbybalancer;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collections;
  5. import java.util.List;
  6.  
  7. import de.bluegamestv.core.Core;
  8. import de.bluegamestv.core.module.Module;
  9. import de.bluegamestv.core.profile.ProfileManager;
  10. import de.bluegamestv.core.profile.rank.Rank;
  11. import de.bluegamestv.core.proxy.silentlobby.SilentLobbyManager;
  12. import net.md_5.bungee.api.ChatColor;
  13. import net.md_5.bungee.api.ProxyServer;
  14. import net.md_5.bungee.api.chat.BaseComponent;
  15. import net.md_5.bungee.api.chat.TextComponent;
  16. import net.md_5.bungee.api.config.ServerInfo;
  17. import net.md_5.bungee.api.event.ServerConnectEvent;
  18. import net.md_5.bungee.api.event.ServerKickEvent;
  19. import net.md_5.bungee.event.EventHandler;
  20.  
  21. public class LobbyBalancer extends Module {
  22.  
  23. public LobbyBalancer() {
  24. super("§cLobby Balancer");
  25. }
  26.  
  27. @EventHandler
  28. public void onConnect(ServerConnectEvent event) {
  29. List<ServerInfo> silentLobby = new ArrayList<ServerInfo>();
  30. for (ServerInfo server : ProxyServer.getInstance().getServers().values()) {
  31. String name = server.getName().toLowerCase();
  32. if (name.startsWith("silentlobby")) {
  33. silentLobby.add(server);
  34. }
  35. }
  36.  
  37. List<ServerInfo> servers = new ArrayList<ServerInfo>();
  38. for (ServerInfo server : ProxyServer.getInstance().getServers().values()) {
  39. String name = server.getName().toLowerCase();
  40. if (name.startsWith("lobby")) {
  41. servers.add(server);
  42. }
  43. }
  44.  
  45. List<ServerInfo> premiumServers = new ArrayList<ServerInfo>();
  46. for (ServerInfo server : ProxyServer.getInstance().getServers().values()) {
  47. String name = server.getName().toLowerCase();
  48. if (name.startsWith("premiumlobby")) {
  49. premiumServers.add(server);
  50. }
  51. }
  52.  
  53. if (event.getTarget().getName().equals("Lobby")) {
  54. if((ProfileManager.hasRank(event.getPlayer(), Rank.YOUTUBER))) {
  55. if(SilentLobbyManager.isSilentLobby(event.getPlayer().getUniqueId())) {
  56. if (silentLobby.size() > 0) {
  57. Collections.shuffle(silentLobby);
  58. event.setTarget(silentLobby.get(0));
  59. event.getPlayer().sendMessage(new TextComponent(SilentLobbyManager.getSilentLobbyJoin()));
  60. } else if (premiumServers.size() > 0) {
  61. Collections.shuffle(premiumServers);
  62. event.setTarget(premiumServers.get(0));
  63. event.getPlayer().sendMessage(new TextComponent(Core.getPrefix() + "§cEs konnte §ckeine §cVerbindung §czu §ceinem §cSilentLobby §cServer §chergestellt §cwerden"));
  64. } else if (servers.size() > 0) {
  65. Collections.shuffle(servers);
  66. event.setTarget(servers.get(0));
  67. event.getPlayer().sendMessage(new TextComponent(Core.getPrefix() + "§cEs konnte §ckeine §cVerbindung §czu §ceinem §cSilentLobby §cServer §chergestellt §cwerden"));
  68. } else {
  69. event.setCancelled(true);
  70. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  71. component.setColor(ChatColor.RED);
  72. event.getPlayer().disconnect(component);
  73. }
  74. } else if (premiumServers.size() > 0) {
  75. Collections.shuffle(premiumServers);
  76. event.setTarget(premiumServers.get(0));
  77. } else if (servers.size() > 0) {
  78. Collections.shuffle(servers);
  79. event.setTarget(servers.get(0));
  80. } else {
  81. event.setCancelled(true);
  82. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  83. component.setColor(ChatColor.RED);
  84. event.getPlayer().disconnect(component);
  85. }
  86. } else if(ProfileManager.hasRank(event.getPlayer(), Rank.PREMIUM)) {
  87. if (premiumServers.size() > 0) {
  88. Collections.shuffle(premiumServers);
  89. event.setTarget(premiumServers.get(0));
  90. } else if (servers.size() > 0) {
  91. Collections.shuffle(servers);
  92. event.setTarget(servers.get(0));
  93. } else {
  94. event.setCancelled(true);
  95. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  96. component.setColor(ChatColor.RED);
  97. event.getPlayer().disconnect(component);
  98. }
  99. } else {
  100. if (servers.size() > 0) {
  101. Collections.shuffle(servers);
  102. event.setTarget(servers.get(0));
  103. } else {
  104. event.setCancelled(true);
  105. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  106. component.setColor(ChatColor.RED);
  107. event.getPlayer().disconnect(component);
  108. }
  109. }
  110. } else if(SilentLobbyManager.newJoined.contains(event.getPlayer().getUniqueId())) {
  111. SilentLobbyManager.newJoined.remove(event.getPlayer().getUniqueId());
  112.  
  113. if((ProfileManager.hasRank(event.getPlayer(), Rank.YOUTUBER))) {
  114. if(SilentLobbyManager.isSilentLobby(event.getPlayer().getUniqueId())) {
  115. if (silentLobby.size() > 0) {
  116. Collections.shuffle(silentLobby);
  117. event.setTarget(silentLobby.get(0));
  118. event.getPlayer().sendMessage(new TextComponent(SilentLobbyManager.getSilentLobbyJoin()));
  119. } else if (premiumServers.size() > 0) {
  120. Collections.shuffle(premiumServers);
  121. event.setTarget(premiumServers.get(0));
  122. event.getPlayer().sendMessage(new TextComponent(Core.getPrefix() + "§cEs konnte §ckeine §cVerbindung §czu §ceinem §cSilentLobby §cServer §chergestellt §cwerden"));
  123. } else if (servers.size() > 0) {
  124. Collections.shuffle(servers);
  125. event.setTarget(servers.get(0));
  126. event.getPlayer().sendMessage(new TextComponent(Core.getPrefix() + "§cEs konnte §ckeine §cVerbindung §czu §ceinem §cSilentLobby §cServer §chergestellt §cwerden"));
  127. } else {
  128. event.setCancelled(true);
  129. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  130. component.setColor(ChatColor.RED);
  131. event.getPlayer().disconnect(component);
  132. }
  133. } else if (premiumServers.size() > 0) {
  134. Collections.shuffle(premiumServers);
  135. event.setTarget(premiumServers.get(0));
  136. } else if (servers.size() > 0) {
  137. Collections.shuffle(servers);
  138. event.setTarget(servers.get(0));
  139. } else {
  140. event.setCancelled(true);
  141. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  142. component.setColor(ChatColor.RED);
  143. event.getPlayer().disconnect(component);
  144. }
  145. } else if(ProfileManager.hasRank(event.getPlayer(), Rank.PREMIUM)) {
  146. if (premiumServers.size() > 0) {
  147. Collections.shuffle(premiumServers);
  148. event.setTarget(premiumServers.get(0));
  149. } else if (servers.size() > 0) {
  150. Collections.shuffle(servers);
  151. event.setTarget(servers.get(0));
  152. } else {
  153. event.setCancelled(true);
  154. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  155. component.setColor(ChatColor.RED);
  156. event.getPlayer().disconnect(component);
  157. }
  158. } else {
  159. if (servers.size() > 0) {
  160. Collections.shuffle(servers);
  161. event.setTarget(servers.get(0));
  162. } else {
  163. event.setCancelled(true);
  164. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  165. component.setColor(ChatColor.RED);
  166. event.getPlayer().disconnect(component);
  167. }
  168. }
  169. } else if(event.getTarget().getName().equals(event.getPlayer().getServer().getInfo().getName())) {
  170. event.setCancelled(true);
  171. } else if(event.getTarget().getName().startsWith("SilentLobby")) {
  172. if(ProfileManager.hasRank(event.getPlayer(), Rank.YOUTUBER)) {
  173. if(!(SilentLobbyManager.isSilentLobby(event.getPlayer().getUniqueId()))) {
  174. SilentLobbyManager.setSilentLobby(event.getPlayer().getUniqueId(), true);
  175. event.getPlayer().sendMessage(new TextComponent(SilentLobbyManager.getSilentLobbyJoin()));
  176. }
  177. }
  178. }
  179.  
  180. // try {
  181. // if (event.getTarget().getName().equalsIgnoreCase("Lobby")) {
  182. // ServerInfo emptiest = ProxyServer.getInstance().getServerInfo("Lobby-1");
  183. // for (ServerInfo info : Core.getServers("Lobby")) {
  184. // if (info.getName().equalsIgnoreCase("Lobby") || info.getPlayers().size() >= emptiest.getPlayers().size())
  185. // continue;
  186. // emptiest = info;
  187. // if (info.getPlayers().size() == 0)
  188. // break;
  189. // }
  190. // event.setTarget(emptiest);
  191. // }
  192. // } catch (Exception e) {
  193. // BungeeCord.getInstance().getConsole().sendMessage(new TextComponent(
  194. // Core.getPrefix() + "§cEs konnte keine Verbindung zu einem Lobby Server hergestellt werden"));
  195. // }
  196. }
  197.  
  198. @SuppressWarnings("deprecation")
  199. @EventHandler
  200. public void onDisconnect(ServerKickEvent event) {
  201. String kickReason = BaseComponent.toLegacyText(event.getKickReasonComponent());
  202.  
  203.  
  204. List<ServerInfo> silentLobby = new ArrayList<ServerInfo>();
  205. for (ServerInfo server : ProxyServer.getInstance().getServers().values()) {
  206. String name = server.getName().toLowerCase();
  207. if (name.startsWith("silentlobby")) {
  208. silentLobby.add(server);
  209. }
  210. }
  211.  
  212. List<ServerInfo> servers = new ArrayList<ServerInfo>();
  213. for (ServerInfo server : ProxyServer.getInstance().getServers().values()) {
  214. String name = server.getName().toLowerCase();
  215. if (name.startsWith("lobby")) {
  216. servers.add(server);
  217. }
  218. }
  219.  
  220. List<ServerInfo> premiumServers = new ArrayList<ServerInfo>();
  221. for (ServerInfo server : ProxyServer.getInstance().getServers().values()) {
  222. String name = server.getName().toLowerCase();
  223. if (name.startsWith("premiumlobby")) {
  224. premiumServers.add(server);
  225. }
  226. }
  227.  
  228. if(!(ProfileManager.hasRank(event.getPlayer(), Rank.YOUTUBER))) {
  229. if(SilentLobbyManager.existPlayerSilentLobby(event.getPlayer().getUniqueId())) {
  230. SilentLobbyManager.deletePlayerSilentLobby(event.getPlayer().getUniqueId());
  231.  
  232. if(ProfileManager.hasRank(event.getPlayer(), Rank.PREMIUM)) {
  233. if (premiumServers.size() > 0) {
  234. event.setCancelled(true);
  235. Collections.shuffle(premiumServers);
  236. event.setCancelServer(premiumServers.get(0));
  237. } else if (servers.size() > 0) {
  238. event.setCancelled(true);
  239. Collections.shuffle(servers);
  240. event.setCancelServer(servers.get(0));
  241. } else {
  242. event.setCancelled(true);
  243. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  244. component.setColor(ChatColor.RED);
  245. event.getPlayer().disconnect(component);
  246. }
  247. } else {
  248. if (servers.size() > 0) {
  249. event.setCancelled(true);
  250. Collections.shuffle(servers);
  251. event.setCancelServer(servers.get(0));
  252. } else {
  253. event.setCancelled(true);
  254. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  255. component.setColor(ChatColor.RED);
  256. event.getPlayer().disconnect(component);
  257. }
  258. }
  259. }
  260. }
  261.  
  262. // ProxyServer.getInstance().broadcast(new TextComponent(ChatColor.stripColor(event.getKickReason()).startsWith("#LOGINKICK#") + ""));
  263. // ProxyServer.getInstance().broadcast(new TextComponent(kickReason));
  264. // ProxyServer.getInstance().broadcast(event.getKickReasonComponent());
  265. // ProxyServer.getInstance().broadcast(new TextComponent(event.getKickReason()));
  266. // ProxyServer.getInstance().broadcast(new TextComponent(event.getKickedFrom().getName()));
  267. // ProxyServer.getInstance().broadcast(new TextComponent(event.getState().name()));
  268.  
  269. if(ChatColor.stripColor(kickReason).startsWith("Server geschlossen") || ChatColor.stripColor(kickReason).startsWith("Server closed")) {
  270. if(ProfileManager.hasRank(event.getPlayer(), Rank.YOUTUBER)) {
  271. if(SilentLobbyManager.isSilentLobby(event.getPlayer().getUniqueId())) {
  272. if (silentLobby.size() > 0) {
  273. event.setCancelled(true);
  274. Collections.shuffle(silentLobby);
  275. event.setCancelServer(silentLobby.get(0));
  276. event.getPlayer().sendMessage(new TextComponent(SilentLobbyManager.getSilentLobbyJoin()));
  277. } else if (premiumServers.size() > 0) {
  278. event.setCancelled(true);
  279. Collections.shuffle(premiumServers);
  280. event.setCancelServer(premiumServers.get(0));
  281. event.getPlayer().sendMessage(new TextComponent(Core.getPrefix() + "§cEs konnte §ckeine §cVerbindung §czu §ceinem §cSilentLobby §cServer §chergestellt §cwerden"));
  282. } else if (servers.size() > 0) {
  283. event.setCancelled(true);
  284. Collections.shuffle(servers);
  285. event.setCancelServer(servers.get(0));
  286. event.getPlayer().sendMessage(new TextComponent(Core.getPrefix() + "§cEs konnte §ckeine §cVerbindung §czu §ceinem §cSilentLobby §cServer §chergestellt §cwerden"));
  287. } else {
  288. event.setCancelled(true);
  289. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  290. component.setColor(ChatColor.RED);
  291. event.setKickReasonComponent(new TextComponent[] { component });
  292. }
  293. } else if (premiumServers.size() > 0) {
  294. event.setCancelled(true);
  295. Collections.shuffle(premiumServers);
  296. event.setCancelServer(premiumServers.get(0));
  297. } else if (servers.size() > 0) {
  298. event.setCancelled(true);
  299. Collections.shuffle(servers);
  300. event.setCancelServer(servers.get(0));
  301. } else {
  302. event.setCancelled(true);
  303. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  304. component.setColor(ChatColor.RED);
  305. event.setKickReasonComponent(new TextComponent[] { component });
  306. }
  307. } else if(ProfileManager.hasRank(event.getPlayer(), Rank.PREMIUM)) {
  308. if (premiumServers.size() > 0) {
  309. event.setCancelled(true);
  310. Collections.shuffle(premiumServers);
  311. event.setCancelServer(premiumServers.get(0));
  312. } else if (servers.size() > 0) {
  313. event.setCancelled(true);
  314. Collections.shuffle(servers);
  315. event.setCancelServer(servers.get(0));
  316. } else {
  317. event.setCancelled(true);
  318. TextComponent component = new TextComponent("Es ist ein Fehler aufgetreten!\n"
  319. + "Bitte versuche es erneut. Sollte der Fehler weiterhinbestehen,\n schicke uns einen Screenshot des\nfolgenden Fehlercode:\n\n" + event.getKickReason());
  320. component.setColor(ChatColor.RED);
  321. event.setKickReasonComponent(new TextComponent[] { component });
  322. }
  323. } else {
  324. if (servers.size() > 0) {
  325. event.setCancelled(true);
  326. Collections.shuffle(servers);
  327. event.setCancelServer(servers.get(0));
  328. } else {
  329. event.setCancelled(true);
  330. TextComponent component = new TextComponent("Es ist ein Fehler aufgetreten!\n"
  331. + "Bitte versuche es erneut und sollte der Fehler weiterhin\nbestehen, schicke uns einen Screenshot des\nfolgenden Fehlercode:\n" + event.getKickReason());
  332. component.setColor(ChatColor.RED);
  333. event.setKickReasonComponent(new TextComponent[] { component });
  334. }
  335. }
  336. } else if(ChatColor.stripColor(kickReason).startsWith("#LOGINKICK#")) {
  337. event.setCancelled(true);
  338. event.setCancelServer(event.getPlayer().getServer().getInfo());
  339. kickReason = kickReason.replaceAll("#LOGINKICK#", "");
  340. event.getPlayer().sendMessage(new TextComponent(kickReason));
  341. } else if(ProfileManager.hasRank(event.getPlayer(), Rank.YOUTUBER)) {
  342. if(SilentLobbyManager.isSilentLobby(event.getPlayer().getUniqueId())) {
  343. if (silentLobby.size() > 0) {
  344. event.setCancelled(true);
  345. Collections.shuffle(silentLobby);
  346. event.setCancelServer(silentLobby.get(0));
  347. event.getPlayer().sendMessage(new TextComponent(SilentLobbyManager.getSilentLobbyJoin()));
  348. } else if (premiumServers.size() > 0) {
  349. event.setCancelled(true);
  350. Collections.shuffle(premiumServers);
  351. event.setCancelServer(premiumServers.get(0));
  352. event.getPlayer().sendMessage(new TextComponent(Core.getPrefix() + "§cEs konnte §ckeine §cVerbindung §czu §ceinem §cSilentLobby §cServer §chergestellt §cwerden"));
  353. } else if (servers.size() > 0) {
  354. event.setCancelled(true);
  355. Collections.shuffle(servers);
  356. event.setCancelServer(servers.get(0));
  357. event.getPlayer().sendMessage(new TextComponent(Core.getPrefix() + "§cEs konnte §ckeine §cVerbindung §czu §ceinem §cSilentLobby §cServer §chergestellt §cwerden"));
  358. } else {
  359. event.setCancelled(true);
  360. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  361. component.setColor(ChatColor.RED);
  362. event.setKickReasonComponent(new TextComponent[] { component });
  363. }
  364. } else if (premiumServers.size() > 0) {
  365. event.setCancelled(true);
  366. Collections.shuffle(premiumServers);
  367. event.setCancelServer(premiumServers.get(0));
  368. } else if (servers.size() > 0) {
  369. event.setCancelled(true);
  370. Collections.shuffle(servers);
  371. event.setCancelServer(servers.get(0));
  372. } else {
  373. event.setCancelled(true);
  374. TextComponent component = new TextComponent("Es konnte keine Verbindung zu einem Lobby Server hergestellt werden!\nBitte versuche es in wenigen Minuten erneut");
  375. component.setColor(ChatColor.RED);
  376. event.setKickReasonComponent(new TextComponent[] { component });
  377. }
  378. } else if(ProfileManager.hasRank(event.getPlayer(), Rank.PREMIUM)) {
  379. if (premiumServers.size() > 0) {
  380. event.setCancelled(true);
  381. Collections.shuffle(premiumServers);
  382. event.setCancelServer(premiumServers.get(0));
  383. } else if (servers.size() > 0) {
  384. event.setCancelled(true);
  385. Collections.shuffle(servers);
  386. event.setCancelServer(servers.get(0));
  387. } else {
  388. event.setCancelled(true);
  389. TextComponent component = new TextComponent("Es ist ein Fehler aufgetreten!\n"
  390. + "Bitte versuche es erneut. Sollte der Fehler weiterhinbestehen,\n schicke uns einen Screenshot des\nfolgenden Fehlercode:\n\n" + event.getKickReason());
  391. component.setColor(ChatColor.RED);
  392. event.setKickReasonComponent(new TextComponent[] { component });
  393. }
  394. } else {
  395. if (servers.size() > 0) {
  396. event.setCancelled(true);
  397. Collections.shuffle(servers);
  398. event.setCancelServer(servers.get(0));
  399. } else {
  400. event.setCancelled(true);
  401. TextComponent component = new TextComponent("Es ist ein Fehler aufgetreten!\n"
  402. + "Bitte versuche es erneut und sollte der Fehler weiterhin\nbestehen, schicke uns einen Screenshot des\nfolgenden Fehlercode:\n" + event.getKickReason());
  403. component.setColor(ChatColor.RED);
  404. event.setKickReasonComponent(new TextComponent[] { component });
  405. }
  406. }
  407. }
  408. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement