diff --git a/pom.xml b/pom.xml
index 8f8f9ef..4ff1bfc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
net.t2code
T2CodeLib
- 13.9
+ 14.0
jar
T2CodeLib
diff --git a/src/main/java/net/t2code/t2codelib/BUNGEE/api/bungeePlayers/T2CBbungeePlayers.java b/src/main/java/net/t2code/t2codelib/BUNGEE/api/bungeePlayers/T2CBbungeePlayers.java
new file mode 100644
index 0000000..5a847ed
--- /dev/null
+++ b/src/main/java/net/t2code/t2codelib/BUNGEE/api/bungeePlayers/T2CBbungeePlayers.java
@@ -0,0 +1,99 @@
+package net.t2code.t2codelib.BUNGEE.api.bungeePlayers;
+
+import net.md_5.bungee.BungeeCord;
+import net.md_5.bungee.api.ProxyServer;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
+import net.md_5.bungee.api.event.PlayerDisconnectEvent;
+import net.md_5.bungee.api.event.PluginMessageEvent;
+import net.md_5.bungee.api.event.PostLoginEvent;
+import net.md_5.bungee.api.plugin.Listener;
+import net.md_5.bungee.event.EventHandler;
+import net.t2code.t2codelib.BUNGEE.api.messages.T2CBsend;
+import net.t2code.t2codelib.BUNGEE.system.T2CodeBMain;
+import net.t2code.t2codelib.SPIGOT.api.bungeePlayers.T2CbungeePlayersEnum;
+
+import java.io.*;
+import java.util.logging.Logger;
+
+public class T2CBbungeePlayers implements Listener {
+
+ @EventHandler
+ public void onJoin(PostLoginEvent e) {
+ sendToSpigotPlayer(e.getPlayer().getName(), T2CbungeePlayersEnum.JOIN, "");
+ }
+
+ @EventHandler
+ public void onDisconnect(PlayerDisconnectEvent e) {
+ sendToSpigotPlayer(e.getPlayer().getName(), T2CbungeePlayersEnum.QUIT, "");
+ }
+
+ public static void sendToSpigotPlayer(String name, T2CbungeePlayersEnum value, String uuid) {
+ switch (value) {
+ case JOIN:
+ case QUIT:
+ sendToSpigotPlayerExecute(name, value, uuid);
+ break;
+ case GIVEALL:
+ StringBuilder input = new StringBuilder();
+ for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) {
+ input.append(player.getName()).append(";");
+ }
+ sendToSpigotPlayerExecute(input.toString(), T2CbungeePlayersEnum.GIVEALL, uuid);
+ break;
+ }
+ }
+
+ private static void sendToSpigotPlayerExecute(String name, T2CbungeePlayersEnum value, String uuid) {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DataOutputStream output = new DataOutputStream(stream);
+ try {
+ output.writeUTF(value.name());
+ output.writeUTF(name);
+ output.writeUTF(uuid);
+ } catch (IOException e) {
+ Logger.getLogger(e.getMessage());
+ }
+ T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received channel: t2c:bonlp");
+ T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received subChannel: " + value.name());
+ T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received input: " + name);
+ T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received input2/uuid: " + uuid);
+ BungeeCord.getInstance().getServers().values().stream().forEach((server) -> {
+ server.sendData("t2c:bonlp", stream.toByteArray());
+ });
+ }
+
+ public static void sendToSpigotDeleteAll() {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DataOutputStream output = new DataOutputStream(stream);
+ try {
+ output.writeUTF(T2CbungeePlayersEnum.CLEAR.name());
+ output.writeUTF("");
+ output.writeUTF("");
+ } catch (IOException e) {
+ Logger.getLogger(e.getMessage());
+ }
+ BungeeCord.getInstance().getServers().values().stream().forEach((server) -> {
+ server.sendData("t2c:bonlp", stream.toByteArray());
+ });
+ }
+
+ @EventHandler
+ public void onPluginMessage(PluginMessageEvent event) {
+ if (event.getTag().equalsIgnoreCase("t2c:bonlp")) {
+ DataInputStream stream = new DataInputStream(new ByteArrayInputStream(event.getData()));
+ event.setCancelled(true);
+ try {
+ T2CbungeePlayersEnum subChannel = T2CbungeePlayersEnum.valueOf(stream.readUTF());
+ String input = stream.readUTF();
+
+ T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received channel: " + event.getTag());
+ T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received subChannel: " + subChannel.name());
+ T2CBsend.debug(T2CodeBMain.getPlugin(), "PluginMessage received input/uuid: " + input);
+
+ sendToSpigotPlayer("", subChannel, input);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/t2code/t2codelib/BUNGEE/system/T2CBload.java b/src/main/java/net/t2code/t2codelib/BUNGEE/system/T2CBload.java
index 233828d..11623dc 100644
--- a/src/main/java/net/t2code/t2codelib/BUNGEE/system/T2CBload.java
+++ b/src/main/java/net/t2code/t2codelib/BUNGEE/system/T2CBload.java
@@ -5,6 +5,7 @@ import net.t2code.t2codelib.BUNGEE.api.messages.T2CBsend;
import net.t2code.t2codelib.BUNGEE.api.update.T2CBupdateAPI;
import net.t2code.t2codelib.BUNGEE.system.bstats.T2CBmetrics;
import net.t2code.t2codelib.BUNGEE.system.config.T2CBlibConfig;
+import net.t2code.t2codelib.BUNGEE.api.bungeePlayers.T2CBbungeePlayers;
import net.t2code.t2codelib.BUNGEE.system.pluginMessaging.T2CplmsgBcmd;
import net.t2code.t2codelib.BUNGEE.system.pluginMessaging.autoResponse.T2CapiAutoResponse;
import net.t2code.t2codelib.BUNGEE.system.pluginMessaging.commandgui.T2CapiCGUI;
@@ -39,6 +40,10 @@ public class T2CBload {
plugin.getProxy().registerChannel("t2c:bcmd");
plugin.getProxy().getPluginManager().registerListener(plugin, new T2CplmsgBcmd());
+ plugin.getProxy().registerChannel("t2c:bonlp");
+ plugin.getProxy().getPluginManager().registerListener(plugin, new T2CBbungeePlayers());
+ T2CBbungeePlayers.sendToSpigotDeleteAll();
+
if (T2CBlibConfig.getApiCommandGUIEnable()) {
plugin.getProxy().registerChannel("t2c:cguiopl");
plugin.getProxy().getPluginManager().registerListener(plugin, new T2CapiCGUI());
diff --git a/src/main/java/net/t2code/t2codelib/BUNGEE/system/T2CodeBMain.java b/src/main/java/net/t2code/t2codelib/BUNGEE/system/T2CodeBMain.java
index 0900eae..4202e1a 100644
--- a/src/main/java/net/t2code/t2codelib/BUNGEE/system/T2CodeBMain.java
+++ b/src/main/java/net/t2code/t2codelib/BUNGEE/system/T2CodeBMain.java
@@ -1,9 +1,9 @@
package net.t2code.t2codelib.BUNGEE.system;
-import lombok.NonNull;
import net.kyori.adventure.platform.bungeecord.BungeeAudiences;
import net.md_5.bungee.api.plugin.Plugin;
import net.t2code.t2codelib.BUNGEE.api.messages.T2CBsend;
+import net.t2code.t2codelib.BUNGEE.api.bungeePlayers.T2CBbungeePlayers;
import net.t2code.t2codelib.Util;
public class T2CodeBMain extends Plugin {
@@ -51,6 +51,7 @@ public class T2CodeBMain extends Plugin {
@Override
public void onDisable() {
// Plugin shutdown logic
+ T2CBbungeePlayers.sendToSpigotDeleteAll();
if (mmIsLoad){
if(adventure != null) {
adventure.close();
diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/api/bungeePlayers/T2CbungeePlayers.java b/src/main/java/net/t2code/t2codelib/SPIGOT/api/bungeePlayers/T2CbungeePlayers.java
new file mode 100644
index 0000000..16a400d
--- /dev/null
+++ b/src/main/java/net/t2code/t2codelib/SPIGOT/api/bungeePlayers/T2CbungeePlayers.java
@@ -0,0 +1,84 @@
+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 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;
+ }
+ }
+}
diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/api/bungeePlayers/T2CbungeePlayersEnum.java b/src/main/java/net/t2code/t2codelib/SPIGOT/api/bungeePlayers/T2CbungeePlayersEnum.java
new file mode 100644
index 0000000..d769e53
--- /dev/null
+++ b/src/main/java/net/t2code/t2codelib/SPIGOT/api/bungeePlayers/T2CbungeePlayersEnum.java
@@ -0,0 +1,8 @@
+package net.t2code.t2codelib.SPIGOT.api.bungeePlayers;
+
+public enum T2CbungeePlayersEnum {
+ JOIN,
+ QUIT,
+ GIVEALL,
+ CLEAR
+}
diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/api/commands/T2Ccmd.java b/src/main/java/net/t2code/t2codelib/SPIGOT/api/commands/T2Ccmd.java
index 347b50a..cabd1bf 100644
--- a/src/main/java/net/t2code/t2codelib/SPIGOT/api/commands/T2Ccmd.java
+++ b/src/main/java/net/t2code/t2codelib/SPIGOT/api/commands/T2Ccmd.java
@@ -1,24 +1,24 @@
package net.t2code.t2codelib.SPIGOT.api.commands;
-import net.t2code.t2codelib.SPIGOT.system.BCommandSenderReciver;
+import net.t2code.t2codelib.SPIGOT.system.T2CbungeeCommandSenderReciver;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
public class T2Ccmd {
public static void console(String cmd) {
if (cmd.contains("!onBungee")){
- BCommandSenderReciver.sendToBungee(null, cmd.replace("!onBungee", ""), true);
+ T2CbungeeCommandSenderReciver.sendToBungee(null, cmd.replace("!onBungee", ""), true);
}else Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), cmd);
}
public static void player(Player player, String cmd) {
if (cmd.contains("!asConsole")) {
if (cmd.contains("!onBungee")) {
- BCommandSenderReciver.sendToBungee(player, cmd.replace("!asConsole", "").replace("!onBungee", ""), true);
+ T2CbungeeCommandSenderReciver.sendToBungee(player, cmd.replace("!asConsole", "").replace("!onBungee", ""), true);
} else console(cmd.replace("!asConsole", ""));
} else {
if (cmd.contains("!onBungee")) {
- BCommandSenderReciver.sendToBungee(player, cmd.replace("!onBungee", ""), false);
+ T2CbungeeCommandSenderReciver.sendToBungee(player, cmd.replace("!onBungee", ""), false);
} else player.chat("/" + cmd);
}
}
diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/api/messages/T2Csend.java b/src/main/java/net/t2code/t2codelib/SPIGOT/api/messages/T2Csend.java
index 788703f..c91a365 100644
--- a/src/main/java/net/t2code/t2codelib/SPIGOT/api/messages/T2Csend.java
+++ b/src/main/java/net/t2code/t2codelib/SPIGOT/api/messages/T2Csend.java
@@ -44,16 +44,20 @@ public class T2Csend {
public static void debug(Plugin plugin, String msg, Integer stage) {
// if (!new File(Main.getPath(), "config.yml").exists()) return;
if (stage == null) {
- if (plugin.getConfig().getBoolean("Plugin.Debug"))
+ if (plugin.getConfig().getBoolean("Plugin.Debug") || plugin.getConfig().getBoolean("plugin.debug") || plugin.getConfig().getBoolean("Debug") || plugin.getConfig().getBoolean("debug")){
+ info(plugin, "");
Bukkit.getConsoleSender().sendMessage(plugin.getDescription().getPrefix() + " §5DEBUG: §6" + msg);
+ }
return;
}
- if (plugin.getConfig().getInt("Plugin.Debug") >= stage)
+ if (plugin.getConfig().getInt("Plugin.Debug") >= stage || plugin.getConfig().getInt("plugin.debug") >= stage || plugin.getConfig().getInt("Debug") >= stage || plugin.getConfig().getInt("debug") >= stage) {
+ info(plugin, "");
Bukkit.getConsoleSender().sendMessage(plugin.getDescription().getPrefix() + " §5DEBUG: §6" + msg);
+ }
}
public static void debugmsg(Plugin plugin, String msg) {
- warning(plugin,"");
+ warning(plugin, "");
Bukkit.getConsoleSender().sendMessage("§e[" + plugin.getDescription().getPrefix() + "] §5DEBUG-MSG: §6" + msg);
}
diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/system/BCommandSenderReciver.java b/src/main/java/net/t2code/t2codelib/SPIGOT/system/T2CbungeeCommandSenderReciver.java
similarity index 96%
rename from src/main/java/net/t2code/t2codelib/SPIGOT/system/BCommandSenderReciver.java
rename to src/main/java/net/t2code/t2codelib/SPIGOT/system/T2CbungeeCommandSenderReciver.java
index 97ab8c4..b585d5e 100644
--- a/src/main/java/net/t2code/t2codelib/SPIGOT/system/BCommandSenderReciver.java
+++ b/src/main/java/net/t2code/t2codelib/SPIGOT/system/T2CbungeeCommandSenderReciver.java
@@ -8,7 +8,7 @@ import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
-public class BCommandSenderReciver {
+public class T2CbungeeCommandSenderReciver {
public static void sendToBungee(CommandSender sender, String information, Boolean console) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/system/T2CodeLibMain.java b/src/main/java/net/t2code/t2codelib/SPIGOT/system/T2CodeLibMain.java
index 2776ddd..50b494f 100644
--- a/src/main/java/net/t2code/t2codelib/SPIGOT/system/T2CodeLibMain.java
+++ b/src/main/java/net/t2code/t2codelib/SPIGOT/system/T2CodeLibMain.java
@@ -4,6 +4,7 @@ import lombok.Getter;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.permission.Permission;
+import net.t2code.t2codelib.SPIGOT.api.bungeePlayers.T2CbungeePlayers;
import net.t2code.t2codelib.SPIGOT.api.items.T2CitemVersion;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate;
@@ -50,6 +51,7 @@ public final class T2CodeLibMain extends JavaPlugin {
mmIsLoad = false;
}
long long_ = T2Ctemplate.onLoadHeader(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord());
+ checkIsBungee();
String prefix = Util.getPrefix();
try {
@@ -106,11 +108,17 @@ public final class T2CodeLibMain extends JavaPlugin {
Metrics.Bstats(plugin, Util.getBstatsID());
if (SelectLibConfig.getBungee()) {
Bukkit.getMessenger().registerOutgoingPluginChannel(plugin, "t2c:bcmd");
+ Bukkit.getMessenger().registerOutgoingPluginChannel(plugin, "t2c:bonlp");
+ if (!Bukkit.getMessenger().isIncomingChannelRegistered(plugin, "t2c:bonlp")) {
+ T2Csend.debug(plugin, "registerIncomingPluginChannel §et2c:bonlp");
+ Bukkit.getMessenger().registerIncomingPluginChannel(plugin, "t2c:bonlp", new T2CbungeePlayers());
+ T2CbungeePlayers.callAllBungeePlayers();
+ }
}
ReportLogStorage.load();
Bukkit.getServer().getPluginManager().registerEvents(new JoinEvent(), plugin);
- checkIsBungee();
+
T2Ctemplate.onLoadFooter(prefix, long_);
load = true;
}
diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/system/cmd/CmdExecuter.java b/src/main/java/net/t2code/t2codelib/SPIGOT/system/cmd/CmdExecuter.java
index 32bcf3a..327e68d 100644
--- a/src/main/java/net/t2code/t2codelib/SPIGOT/system/cmd/CmdExecuter.java
+++ b/src/main/java/net/t2code/t2codelib/SPIGOT/system/cmd/CmdExecuter.java
@@ -2,6 +2,7 @@ package net.t2code.t2codelib.SPIGOT.system.cmd;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.t2codelib.SPIGOT.api.update.T2CupdateAPI;
+import net.t2code.t2codelib.SPIGOT.api.bungeePlayers.T2CbungeePlayers;
import net.t2code.t2codelib.T2CupdateObject;
import net.t2code.t2codelib.SPIGOT.system.config.config.SelectLibConfig;
import org.bukkit.command.Command;
@@ -44,6 +45,9 @@ public class CmdExecuter implements CommandExecutor, TabCompleter {
case "debug":
Commands.debug(sender,args);
return false;
+ case "test":
+ T2Csend.sender(sender, T2CbungeePlayers.getBungeePlayers().toString());
+ return false;
default:
T2Csend.sender(sender, "§4Use: §7/t2code debug createReportLog");
diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/system/config/config/ConfigCreate.java b/src/main/java/net/t2code/t2codelib/SPIGOT/system/config/config/ConfigCreate.java
index 4b20482..5abb50e 100644
--- a/src/main/java/net/t2code/t2codelib/SPIGOT/system/config/config/ConfigCreate.java
+++ b/src/main/java/net/t2code/t2codelib/SPIGOT/system/config/config/ConfigCreate.java
@@ -27,7 +27,7 @@ public class ConfigCreate {
T2Cconfig.set("Plugin.UpdateCheck.SeePreReleaseUpdates", true, yamlConfiguration);
T2Cconfig.set("Plugin.language", "english", yamlConfiguration);
- T2Cconfig.set("BungeeCord.Enable", false, yamlConfiguration);
+ T2Cconfig.set("BungeeCord.Enable", T2CodeLibMain.getIsBungee(), yamlConfiguration);
T2Cconfig.set("Player.Inventories.CloseByServerStop", true, yamlConfiguration);
try {
diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/system/config/config/SelectLibConfig.java b/src/main/java/net/t2code/t2codelib/SPIGOT/system/config/config/SelectLibConfig.java
index 5ac9f9a..a78fa7d 100644
--- a/src/main/java/net/t2code/t2codelib/SPIGOT/system/config/config/SelectLibConfig.java
+++ b/src/main/java/net/t2code/t2codelib/SPIGOT/system/config/config/SelectLibConfig.java
@@ -20,7 +20,7 @@ public class SelectLibConfig {
File config = new File(T2CodeLibMain.getPath(), "config.yml");
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
- if (yamlConfiguration.contains("t2cTestDevelopment")){
+ if (yamlConfiguration.contains("t2cTestDevelopment")) {
t2cTestDevelopment = yamlConfiguration.getBoolean("t2cTestDevelopment");
}
diff --git a/src/main/java/net/t2code/t2codelib/Util.java b/src/main/java/net/t2code/t2codelib/Util.java
index f149e52..1b992cf 100644
--- a/src/main/java/net/t2code/t2codelib/Util.java
+++ b/src/main/java/net/t2code/t2codelib/Util.java
@@ -1,10 +1,17 @@
package net.t2code.t2codelib;
+import lombok.Getter;
+
import java.util.Arrays;
import java.util.List;
+import java.util.UUID;
public class Util {
+ @Getter
+ private static final UUID serverUUID = UUID.randomUUID();
+
+
public static String getInfoText() {
return "";
}