Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fr.messaging.spigot;
- import com.google.common.collect.Iterables;
- import com.google.common.io.ByteArrayDataInput;
- import com.google.common.io.ByteArrayDataOutput;
- import com.google.common.io.ByteStreams;
- import org.bukkit.Bukkit;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.AsyncPlayerChatEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.plugin.messaging.PluginMessageListener;
- import java.io.*;
- import java.util.*;
- public class MessagingSpigot extends JavaPlugin implements PluginMessageListener, Listener
- {
- private static MessagingSpigot instance;
- private List<String> bungeePlayerList = new ArrayList<>();
- private ByteArrayDataOutput bungeeServerListOut = ByteStreams.newDataOutput();
- private Set<String> bungeeServers = new HashSet<>();
- @Override
- public void onEnable() {
- instance = this;
- Logger.info("Plugin loading ...");
- this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
- getServer().getPluginManager().registerEvents(this, this);
- getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
- }
- @EventHandler
- public void onSpeak(AsyncPlayerChatEvent e) {
- e.setCancelled(true);
- bungeeServerListOut.writeUTF("GetServers");
- Objects.requireNonNull(Iterables.getFirst(Bukkit.getOnlinePlayers(), null)).sendPluginMessage(this, "BungeeCord", bungeeServerListOut.toByteArray());
- ByteArrayDataOutput playerList;
- if (bungeePlayerList != null) {
- bungeePlayerList.clear();
- }
- for (String s : bungeeServers) {
- playerList = ByteStreams.newDataOutput();
- playerList.writeUTF("PlayerList");
- playerList.writeUTF(s);
- Objects.requireNonNull(Iterables.getFirst(Bukkit.getOnlinePlayers(), null)).sendPluginMessage(this, "BungeeCord", playerList.toByteArray());
- }
- Player send = Iterables.getFirst(Bukkit.getOnlinePlayers(), null);
- try {
- Thread.sleep(100);
- } catch (InterruptedException ignored) {
- ignored.printStackTrace();
- }
- ByteArrayDataOutput out;
- /**
- for (Iterator<String> it = bungeePlayerList.iterator(); it.hasNext();) {
- String player = it.next();
- out = ByteStreams.newDataOutput();
- out.writeUTF("Message");
- out.writeUTF(player);
- out.writeUTF(e.getMessage());
- send.sendPluginMessage(this, "BungeeCord", out.toByteArray());
- it.remove();
- }
- **/
- for (String player : bungeePlayerList) {
- out = ByteStreams.newDataOutput();
- out.writeUTF("Message");
- out.writeUTF(player);
- out.writeUTF(e.getMessage());
- send.sendPluginMessage(this, "BungeeCord", out.toByteArray());
- bungeePlayerList.remove(player);
- }
- }
- @Override
- public void onDisable() {
- instance = null;
- }
- public static MessagingSpigot getInstance() {
- return instance;
- }
- @Override
- public void onPluginMessageReceived(String s, Player player, byte[] bytes) {
- if (!s.equals("BungeeCord")) {
- return;
- }
- ByteArrayDataInput in = ByteStreams.newDataInput(bytes);
- String subChannel = in.readUTF();
- if (subChannel.equals("GetServers")) {
- String[] servers = in.readUTF().split(", ");
- for (String server : servers) {
- Bukkit.broadcastMessage(server + " : BULLSHIT SERVER ");
- bungeeServers.add(server);
- }
- }
- if (subChannel.equals("PlayerList")) {
- String[] players = in.readUTF().split(", ");
- String[] pp = in.readUTF().split(", ");
- for (String player1 : pp) {
- Bukkit.broadcastMessage(player1 + " : BULLSHIT ");
- bungeePlayerList.add(player1);
- }
- bungeePlayerList.addAll(Arrays.asList(pp));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement