Advertisement
Guest User

Untitled

a guest
May 24th, 2015
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.31 KB | None | 0 0
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package br.com.mineland.bungee.redis.communication.actions;
  7.  
  8. import br.com.mineland.bungee.redis.Redis;
  9. import br.com.mineland.bungee.stuff.Proxy;
  10. import br.com.mineland.bungee.user.ProxiedUser;
  11. import br.com.mineland.bungee.utils.ServerUtils;
  12. import br.com.mineland.core.permissions.Permissions;
  13. import java.util.ArrayList;
  14. import java.util.Arrays;
  15. import java.util.HashSet;
  16. import java.util.List;
  17. import java.util.Set;
  18. import java.util.UUID;
  19. import net.md_5.bungee.api.ProxyServer;
  20. import net.md_5.bungee.api.chat.BaseComponent;
  21. import net.md_5.bungee.api.config.ServerInfo;
  22. import net.md_5.bungee.api.connection.ProxiedPlayer;
  23. import net.md_5.bungee.chat.ComponentSerializer;
  24.  
  25. /**
  26. *
  27. * @author LucaAzalim
  28. */
  29. public class RemoteMsg {
  30.  
  31. private List<String> messages = new ArrayList<>();
  32.  
  33. private Set<Permissions> groups = new HashSet<>();
  34. private Set<UUID> players = new HashSet<>();
  35. private Set<String> servers = new HashSet<>();
  36. private Set<Integer> proxies = new HashSet<>();
  37.  
  38. public RemoteMsg(String... messages) {
  39. this.messages.addAll(Arrays.asList(messages));
  40. }
  41.  
  42. public RemoteMsg(BaseComponent... messages) {
  43. for (BaseComponent bc : messages) {
  44. this.messages.add(ComponentSerializer.toString(bc));
  45. }
  46. }
  47.  
  48. /**
  49. * @param groups Grupos para os quais esta mensagem sera enviada.
  50. * @return Objeto modificado.
  51. */
  52. public RemoteMsg specifyGroups(Permissions... groups) {
  53. this.groups.addAll(Arrays.asList(groups));
  54. return this;
  55. }
  56.  
  57. /**
  58. * @param users Especificar usuarios.
  59. * @return Objeto modificado.
  60. */
  61. public RemoteMsg specifyPlayers(ProxiedUser... users) {
  62. for (ProxiedUser user : users) {
  63. this.players.add(user.getUUID());
  64. }
  65. return this;
  66. }
  67.  
  68. /**
  69. * @param servers Especificar servidores.
  70. * @return Objeto modificado.
  71. */
  72. public RemoteMsg specifyServers(ServerInfo... servers) {
  73. for (ServerInfo si : servers) {
  74. this.servers.add(si.getName());
  75. }
  76. return this;
  77. }
  78.  
  79. /**
  80. * @param proxies Especificar proxies.
  81. * @return Objeto modificado.
  82. */
  83. public RemoteMsg specifyProxy(Proxy... proxies) {
  84. for (Proxy p : proxies) {
  85. this.proxies.add(p.getId());
  86. }
  87. return this;
  88. }
  89.  
  90. public void sendRequisition() {
  91.  
  92. }
  93.  
  94. public void handle() {
  95.  
  96. if (!servers.isEmpty()) {
  97. for (String serverName : servers) {
  98.  
  99. ServerInfo info = ProxyServer.getInstance().getServerInfo(serverName);
  100.  
  101. for (ProxiedPlayer player : info.getPlayers()) {
  102.  
  103. UUID uuid = player.getUniqueId();
  104.  
  105. if ((!players.isEmpty() && !players.contains(uuid))
  106. || (!proxies.isEmpty() && !proxies.contains(Proxy.getProxy(uuid).getId()))
  107. || (!groups.isEmpty() && !Permissions.hasOneOfGroups(uuid, groups))) {
  108. continue;
  109. }
  110.  
  111. sendMessage(uuid);
  112. }
  113. }
  114. } else if (!players.isEmpty()) {
  115.  
  116. for (UUID uuid : players) {
  117.  
  118. if ((!proxies.isEmpty() && !proxies.contains(Proxy.getProxy(uuid).getId()))
  119. || (!groups.isEmpty() && !Permissions.hasOneOfGroups(uuid, groups))) {
  120. continue;
  121. }
  122.  
  123. sendMessage(uuid);
  124.  
  125. }
  126. } else if (!groups.isEmpty()) {
  127.  
  128. for (UUID uuid : ServerUtils.getPlayers(true)) {
  129.  
  130. if (!proxies.isEmpty() && !proxies.contains(Proxy.getProxy(uuid).getId())) {
  131. continue;
  132. }
  133.  
  134. sendMessage(uuid);
  135.  
  136. }
  137.  
  138. } else if (!proxies.isEmpty()) {
  139.  
  140. for (int id : proxies) {
  141. for (UUID uuid : Proxy.getProxyById(id).getOnlineUUIDs()) {
  142. sendMessage(uuid);
  143. }
  144. }
  145. }
  146. }
  147.  
  148. private void sendMessage(UUID uuid) {
  149. for (String msg : messages) {
  150. ProxyServer.getInstance().getPlayer(uuid).sendMessage(ComponentSerializer.parse(msg));
  151. }
  152. }
  153.  
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement