diff --git a/src/mineverse/Aust1n46/chat/MineverseChat.java b/src/mineverse/Aust1n46/chat/MineverseChat.java index 33bc7b9..c972975 100644 --- a/src/mineverse/Aust1n46/chat/MineverseChat.java +++ b/src/mineverse/Aust1n46/chat/MineverseChat.java @@ -147,7 +147,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { private static final Logger log = Logger.getLogger("Minecraft"); public static Set players = new HashSet(); public static Set onlinePlayers = new HashSet(); - public static HashMap networkPlayers = new HashMap(); + public static List networkPlayerNames = new ArrayList(); private boolean firstRun = true; // Plugin Messaging Channel @@ -636,33 +636,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { e.printStackTrace(); } } - - public void updatePlayerList(MineverseChatPlayer mcp, boolean request) { - ByteArrayOutputStream outstream = new ByteArrayOutputStream(); - DataOutputStream out = new DataOutputStream(outstream); - try { - out.writeUTF("Sync"); - if(request) { - out.writeUTF("PlayersReceive"); - // System.out.println(mcp.getPlayer().getServer().getServerName()); - out.writeUTF(this.getServer().getName()); - } - else { - out.writeUTF("PlayersUpdate"); - // System.out.println(networkPlayers.keySet().size()); - out.write(networkPlayers.keySet().size()); - for(String p : networkPlayers.keySet()) { - out.writeUTF(p + "," + networkPlayers.get(p)); - } - } - mcp.getPlayer().sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray()); - // System.out.println("Sync start bottom..."); - out.close(); - } - catch(IOException e) { - e.printStackTrace(); - } - } public static void sendDiscordSRVPluginMessage(String chatChannel, String message) { if(onlinePlayers.size() == 0) { @@ -786,6 +759,13 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { } } } + if(subchannel.equals("PlayerNames")) { + networkPlayerNames.clear(); + int playerCount = msgin.readInt(); + for(int a = 0; a < playerCount; a ++) { + networkPlayerNames.add(msgin.readUTF()); + } + } if(subchannel.equals("Chwho")) { String identifier = msgin.readUTF(); if(identifier.equals("Get")) { @@ -838,16 +818,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { String hash = msgin.readUTF(); this.getServer().dispatchCommand(this.getServer().getConsoleSender(), "removemessage " + hash); } - if(subchannel.equals("PlayersUpdate")) { - networkPlayers.clear(); - int size = msgin.read(); - for(int a = 1; a <= size; a++) { - String p = msgin.readUTF(); - String[] parts = p.split(","); - networkPlayers.put(parts[0], parts[1]); - System.out.print(p); - } - } if(subchannel.equals("Sync")) { if(this.getConfig().getString("loglevel", "info").equals("debug")) { Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Received update...")); diff --git a/src/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java b/src/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java index c1339b4..15ef092 100644 --- a/src/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java +++ b/src/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java @@ -24,6 +24,8 @@ import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.Server; import net.md_5.bungee.api.event.PluginMessageEvent; +import net.md_5.bungee.api.event.ServerDisconnectEvent; +import net.md_5.bungee.api.event.ServerSwitchEvent; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.config.Configuration; @@ -38,7 +40,6 @@ public class MineverseChatBungee extends Plugin implements Listener { private Configuration bungeeconfig; private Configuration playerData; public static Set players = new HashSet(); - public static HashMap networkPlayers = new HashMap(); public static String PLUGIN_MESSAGING_CHANNEL = "venturechat:data"; @Override @@ -133,6 +134,37 @@ public class MineverseChatBungee extends Plugin implements Listener { e.printStackTrace(); } } + + @EventHandler + public void onPlayerJoin(ServerSwitchEvent event) { + updatePlayerNames(); + } + + @EventHandler + public void onPlayerLeave(ServerDisconnectEvent event) { + updatePlayerNames(); + } + + private void updatePlayerNames() { + try { + ByteArrayOutputStream outstream = new ByteArrayOutputStream(); + DataOutputStream out = new DataOutputStream(outstream); + out.writeUTF("PlayerNames"); + out.writeInt(this.getProxy().getPlayers().size()); + for(ProxiedPlayer pp : this.getProxy().getPlayers()) { + out.writeUTF(pp.getName()); + } + + for(String send : getProxy().getServers().keySet()) { + if(getProxy().getServers().get(send).getPlayers().size() > 0) { + getProxy().getServers().get(send).sendData(MineverseChatBungee.PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray()); + } + } + } + catch(Exception e) { + e.printStackTrace(); + } + } @EventHandler public void onPluginMessage(PluginMessageEvent ev) { @@ -486,35 +518,6 @@ public class MineverseChatBungee extends Plugin implements Listener { smcp.setSpy(in.readBoolean()); smcp.setMessageToggle(in.readBoolean()); } - if(identifier.equals("PlayersReceive")) { - String server = in.readUTF(); - out.writeUTF("PlayersUpdate"); - out.write(networkPlayers.keySet().size()); - for(String s : networkPlayers.keySet()) { - out.writeUTF(s + "," + networkPlayers.get(s)); - } - if(getProxy().getServers().get(server).getPlayers().size() > 0) - getProxy().getServers().get(server).sendData(MineverseChatBungee.PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray()); - } - if(identifier.equals("PlayersUpdate")) { - networkPlayers.clear(); - int size = in.read(); - //System.out.println(size); - for(int a = 1; a <= size; a ++) { - String player = in.readUTF(); - String[] parts = player.split(","); - networkPlayers.put(parts[0], parts[1]); - } - out.writeUTF("PlayersUpdate"); - out.write(networkPlayers.keySet().size()); - for(String s : networkPlayers.keySet()) { - out.writeUTF(s + "," + networkPlayers.get(s)); - } - for(String send : getProxy().getServers().keySet()) { - if(getProxy().getServers().get(send).getPlayers().size() > 0) - getProxy().getServers().get(send).sendData(MineverseChatBungee.PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray()); - } - } } if(subchannel.equals("Mute")) { String identifier = in.readUTF(); diff --git a/src/mineverse/Aust1n46/chat/command/message/MessageCommandExecutor.java b/src/mineverse/Aust1n46/chat/command/message/MessageCommandExecutor.java index f25becf..3b2e01b 100644 --- a/src/mineverse/Aust1n46/chat/command/message/MessageCommandExecutor.java +++ b/src/mineverse/Aust1n46/chat/command/message/MessageCommandExecutor.java @@ -2,7 +2,6 @@ package mineverse.Aust1n46.chat.command.message; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; -import java.util.ArrayList; import java.util.List; import org.bukkit.ChatColor; @@ -165,12 +164,10 @@ public class MessageCommandExecutor implements TabExecutor { @Override public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { - List completions = new ArrayList<>(); - - for(Player p : plugin.getServer().getOnlinePlayers()) { - completions.add(p.getName()); + if(plugin.getConfig().getBoolean("bungeecordmessaging", true)) { + return MineverseChat.networkPlayerNames; } - return completions; + return null; } private void sendBungeeCordMessage(MineverseChatPlayer mcp, String command, String[] args) {