84 lines
3.4 KiB
Java
84 lines
3.4 KiB
Java
package net.t2code.t2codelib.SPIGOT.api.bungeePlayers;
|
|
|
|
import lombok.Getter;
|
|
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
|
|
import net.t2code.t2codelib.SPIGOT.system.T2CodeLibMain;
|
|
import net.t2code.t2codelib.Util;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.plugin.messaging.PluginMessageListener;
|
|
|
|
import java.io.*;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
|
|
public class T2CbungeePlayers implements PluginMessageListener {
|
|
@Getter
|
|
private static List<String> bungeePlayers = new ArrayList<>();
|
|
|
|
@Override
|
|
public void onPluginMessageReceived(String channel, Player player, byte[] message) {
|
|
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(message));
|
|
T2Csend.debug(T2CodeLibMain.getPlugin(), "stream: " + stream.toString());
|
|
try {
|
|
T2CbungeePlayersEnum subChannel = T2CbungeePlayersEnum.valueOf(stream.readUTF());
|
|
String input = stream.readUTF();
|
|
String uuid = stream.readUTF();
|
|
T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage received channel: " + channel);
|
|
T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage received subChannel: " + subChannel.name());
|
|
T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage received input: " + input);
|
|
T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage received input2/uuid: " + uuid);
|
|
switch (subChannel) {
|
|
case JOIN:
|
|
bungeePlayers.add(input);
|
|
break;
|
|
case QUIT:
|
|
bungeePlayers.remove(input);
|
|
break;
|
|
case GIVEALL:
|
|
if (!Util.getServerUUID().toString().equals(uuid)) {
|
|
return;
|
|
}
|
|
bungeePlayers.clear();
|
|
String[] in = input.split(";");
|
|
bungeePlayers.addAll(Arrays.asList(in));
|
|
break;
|
|
case CLEAR:
|
|
bungeePlayers.clear();
|
|
break;
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public static void callAllBungeePlayers() {
|
|
if (Bukkit.getOnlinePlayers().isEmpty()) {
|
|
Bukkit.getScheduler().runTaskLaterAsynchronously(T2CodeLibMain.getPlugin(), new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
callAllBungeePlayers();
|
|
}
|
|
}, 20L);
|
|
return;
|
|
}
|
|
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
|
DataOutputStream output = new DataOutputStream(stream);
|
|
try {
|
|
output.writeUTF(T2CbungeePlayersEnum.GIVEALL.name());
|
|
output.writeUTF(Util.getServerUUID().toString());
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
|
player.sendPluginMessage(T2CodeLibMain.getPlugin(), "t2c:bonlp", stream.toByteArray());
|
|
T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage received channel: t2c:bonlp");
|
|
T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage send subChannel: " + T2CbungeePlayersEnum.GIVEALL.name());
|
|
T2Csend.debug(T2CodeLibMain.getPlugin(), "PluginMessage send output/uuid: " + Util.getServerUUID().toString());
|
|
return;
|
|
}
|
|
}
|
|
}
|