From 55186b4cae439dc9b04d89227aeda4e2c6899e33 Mon Sep 17 00:00:00 2001 From: Aust1n46 Date: Mon, 18 Feb 2019 10:10:15 -0500 Subject: [PATCH] Updated player data saving to always use Mojang online mode UUID's. Updated /chwho command to show all players listening to BungeeCord channels on every server in the network --- MineverseChat/Players.yml | 16 +--- MineverseChat/bungee.yml | 2 +- .../Aust1n46/chat/MineverseChat.java | 59 +++++++++++--- .../Aust1n46/chat/api/MineverseChatAPI.java | 4 +- .../chat/api/MineverseChatPlayer.java | 2 +- .../api/SynchronizedMineverseChatPlayer.java | 15 ++++ .../chat/bungee/MineverseChatBungee.java | 77 +++++++++++++++---- .../Aust1n46/chat/command/chat/Chwho.java | 23 ++++++ .../chat/listeners/CommandListener.java | 6 +- .../chat/listeners/LoginListener.java | 7 +- MineverseChat/plugin.yml | 2 +- 11 files changed, 161 insertions(+), 52 deletions(-) diff --git a/MineverseChat/Players.yml b/MineverseChat/Players.yml index 74b30df..50651a1 100644 --- a/MineverseChat/Players.yml +++ b/MineverseChat/Players.yml @@ -1,15 +1 @@ -players: - 5771a47a-74b4-35c1-aa03-6713ad69554e: - name: PhantomsCore - current: Global - ignores: '' - listen: Global,Noob,Local - mutes: '' - blockedcommands: '' - mail: '' - host: false - party: '' - filter: true - notifications: true - nickname: Phantom - date: 2014/Dec/02 17:12:40 \ No newline at end of file +players: {} \ No newline at end of file diff --git a/MineverseChat/bungee.yml b/MineverseChat/bungee.yml index 3a57023..f64fb59 100644 --- a/MineverseChat/bungee.yml +++ b/MineverseChat/bungee.yml @@ -1,4 +1,4 @@ name: VentureChat main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee -version: 2.14.2 +version: 2.14.3 author: Aust1n46 \ No newline at end of file diff --git a/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java b/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java index 230fed7..d2480c9 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java +++ b/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java @@ -283,6 +283,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { else { for(Player p : this.getServer().getOnlinePlayers()) { MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(p); + mcp.setName(p.getName()); mcp.setOnline(true); } } @@ -785,6 +786,8 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { System.out.println(msgin.available() + " size on receiving end"); } String subchannel = msgin.readUTF(); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + DataOutputStream out = new DataOutputStream(stream); if(subchannel.equals("Chat")) { String chatchannel = msgin.readUTF(); String chat = msgin.readUTF(); @@ -822,6 +825,50 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { } } } + if(subchannel.equals("Chwho")) { + String identifier = msgin.readUTF(); + if(identifier.equals("Get")) { + String sender = msgin.readUTF(); + String chatchannel = msgin.readUTF(); + List listening = new ArrayList(); + if(ccInfo.isChannel(chatchannel)) { + for(MineverseChatPlayer mcp : onlinePlayers) { + if(mcp.getListening().contains(chatchannel)) { + String entry = "&f" + mcp.getName(); + if(mcp.isMuted(chatchannel)) { + entry = "&c" + mcp.getName(); + } + listening.add(entry); + } + } + } + out.writeUTF("Chwho"); + out.writeUTF("Receive"); + out.writeUTF(sender); + out.writeUTF(chatchannel); + out.writeInt(listening.size()); + for(String s : listening) { + out.writeUTF(s); + } + player.sendPluginMessage(this, "venturechat:", stream.toByteArray()); + } + if(identifier.equals("Receive")) { + String sender = msgin.readUTF(); + String stringchannel = msgin.readUTF(); + MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer(UUID.fromString(sender)); + ChatChannel chatchannel = ccInfo.getChannelInfo(stringchannel); + String playerList = ""; + int size = msgin.readInt(); + for(int a = 0; a < size; a++) { + playerList += msgin.readUTF() + ChatColor.WHITE + ", "; + } + if(playerList.length() > 2) { + playerList = playerList.substring(0, playerList.length() - 2); + } + mcp.getPlayer().sendMessage(ChatColor.GOLD + "Players in Channel: " + ChatColor.valueOf(chatchannel.getColor().toUpperCase()) + chatchannel.getName()); + mcp.getPlayer().sendMessage(Format.FormatStringAll(playerList)); + } + } if(subchannel.equals("RemoveMessage")) { String hash = msgin.readUTF(); this.getServer().dispatchCommand(this.getServer().getConsoleSender(), "removemessage " + hash); @@ -911,8 +958,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { String receiver = msgin.readUTF(); MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(receiver); UUID sender = UUID.fromString(msgin.readUTF()); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - DataOutputStream out = new DataOutputStream(stream); if(!plugin.getConfig().getBoolean("bungeecordmessaging", true) || p == null || !p.isOnline()) { out.writeUTF("Ignore"); out.writeUTF("Offline"); @@ -963,8 +1008,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { String msg = msgin.readUTF(); String echo = msgin.readUTF(); String spy = msgin.readUTF(); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - DataOutputStream out = new DataOutputStream(stream); // System.out.println((p == null) + " null"); if(p != null) { // System.out.println(p.isOnline() + " online"); @@ -1096,8 +1139,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { int numtime = 0; MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer); ChatChannel cc = ccInfo.getChannelInfo(chatchannel); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - DataOutputStream out = new DataOutputStream(stream); if(cc == null) { try { out.writeUTF("Mute"); @@ -1239,8 +1280,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { String server = msgin.readUTF(); Player mp = Bukkit.getPlayer(muteplayer); MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - DataOutputStream out = new DataOutputStream(stream); if(mp == null) { try { out.writeUTF("Muteall"); @@ -1289,8 +1328,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { String server = msgin.readUTF(); Player mp = Bukkit.getPlayer(muteplayer); MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - DataOutputStream out = new DataOutputStream(stream); if(mp == null) { try { out.writeUTF("Unmuteall"); @@ -1338,8 +1375,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { String server = msgin.readUTF(); MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer); ChatChannel cc = ccInfo.getChannelInfo(chatchannel); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - DataOutputStream out = new DataOutputStream(stream); if(cc == null) { try { out.writeUTF("Unmute"); diff --git a/MineverseChat/mineverse/Aust1n46/chat/api/MineverseChatAPI.java b/MineverseChat/mineverse/Aust1n46/chat/api/MineverseChatAPI.java index 0a6d0bc..ff187b5 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/api/MineverseChatAPI.java +++ b/MineverseChat/mineverse/Aust1n46/chat/api/MineverseChatAPI.java @@ -12,7 +12,7 @@ import org.bukkit.entity.Player; public final class MineverseChatAPI { public static MineverseChatPlayer getMineverseChatPlayer(Player player) { for(MineverseChatPlayer mcp : MineverseChat.players) { - if(mcp.getUUID().toString().equals(player.getUniqueId().toString())) { + if(mcp.getName().equals(player.getName())) { return mcp; } } @@ -39,7 +39,7 @@ public final class MineverseChatAPI { public static MineverseChatPlayer getOnlineMineverseChatPlayer(Player player) { for(MineverseChatPlayer mcp : MineverseChat.onlinePlayers) { - if(mcp.getUUID().toString().equals(player.getUniqueId().toString())) { + if(mcp.getName().equals(player.getName())) { return mcp; } } diff --git a/MineverseChat/mineverse/Aust1n46/chat/api/MineverseChatPlayer.java b/MineverseChat/mineverse/Aust1n46/chat/api/MineverseChatPlayer.java index 17d45ce..df88c4f 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/api/MineverseChatPlayer.java +++ b/MineverseChat/mineverse/Aust1n46/chat/api/MineverseChatPlayer.java @@ -311,7 +311,7 @@ public class MineverseChatPlayer { public void setOnline(boolean online) { this.online = online; if(this.online) { - this.player = Bukkit.getPlayer(this.uuid); + this.player = Bukkit.getPlayer(name); } else { this.player = null; diff --git a/MineverseChat/mineverse/Aust1n46/chat/api/SynchronizedMineverseChatPlayer.java b/MineverseChat/mineverse/Aust1n46/chat/api/SynchronizedMineverseChatPlayer.java index 0c06a49..591aaa0 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/api/SynchronizedMineverseChatPlayer.java +++ b/MineverseChat/mineverse/Aust1n46/chat/api/SynchronizedMineverseChatPlayer.java @@ -1,6 +1,8 @@ package mineverse.Aust1n46.chat.api; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Set; import java.util.UUID; @@ -10,6 +12,7 @@ public class SynchronizedMineverseChatPlayer { private HashMap mutes; private Set ignores; private int messagePackets; + private List messageData = new ArrayList(); private boolean spy; private boolean messageToggle; @@ -22,6 +25,18 @@ public class SynchronizedMineverseChatPlayer { this.messageToggle = messageToggle; } + public List getMessageData() { + return this.messageData; + } + + public void addData(String s) { + this.messageData.add(s); + } + + public void clearMessageData() { + this.messageData.clear(); + } + public int getMessagePackets() { return this.messagePackets; } diff --git a/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java b/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java index cde2fab..25030ee 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java +++ b/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java @@ -176,6 +176,55 @@ public class MineverseChatBungee extends Plugin implements Listener { } } } + if(subchannel.equals("Chwho")) { + String identifier = in.readUTF(); + if(identifier.equals("Get")) { + String sender = in.readUTF(); + String channel = in.readUTF(); + SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender)); + smcp.clearMessagePackets(); + smcp.clearMessageData(); + out.writeUTF("Chwho"); + out.writeUTF("Get"); + out.writeUTF(sender); + out.writeUTF(channel); + for(String send : getProxy().getServers().keySet()) { + if(getProxy().getServers().get(send).getPlayers().size() > 0) { + getProxy().getServers().get(send).sendData("venturechat:", outstream.toByteArray()); + } + } + } + if(identifier.equals("Receive")) { + String sender = in.readUTF(); + String channel = in.readUTF(); + SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender)); + smcp.incrementMessagePackets(); + int players = in.readInt(); + for(int a = 0; a < players; a++) { + smcp.addData(in.readUTF()); + } + int servers = 0; + for(String send : getProxy().getServers().keySet()) { + if(getProxy().getServers().get(send).getPlayers().size() > 0) { + servers ++; + } + } + if(smcp.getMessagePackets() >= servers) { + smcp.clearMessagePackets(); + out.writeUTF("Chwho"); + out.writeUTF("Receive"); + out.writeUTF(sender); + out.writeUTF(channel); + out.writeInt(smcp.getMessageData().size()); + for(String s : smcp.getMessageData()) { + out.writeUTF(s); + } + smcp.clearMessageData(); + Server server = getProxy().getPlayer(UUID.fromString(sender)).getServer(); + server.sendData("venturechat:", outstream.toByteArray()); + } + } + } if(subchannel.equals("RemoveMessage")) { String hash = in.readUTF(); out.writeUTF("RemoveMessage"); @@ -194,12 +243,12 @@ public class MineverseChatBungee extends Plugin implements Listener { String sender = in.readUTF(); SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender)); smcp.clearMessagePackets(); + out.writeUTF("Ignore"); + out.writeUTF("Send"); + out.writeUTF(server); + out.writeUTF(player); + out.writeUTF(sender); for(String send : getProxy().getServers().keySet()) { - out.writeUTF("Ignore"); - out.writeUTF("Send"); - out.writeUTF(server); - out.writeUTF(player); - out.writeUTF(sender); if(getProxy().getServers().get(send).getPlayers().size() > 0) { getProxy().getServers().get(send).sendData("venturechat:", outstream.toByteArray()); } @@ -253,16 +302,16 @@ public class MineverseChatBungee extends Plugin implements Listener { String spy = in.readUTF(); SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender)); smcp.clearMessagePackets(); + out.writeUTF("Message"); + out.writeUTF("Send"); + out.writeUTF(server); + out.writeUTF(player); + out.writeUTF(sender); + out.writeUTF(sName); + out.writeUTF(message); + out.writeUTF(echo); + out.writeUTF(spy); for(String send : getProxy().getServers().keySet()) { - out.writeUTF("Message"); - out.writeUTF("Send"); - out.writeUTF(server); - out.writeUTF(player); - out.writeUTF(sender); - out.writeUTF(sName); - out.writeUTF(message); - out.writeUTF(echo); - out.writeUTF(spy); if(getProxy().getServers().get(send).getPlayers().size() > 0) { getProxy().getServers().get(send).sendData("venturechat:", outstream.toByteArray()); } diff --git a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Chwho.java b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Chwho.java index 4bd85cc..d3a127e 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Chwho.java +++ b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Chwho.java @@ -1,5 +1,8 @@ package mineverse.Aust1n46.chat.command.chat; +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; + import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.CommandSender; @@ -17,6 +20,7 @@ import mineverse.Aust1n46.chat.api.MineverseChatPlayer; import mineverse.Aust1n46.chat.channel.ChatChannel; import mineverse.Aust1n46.chat.channel.ChatChannelInfo; import mineverse.Aust1n46.chat.command.MineverseCommand; +import mineverse.Aust1n46.chat.utilities.UUIDFetcher; @SuppressWarnings("unused") public class Chwho extends MineverseCommand { @@ -43,6 +47,25 @@ public class Chwho extends MineverseCommand { return; } } + + if(channel.getBungee() && sender instanceof Player) { + MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer((Player) sender); + ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream(); + DataOutputStream out = new DataOutputStream(byteOutStream); + try { + out.writeUTF("Chwho"); + out.writeUTF("Get"); + out.writeUTF(mcp.getUUID().toString()); + out.writeUTF(channel.getName()); + mcp.getPlayer().sendPluginMessage(plugin, "venturechat:", byteOutStream.toByteArray()); + out.close(); + } + catch(Exception e) { + e.printStackTrace(); + } + return; + } + PluginManager pluginManager = plugin.getServer().getPluginManager(); long linecount = plugin.getLineLength(); for(MineverseChatPlayer p : MineverseChat.onlinePlayers) { diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java index ea869e2..6faf158 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java @@ -58,9 +58,9 @@ public class CommandListener implements CommandExecutor, Listener { public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) throws FileNotFoundException { ConfigurationSection cs = plugin.getConfig().getConfigurationSection("commandspy"); Boolean wec = cs.getBoolean("worldeditcommands", true); - MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer()); - for(MineverseChatPlayer p : MineverseChat.players) { - if(p.hasCommandSpy() && p.isOnline()) { + MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer(event.getPlayer()); + for(MineverseChatPlayer p : MineverseChat.onlinePlayers) { + if(p.hasCommandSpy()) { if(wec) { p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + ": " + event.getMessage()); } diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/LoginListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/LoginListener.java index b8fd5c9..9596621 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/LoginListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/LoginListener.java @@ -17,6 +17,7 @@ import mineverse.Aust1n46.chat.channel.ChatChannelInfo; import mineverse.Aust1n46.chat.database.PlayerData; import mineverse.Aust1n46.chat.json.JsonFormat; import mineverse.Aust1n46.chat.utilities.Format; +import mineverse.Aust1n46.chat.utilities.UUIDFetcher; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; @@ -63,12 +64,12 @@ public class LoginListener implements Listener { } @EventHandler(priority = EventPriority.LOW) - public void onPlayerJoin(PlayerJoinEvent event) { + public void onPlayerJoin(PlayerJoinEvent event) throws Exception { MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer()); if(mcp == null) { Player player = event.getPlayer(); - UUID uuid = player.getUniqueId(); String name = player.getName(); + UUID uuid = UUIDFetcher.getUUIDOf(name); ChatChannel current = cc.getDefaultChannel(); Set ignores = new HashSet(); Set listening = new HashSet(); @@ -80,6 +81,7 @@ public class LoginListener implements Listener { mcp = new MineverseChatPlayer(uuid, name, current, ignores, listening, mutes, blockedCommands, mail, false, null, true, true, name, jsonFormat, false, false, false, true, true, true); MineverseChat.players.add(mcp); } + mcp.setName(event.getPlayer().getName()); mcp.setOnline(true); mcp.setHasPlayed(false); MineverseChat.onlinePlayers.add(mcp); @@ -94,7 +96,6 @@ public class LoginListener implements Listener { if(mcp.getNickname().equals(mcp.getName())) { mcp.setNickname(event.getPlayer().getName()); } - mcp.setName(event.getPlayer().getName()); mcp.getPlayer().setDisplayName(Format.FormatStringAll(mcp.getNickname())); String nick = mcp.getNickname(); if(nick.length() >= 16) { diff --git a/MineverseChat/plugin.yml b/MineverseChat/plugin.yml index 36c94ea..f760a94 100644 --- a/MineverseChat/plugin.yml +++ b/MineverseChat/plugin.yml @@ -1,5 +1,5 @@ name: VentureChat -version: 2.14.2 +version: 2.14.3 main: mineverse.Aust1n46.chat.MineverseChat depend: [Vault, ProtocolLib, PlaceholderAPI] softdepend: [Towny, Factions, Heroes]