Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.16 KB | None | 0 0
  1. package fr.messaging.spigot;
  2.  
  3. import com.google.common.collect.Iterables;
  4. import com.google.common.io.ByteArrayDataInput;
  5. import com.google.common.io.ByteArrayDataOutput;
  6. import com.google.common.io.ByteStreams;
  7. import org.bukkit.Bukkit;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.event.EventHandler;
  10. import org.bukkit.event.Listener;
  11. import org.bukkit.event.player.AsyncPlayerChatEvent;
  12. import org.bukkit.plugin.java.JavaPlugin;
  13. import org.bukkit.plugin.messaging.PluginMessageListener;
  14.  
  15. import java.io.*;
  16. import java.util.*;
  17.  
  18. public class MessagingSpigot extends JavaPlugin implements PluginMessageListener, Listener
  19. {
  20.  
  21. private static MessagingSpigot instance;
  22. private List<String> bungeePlayerList = new ArrayList<>();
  23. private ByteArrayDataOutput bungeeServerListOut = ByteStreams.newDataOutput();
  24. private Set<String> bungeeServers = new HashSet<>();
  25.  
  26. @Override
  27. public void onEnable() {
  28. instance = this;
  29. Logger.info("Plugin loading ...");
  30. this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
  31. getServer().getPluginManager().registerEvents(this, this);
  32. getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
  33.  
  34.  
  35. }
  36.  
  37. @EventHandler
  38. public void onSpeak(AsyncPlayerChatEvent e) {
  39. e.setCancelled(true);
  40. bungeeServerListOut.writeUTF("GetServers");
  41. Objects.requireNonNull(Iterables.getFirst(Bukkit.getOnlinePlayers(), null)).sendPluginMessage(this, "BungeeCord", bungeeServerListOut.toByteArray());
  42.  
  43. ByteArrayDataOutput playerList;
  44. if (bungeePlayerList != null) {
  45. bungeePlayerList.clear();
  46. }
  47.  
  48. for (String s : bungeeServers) {
  49. playerList = ByteStreams.newDataOutput();
  50. playerList.writeUTF("PlayerList");
  51. playerList.writeUTF(s);
  52. Objects.requireNonNull(Iterables.getFirst(Bukkit.getOnlinePlayers(), null)).sendPluginMessage(this, "BungeeCord", playerList.toByteArray());
  53. }
  54.  
  55. Player send = Iterables.getFirst(Bukkit.getOnlinePlayers(), null);
  56.  
  57. try {
  58. Thread.sleep(100);
  59. } catch (InterruptedException ignored) {
  60. ignored.printStackTrace();
  61. }
  62. ByteArrayDataOutput out;
  63. /**
  64. for (Iterator<String> it = bungeePlayerList.iterator(); it.hasNext();) {
  65. String player = it.next();
  66. out = ByteStreams.newDataOutput();
  67. out.writeUTF("Message");
  68. out.writeUTF(player);
  69. out.writeUTF(e.getMessage());
  70. send.sendPluginMessage(this, "BungeeCord", out.toByteArray());
  71. it.remove();
  72. }
  73. **/
  74. for (String player : bungeePlayerList) {
  75. out = ByteStreams.newDataOutput();
  76. out.writeUTF("Message");
  77. out.writeUTF(player);
  78. out.writeUTF(e.getMessage());
  79. send.sendPluginMessage(this, "BungeeCord", out.toByteArray());
  80. bungeePlayerList.remove(player);
  81. }
  82. }
  83.  
  84. @Override
  85. public void onDisable() {
  86.  
  87. instance = null;
  88.  
  89. }
  90.  
  91. public static MessagingSpigot getInstance() {
  92. return instance;
  93. }
  94.  
  95. @Override
  96. public void onPluginMessageReceived(String s, Player player, byte[] bytes) {
  97. if (!s.equals("BungeeCord")) {
  98. return;
  99. }
  100.  
  101. ByteArrayDataInput in = ByteStreams.newDataInput(bytes);
  102. String subChannel = in.readUTF();
  103. if (subChannel.equals("GetServers")) {
  104. String[] servers = in.readUTF().split(", ");
  105. for (String server : servers) {
  106. Bukkit.broadcastMessage(server + " : BULLSHIT SERVER ");
  107. bungeeServers.add(server);
  108. }
  109. }
  110. if (subChannel.equals("PlayerList")) {
  111. String[] players = in.readUTF().split(", ");
  112. String[] pp = in.readUTF().split(", ");
  113. for (String player1 : pp) {
  114. Bukkit.broadcastMessage(player1 + " : BULLSHIT ");
  115. bungeePlayerList.add(player1);
  116. }
  117. bungeePlayerList.addAll(Arrays.asList(pp));
  118. }
  119. }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement