diff --git a/MineverseChat/mineverse/Aust1n46/chat/ChatMessage.java b/MineverseChat/mineverse/Aust1n46/chat/ChatMessage.java index 70cd9ce..63bbe1e 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/ChatMessage.java +++ b/MineverseChat/mineverse/Aust1n46/chat/ChatMessage.java @@ -5,7 +5,6 @@ import com.comphenix.protocol.wrappers.WrappedChatComponent; //This class is used to create ChatMessage objects, which are used to store information about previous text components //that were sent to the player. This is a main component in making the message remover work. public class ChatMessage { - private WrappedChatComponent originalComponent; private WrappedChatComponent component; private String sender; private String message; @@ -26,31 +25,10 @@ public class ChatMessage { this.message = message; this.hash = hash; } - - public ChatMessage(String sender, String message, int hash, String format, String chat, String channel) { - this.sender = sender; - this.message = message; - this.format = format; - this.chat = chat; - this.channel = channel; - this.hash = hash; - } - - public ChatMessage(WrappedChatComponent originalComponent, WrappedChatComponent component, String sender, String message, int hash) { - this.originalComponent = originalComponent; - this.component = component; - this.sender = sender; - this.message = message; - this.hash = hash; - } public WrappedChatComponent getComponent() { return this.component; } - - public WrappedChatComponent getOriginalComponent() { - return this.originalComponent; - } public void setComponent(WrappedChatComponent component) { this.component = component; diff --git a/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java b/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java index 9ad7308..4c25676 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java +++ b/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java @@ -108,8 +108,9 @@ import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.Sound; import com.comphenix.protocol.ProtocolLibrary; -import com.comphenix.protocol.ProtocolManager; +import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.utility.MinecraftReflection; +import com.comphenix.protocol.wrappers.WrappedChatComponent; import me.clip.placeholderapi.PlaceholderAPI; @@ -119,12 +120,10 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { private LoginListener loginListener; private SignListener signListener; private CommandListener commandListener; - private PacketListener packetListener; private Channel channelListener; public static String[] playerlist; public static String playerlist_server; public boolean ircListen; - public ProtocolManager protocolManager; public static ChatMessage lastChatMessage; public static String lastJson; public static Method messageMethod; @@ -371,16 +370,16 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { } channelListener = new Channel(); - signListener = new SignListener(this, ccInfo); - chatListener = new ChatListener(this, ccInfo); - commandListener = new CommandListener(this, ccInfo, aaInfo); + signListener = new SignListener(ccInfo); + chatListener = new ChatListener(ccInfo); + commandListener = new CommandListener(ccInfo, aaInfo); PluginManager pluginManager = getServer().getPluginManager(); pluginManager.registerEvents(channelListener, this); pluginManager.registerEvents(chatListener, this); pluginManager.registerEvents(signListener, this); pluginManager.registerEvents(commandListener, this); - loginListener = new LoginListener(this, ccInfo); + loginListener = new LoginListener(ccInfo); pluginManager.registerEvents(loginListener, this); this.registerPacketListeners(); this.loadNMS(); @@ -524,9 +523,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { } private void registerPacketListeners() { - this.protocolManager = ProtocolLibrary.getProtocolManager(); - this.packetListener = new PacketListener(this); - this.protocolManager.addPacketListener(this.packetListener); + ProtocolLibrary.getProtocolManager().addPacketListener(new PacketListener()); } public static String toPlainText(Object o, Class c) { @@ -779,37 +776,32 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { DataOutputStream out = new DataOutputStream(stream); if(subchannel.equals("Chat")) { String chatchannel = msgin.readUTF(); - String chat = msgin.readUTF(); - String playerName = msgin.readUTF(); - String lastMessage = msgin.readUTF(); - String f = msgin.readUTF(); - String c = msgin.readUTF(); - String json = msgin.readUTF(); + String senderName = msgin.readUTF(); + UUID senderUUID = UUID.fromString(msgin.readUTF()); + int hash = msgin.readInt(); + String consoleChat = msgin.readUTF(); + String globalJSON = msgin.readUTF(); if(ccInfo.isChannel(chatchannel) && ccInfo.getChannelInfo(chatchannel).getBungee()) { - MineverseChat.lastChatMessage = new ChatMessage(playerName, lastMessage, lastMessage.hashCode(), f, c, chatchannel); - lastJson = json; - Bukkit.getConsoleSender().sendMessage(chat); - MineverseChatPlayer sender = MineverseChatAPI.getMineverseChatPlayer(playerName); + Bukkit.getConsoleSender().sendMessage(consoleChat); for(MineverseChatPlayer p : MineverseChat.onlinePlayers) { - //System.out.println(p.getName() + " received chat message"); - if(p.isOnline() && p.getListening().contains(ccInfo.getChannelInfo(chatchannel).getName())) { - if(!p.getBungeeToggle() && MineverseChatAPI.getOnlineMineverseChatPlayer(playerName) == null) { + System.out.println(p.getName() + " received chat message"); + if(p.getListening().contains(ccInfo.getChannelInfo(chatchannel).getName())) { + if(!p.getBungeeToggle() && MineverseChatAPI.getOnlineMineverseChatPlayer(senderName) == null) { continue; } + + String json = Format.formatModerationGUI(globalJSON, p.getPlayer(), senderName, chatchannel, hash); + WrappedChatComponent chatComponent = WrappedChatComponent.fromJson(json); + PacketContainer packet = Format.createPacketPlayOutChat(chatComponent); + if(plugin.getConfig().getBoolean("ignorechat", false)) { - // System.out.println(p.getIgnores()); - if(sender == null) { - // System.out.println("null sender"); - p.getPlayer().sendMessage(chat); - continue; - } - if(!p.getIgnores().contains(sender.getUUID())) { + if(!p.getIgnores().contains(senderUUID)) { // System.out.println("Chat sent"); - p.getPlayer().sendMessage(chat); + Format.sendPacketPlayOutChat(p.getPlayer(), packet); } continue; } - p.getPlayer().sendMessage(chat); + Format.sendPacketPlayOutChat(p.getPlayer(), packet); } } } diff --git a/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java b/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java index 0d30180..a293e43 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java +++ b/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java @@ -153,20 +153,18 @@ public class MineverseChatBungee extends Plugin implements Listener { DataOutputStream out = new DataOutputStream(outstream); if(subchannel.equals("Chat")) { String chatchannel = in.readUTF(); - String message = in.readUTF(); - String playerName = in.readUTF(); + String senderName = in.readUTF(); + String senderUUID = in.readUTF(); boolean bungeeToggle = in.readBoolean(); - String lastMessage = in.readUTF(); - String f = in.readUTF(); - String c = in.readUTF(); + int hash = in.readInt(); + String consoleChat = in.readUTF(); String json = in.readUTF(); out.writeUTF("Chat"); out.writeUTF(chatchannel); - out.writeUTF(message); - out.writeUTF(playerName); - out.writeUTF(lastMessage); - out.writeUTF(f); - out.writeUTF(c); + out.writeUTF(senderName); + out.writeUTF(senderUUID); + out.writeInt(hash); + out.writeUTF(consoleChat); out.writeUTF(json); for(String send : getProxy().getServers().keySet()) { if(getProxy().getServers().get(send).getPlayers().size() > 0) { diff --git a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Edit.java b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Edit.java index 4836915..c9cbdd2 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Edit.java +++ b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Edit.java @@ -10,7 +10,6 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -import com.comphenix.protocol.PacketType; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.wrappers.WrappedChatComponent; @@ -21,13 +20,12 @@ import mineverse.Aust1n46.chat.command.MineverseCommand; import mineverse.Aust1n46.chat.utilities.Format; public class Edit extends MineverseCommand { - private PacketContainer emptyLinePacketContainer = createPacketPlayOutChat(WrappedChatComponent.fromJson("{\"extra\":[\" \"],\"text\":\"\"}")); - private MineverseChat plugin; + private PacketContainer emptyLinePacketContainer = Format.createPacketPlayOutChat(WrappedChatComponent.fromJson("{\"extra\":[\" \"],\"text\":\"\"}")); + private MineverseChat plugin = MineverseChat.getInstance(); private WrappedChatComponent messageDeletedComponentPlayer; public Edit(String name) { super(name); - this.plugin = MineverseChat.getInstance(); } @Override @@ -60,7 +58,7 @@ public class Edit extends MineverseCommand { WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Edit.this.getMessageDeletedChatComponentAdmin(message) : Edit.this.getMessageDeletedChatComponentPlayer(); message.setComponent(removedComponent); message.setHash(-1); - playerPackets.add(Edit.this.createPacketPlayOutChat(removedComponent)); + playerPackets.add(Format.createPacketPlayOutChat(removedComponent)); resend = true; continue; } @@ -70,12 +68,12 @@ public class Edit extends MineverseCommand { WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Edit.this.getMessageDeletedChatComponentAdmin(message) : Edit.this.getMessageDeletedChatComponentPlayer(); message.setComponent(removedComponent); message.setHash(-1); - playerPackets.add(Edit.this.createPacketPlayOutChat(removedComponent)); + playerPackets.add(Format.createPacketPlayOutChat(removedComponent)); resend = true; continue; } } - playerPackets.add(Edit.this.createPacketPlayOutChat(message.getComponent())); + playerPackets.add(Format.createPacketPlayOutChat(message.getComponent())); } if(resend) { packets.put(p.getPlayer(), playerPackets); @@ -86,7 +84,7 @@ public class Edit extends MineverseCommand { for(Player p : packets.keySet()) { List pPackets = packets.get(p); for(PacketContainer c : pPackets) { - Edit.this.sendPacketPlayOutChat(p, c); + Format.sendPacketPlayOutChat(p, c); } } } @@ -95,21 +93,6 @@ public class Edit extends MineverseCommand { }.runTaskAsynchronously(plugin); } - private PacketContainer createPacketPlayOutChat(WrappedChatComponent component) { - PacketContainer container = new PacketContainer(PacketType.Play.Server.CHAT); - container.getChatComponents().write(0, component); - return container; - } - - private void sendPacketPlayOutChat(Player player, PacketContainer packet) { - try { - plugin.protocolManager.sendServerPacket(player, packet); - } - catch(Exception e) { - e.printStackTrace(); - } - } - public WrappedChatComponent getMessageDeletedChatComponentPlayer() { if(this.messageDeletedComponentPlayer == null) { this.messageDeletedComponentPlayer = WrappedChatComponent.fromJson("{\"text\":\"\",\"extra\":[{\"text\":\"\",\"color\":\"red\",\"italic\":\"true\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremoverpermissions")) + "\"}]}}}]}"); @@ -118,7 +101,7 @@ public class Edit extends MineverseCommand { } public WrappedChatComponent getMessageDeletedChatComponentAdmin(ChatMessage message) { - String oMessage = message.getOriginalComponent().getJson().substring(1, message.getOriginalComponent().getJson().length() - 11); + String oMessage = message.getComponent().getJson().substring(1, message.getComponent().getJson().length() - 11); if(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("messageremovericon")))) { oMessage = oMessage.substring(0, oMessage.length() - plugin.getConfig().getString("messageremovericon").length() - 4) + "\"}]"; } diff --git a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java index d5cc3e1..a8cef33 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java +++ b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java @@ -11,22 +11,18 @@ import mineverse.Aust1n46.chat.ChatMessage; import mineverse.Aust1n46.chat.MineverseChat; import mineverse.Aust1n46.chat.api.MineverseChatPlayer; import mineverse.Aust1n46.chat.command.MineverseCommand; -//import mineverse.Aust1n46.chat.json.JsonButton; import mineverse.Aust1n46.chat.utilities.Format; -import mineverse.Aust1n46.chat.versions.VersionHandler; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -import com.comphenix.protocol.PacketType; import com.comphenix.protocol.events.PacketContainer; -import com.comphenix.protocol.wrappers.EnumWrappers.ChatType; import com.comphenix.protocol.wrappers.WrappedChatComponent; public class Removemessage extends MineverseCommand { - private PacketContainer emptyLinePacketContainer = createPacketPlayOutChat(WrappedChatComponent.fromJson("{\"extra\":[\" \"],\"text\":\"\"}")); + private PacketContainer emptyLinePacketContainer = Format.createPacketPlayOutChat(WrappedChatComponent.fromJson("{\"extra\":[\" \"],\"text\":\"\"}")); private MineverseChat plugin; private WrappedChatComponent messageDeletedComponentPlayer; @@ -76,12 +72,11 @@ public class Removemessage extends MineverseCommand { playerPackets.add(Removemessage.this.emptyLinePacketContainer); } for(ChatMessage message : messages) { - //System.out.println(message.getMessage() + " remover test"); if(message.getHash() == hash) { WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer(); message.setComponent(removedComponent); message.setHash(-1); - playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent)); + playerPackets.add(Format.createPacketPlayOutChat(removedComponent)); resend = true; continue; } @@ -91,58 +86,12 @@ public class Removemessage extends MineverseCommand { WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer(); message.setComponent(removedComponent); message.setHash(-1); - playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent)); + playerPackets.add(Format.createPacketPlayOutChat(removedComponent)); resend = true; continue; } } - /*if(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("messageremovericon")))) { - String submessage = message.getMessage().substring(0, message.getMessage().length() - plugin.getConfig().getString("messageremovericon").length() - 1).replaceAll("(§([a-z0-9]))", ""); - if(submessage.hashCode() == hash) { - WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer(); - message.setComponent(removedComponent); - message.setHash(-1); - playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent)); - resend = true; - continue; - } - int cut = 0; - for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) { - if(b.hasPermission() && p.getPlayer().hasPermission(b.getPermission())) { - cut += b.getIcon().length() - 1; - } - } - submessage = submessage.substring(0, submessage.length() - cut).replaceAll("(§([a-z0-9]))", ""); - //System.out.println(submessage + " submess"); - if(submessage.hashCode() == hash) { - WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer(); - message.setComponent(removedComponent); - message.setHash(-1); - playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent)); - resend = true; - continue; - } - } - int cut = 0; - for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) { - if(b.hasPermission() && p.getPlayer().hasPermission(b.getPermission()) && message.getMessage().contains(b.getIcon())) { - cut += b.getIcon().length() - 1; - } - } - String submessage = message.getMessage().replaceAll("(§([a-z0-9]))", ""); - //System.out.println(submessage + " " + submessage.length()); - submessage = submessage.substring(0, submessage.length() - cut); - //System.out.println(submessage); - if(submessage.hashCode() == hash) { - WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer(); - message.setComponent(removedComponent); - message.setHash(-1); - playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent)); - resend = true; - continue; - }*/ - //System.out.println(message.getComponent().getJson()); - playerPackets.add(Removemessage.this.createPacketPlayOutChat(message.getComponent())); + playerPackets.add(Format.createPacketPlayOutChat(message.getComponent())); } if(resend) { @@ -154,7 +103,7 @@ public class Removemessage extends MineverseCommand { for(Player p : packets.keySet()) { List pPackets = packets.get(p); for(PacketContainer c : pPackets) { - Removemessage.this.sendPacketPlayOutChat(p, c); + Format.sendPacketPlayOutChat(p, c); } } } @@ -164,34 +113,15 @@ public class Removemessage extends MineverseCommand { } } - private PacketContainer createPacketPlayOutChat(WrappedChatComponent component) { - PacketContainer container = new PacketContainer(PacketType.Play.Server.CHAT); - container.getChatComponents().write(0, component); - if(!VersionHandler.is1_7_10() && !VersionHandler.is1_8() && !VersionHandler.is1_9() && !VersionHandler.is1_10() && !VersionHandler.is1_11()) { - container.getChatTypes().write(0, ChatType.CHAT); - } - return container; - } - - private void sendPacketPlayOutChat(Player player, PacketContainer packet) { - try { - plugin.protocolManager.sendServerPacket(player, packet); - } - catch(Exception e) { - e.printStackTrace(); - } - } - public WrappedChatComponent getMessageDeletedChatComponentPlayer() { if(this.messageDeletedComponentPlayer == null) { - //this.messageDeletedComponentPlayer = WrappedChatComponent.fromJson("{\"text\":\"\",\"extra\":[{\"text\":\"\",\"color\":\"red\",\"italic\":\"true\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremoverpermissions")) + "\"}]}}}]}"); this.messageDeletedComponentPlayer = WrappedChatComponent.fromJson("{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremovertext")) + "\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremoverpermissions")) + "\"}]}}}]}"); } return this.messageDeletedComponentPlayer; } public WrappedChatComponent getMessageDeletedChatComponentAdmin(ChatMessage message) { - String oMessage = message.getOriginalComponent().getJson().substring(1, message.getOriginalComponent().getJson().length() - 11); + String oMessage = message.getComponent().getJson().substring(1, message.getComponent().getJson().length() - 11); if(message.getMessage().contains(ChatColor.stripColor(Format.FormatStringAll(plugin.getConfig().getString("guiicon"))))) { oMessage = oMessage.substring(0, oMessage.length() - ChatColor.stripColor(Format.FormatStringAll(plugin.getConfig().getString("guiicon"))).length() - 3) + "\"}]"; } diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java index 4407ff2..b0f29a9 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java @@ -2,6 +2,7 @@ package mineverse.Aust1n46.chat.listeners; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.sql.SQLException; import java.sql.Statement; @@ -24,6 +25,10 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.messaging.PluginMessageRecipient; +import com.comphenix.protocol.PacketType; +import com.comphenix.protocol.ProtocolLibrary; +import com.comphenix.protocol.events.PacketContainer; +import com.comphenix.protocol.wrappers.WrappedChatComponent; import com.massivecraft.factions.entity.MPlayer; import com.palmergames.bukkit.towny.object.Resident; import com.palmergames.bukkit.towny.object.TownyUniverse; @@ -51,12 +56,8 @@ public class ChatListener implements Listener { private MineverseChat plugin; private ChatChannelInfo cc; - public ChatListener(MineverseChat plugin) { - this.plugin = plugin; - } - - public ChatListener(MineverseChat plugin, ChatChannelInfo cc) { - this.plugin = plugin; + public ChatListener(ChatChannelInfo cc) { + this.plugin = MineverseChat.getInstance(); this.cc = cc; } @@ -83,7 +84,8 @@ public class ChatListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onAsyncPlayerChatEvent(AsyncPlayerChatEvent event) { boolean bungee = false; - String evMessage; + String chat; + String format; if(event.isCancelled()) { return; } @@ -93,6 +95,7 @@ public class ChatListener implements Listener { mcp.getPlayer().sendMessage(Format.FormatStringAll(event.getMessage())); mcp.setEditing(false); event.setCancelled(true); + return; } if(mcp.isQuickChat()) { eventChannel = mcp.getQuickChannel(); @@ -247,7 +250,7 @@ public class ChatListener implements Listener { if(p.isOnline() && event.getMessage().startsWith("@" + p.getPlayer().getDisplayName().replace("§r", ""))) { int add = 0; if(p.getPlayer().getDisplayName().contains("§r")) add = 2; - String format = event.getMessage().substring(p.getPlayer().getDisplayName().length() + 1 - add); + String messageFormat = event.getMessage().substring(p.getPlayer().getDisplayName().length() + 1 - add); if(event.getMessage().length() <= p.getPlayer().getDisplayName().length() + 1 - add) { mcp.getPlayer().sendMessage(ChatColor.RED + "You must include a message."); event.setCancelled(true); @@ -274,31 +277,31 @@ public class ChatListener implements Listener { mcp.getPlayer().sendMessage(ChatColor.GOLD + p.getPlayer().getDisplayName() + " is currently afk and might be unable to chat at this time."); } if(mcp.hasFilter()) { - format = cc.FilterChat(format); + messageFormat = cc.FilterChat(messageFormat); } if(mcp.getPlayer().hasPermission("venturechat.color")) { - format = Format.FormatStringColor(format); + messageFormat = Format.FormatStringColor(messageFormat); } if(mcp.getPlayer().hasPermission("venturechat.format")) { - format = Format.FormatString(format); + messageFormat = Format.FormatString(messageFormat); } if(plugin.getConfig().getString("tellformatto").equalsIgnoreCase("Default")) { - echo = "You message " + p.getPlayer().getDisplayName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format; + echo = "You message " + p.getPlayer().getDisplayName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat; } else { - echo = Format.FormatStringAll(plugin.getConfig().getString("tellformatto").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + format; + echo = Format.FormatStringAll(plugin.getConfig().getString("tellformatto").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + messageFormat; } if(plugin.getConfig().getString("tellformatfrom").equalsIgnoreCase("Default")) { - send = mcp.getPlayer().getDisplayName() + " messages you:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format; + send = mcp.getPlayer().getDisplayName() + " messages you:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat; } else { - send = Format.FormatStringAll(plugin.getConfig().getString("tellformatfrom").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + format; + send = Format.FormatStringAll(plugin.getConfig().getString("tellformatfrom").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + messageFormat; } if(plugin.getConfig().getString("tellformatspy").equalsIgnoreCase("Default")) { - spy = p.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format; + spy = p.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat; } else { - spy = Format.FormatStringAll(plugin.getConfig().getString("tellformatspy").replace("{playerto}", p.getName()).replace("{playerfrom}", mcp.getName())) + format; + spy = Format.FormatStringAll(plugin.getConfig().getString("tellformatspy").replace("{playerto}", p.getName()).replace("{playerfrom}", mcp.getName())) + messageFormat; } for(MineverseChatPlayer sp : MineverseChat.onlinePlayers) { if(sp.isSpy()) { @@ -318,12 +321,12 @@ public class ChatListener implements Listener { } p.setReplyPlayer(mcp.getUUID()); mcp.setReplyPlayer(p.getUUID()); - Bukkit.getConsoleSender().sendMessage(mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format); + Bukkit.getConsoleSender().sendMessage(mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat); event.setCancelled(true); return; } if(event.getMessage().startsWith("@" + p.getName())) { - String format = event.getMessage().substring(p.getName().length() + 1); + String messageFormat = event.getMessage().substring(p.getName().length() + 1); if(event.getMessage().length() <= p.getName().length() + 1) { mcp.getPlayer().sendMessage(ChatColor.RED + "You must include a message."); event.setCancelled(true); @@ -349,31 +352,31 @@ public class ChatListener implements Listener { mcp.getPlayer().sendMessage(ChatColor.GOLD + p.getPlayer().getDisplayName() + " is currently afk and might be unable to chat at this time."); } if(mcp.hasFilter()) { - format = cc.FilterChat(format); + messageFormat = cc.FilterChat(messageFormat); } if(mcp.getPlayer().hasPermission("venturechat.color")) { - format = Format.FormatStringColor(format); + messageFormat = Format.FormatStringColor(messageFormat); } if(mcp.getPlayer().hasPermission("venturechat.format")) { - format = Format.FormatString(format); + messageFormat = Format.FormatString(messageFormat); } if(plugin.getConfig().getString("tellformatto").equalsIgnoreCase("Default")) { - echo = "You message " + p.getNickname() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format; + echo = "You message " + p.getNickname() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat; } else { - echo = Format.FormatStringAll(plugin.getConfig().getString("tellformatto").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + format; + echo = Format.FormatStringAll(plugin.getConfig().getString("tellformatto").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + messageFormat; } if(plugin.getConfig().getString("tellformatfrom").equalsIgnoreCase("Default")) { - send = mcp.getNickname() + " messages you:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format; + send = mcp.getNickname() + " messages you:" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat; } else { - send = Format.FormatStringAll(plugin.getConfig().getString("tellformatfrom").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + format; + send = Format.FormatStringAll(plugin.getConfig().getString("tellformatfrom").replace("{playerto}", p.getPlayer().getDisplayName()).replace("{playerfrom}", mcp.getPlayer().getDisplayName())) + messageFormat; } if(plugin.getConfig().getString("tellformatspy").equalsIgnoreCase("Default")) { - spy = mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format; + spy = mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat; } else { - spy = Format.FormatStringAll(plugin.getConfig().getString("tellformatspy").replace("{playerto}", p.getName()).replace("{playerfrom}", mcp.getName())) + format; + spy = Format.FormatStringAll(plugin.getConfig().getString("tellformatspy").replace("{playerto}", p.getName()).replace("{playerfrom}", mcp.getName())) + messageFormat; } for(MineverseChatPlayer sp : MineverseChat.onlinePlayers) { if(sp.isSpy()) { @@ -392,13 +395,13 @@ public class ChatListener implements Listener { } p.setReplyPlayer(mcp.getUUID()); mcp.setReplyPlayer(p.getUUID()); - Bukkit.getConsoleSender().sendMessage(mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + format); + Bukkit.getConsoleSender().sendMessage(mcp.getName() + " messages " + p.getName() + ":" + ChatColor.valueOf(cc.tellColor.toUpperCase()) + messageFormat); event.setCancelled(true); return; } } } - evMessage = event.getMessage(); + chat = event.getMessage(); Location locreceip; Location locsender = mcp.getPlayer().getLocation(); Location diff; @@ -430,7 +433,6 @@ public class ChatListener implements Listener { Double chDistance = (double) 0; int chCooldown = 0; String curColor = ""; - String Channelformat; boolean irc = false; if(eventChannel.hasPermission() && !mcp.getPlayer().hasPermission(eventChannel.getPermission())) { mcp.getPlayer().sendMessage(ChatColor.RED + "You do not have permission for this channel."); @@ -469,7 +471,7 @@ public class ChatListener implements Listener { return; } } - if(eventChannel.hasCooldown() && !event.isCancelled()) { + if(eventChannel.hasCooldown()) { if(!mcp.getPlayer().hasPermission("venturechat.cooldown.bypass")) { mcp.addCooldown(eventChannel, time + chCooldown); } @@ -499,6 +501,7 @@ public class ChatListener implements Listener { mcp.getPlayer().sendMessage(ChatColor.RED + "You have been muted for spamming in: " + ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + eventChannel.getName() + timedmute); mcp.setQuickChat(false); event.setCancelled(true); + return; } else { if(spamtimeconfig % 2 != 0) spamtimeconfig++; @@ -527,23 +530,23 @@ public class ChatListener implements Listener { } if(plugin.getConfig().getConfigurationSection("channels." + eventChannel.getName()).getString("format").equalsIgnoreCase("Default")) { if(curColor.equalsIgnoreCase("None")) { - Channelformat = FormatTags.ChatFormat(ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + "[" + eventChannel.getName() + "] {prefix}{name}" + ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + ":", mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat")); + format = FormatTags.ChatFormat(ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + "[" + eventChannel.getName() + "] {prefix}{name}" + ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + ":", mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat")); } else { - Channelformat = FormatTags.ChatFormat(ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + "[" + eventChannel.getName() + "] {prefix}{name}" + ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + ":" + ChatColor.valueOf(eventChannel.getChatColor().toUpperCase()), mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat")); + format = FormatTags.ChatFormat(ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + "[" + eventChannel.getName() + "] {prefix}{name}" + ChatColor.valueOf(eventChannel.getColor().toUpperCase()) + ":" + ChatColor.valueOf(eventChannel.getChatColor().toUpperCase()), mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat")); } } else { - Channelformat = FormatTags.ChatFormat(plugin.getConfig().getConfigurationSection("channels." + eventChannel.getName()).getString("format"), mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat")); + format = FormatTags.ChatFormat(plugin.getConfig().getConfigurationSection("channels." + eventChannel.getName()).getString("format"), mcp.getPlayer(), plugin, cc, eventChannel, plugin.getConfig().getBoolean("jsonFormat")); if(plugin.getConfig().getBoolean("formatcleaner", false)) { - Channelformat = Channelformat.replace("[]", " "); - Channelformat = Channelformat.replace(" ", " ").replace(" ", " ").replace(" ", " "); + format = format.replace("[]", " "); + format = format.replace(" ", " ").replace(" ", " ").replace(" ", " "); } } filterthis = eventChannel.isFiltered(); if(filterthis) { if(mcp.hasFilter()) { - evMessage = cc.FilterChat(evMessage); + chat = cc.FilterChat(chat); } } Player[] pl = event.getRecipients().toArray(new Player[0]); @@ -647,110 +650,96 @@ public class ChatListener implements Listener { } } if(!mcp.getPlayer().canSee(p.getPlayer())) { + event.getRecipients().remove(p.getPlayer()); recipientSize--; continue; } } } - if(recipientSize == 1 && !bungee && !event.isCancelled()) { - if(!plugin.getConfig().getString("emptychannelalert", "&6No one is listening to you.").equals("")) + if(recipientSize == 1 && !bungee) { + if(!plugin.getConfig().getString("emptychannelalert", "&6No one is listening to you.").equals("")) { mcp.getPlayer().sendMessage(Format.FormatStringAll(plugin.getConfig().getString("emptychannelalert", "&6No one is listening to you."))); + } } - try { - if(mcp.getPlayer().hasPermission("venturechat.color")) { - evMessage = Format.FormatStringColor(evMessage); + + if(mcp.getPlayer().hasPermission("venturechat.color")) { + chat = Format.FormatStringColor(chat); + } + if(mcp.getPlayer().hasPermission("venturechat.format")) { + chat = Format.FormatString(chat); + } + if(!mcp.isQuickChat()) { + chat = " " + chat; + } + mcp.setQuickChat(false); + if(curColor.equalsIgnoreCase("None")) { + chat = Format.getLastCode(format) + chat; + } + else { + chat = ChatColor.valueOf(curColor) + chat; + } + + String globalJSON = Format.convertToJson(mcp, format, chat); + String consoleChat = format + chat; + String message = consoleChat.replaceAll("(§([a-z0-9]))", ""); + + /* Temp disabled for 1.14 + * ChatMessageEvent chatMessageEvent = new ChatMessageEvent(mcp, eventChannel, bungee, MineverseChat.lastChatMessage, MineverseChat.lastJson); + Bukkit.getServer().getPluginManager().callEvent(chatMessageEvent); + */ + + if(plugin.mysql) { + Statement statement; + currentDate = Calendar.getInstance(); + formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + date = formatter.format(currentDate.getTime()); + try { + statement = plugin.c.createStatement(); + statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', '" + mcp.getUUID().toString() + "', '" + mcp.getName() + "', '" + plugin.getServer().getName() + "', '" + eventChannel.getName() + "', '" + event.getMessage().replace("'", "''") + "', 'Chat');"); } - if(mcp.getPlayer().hasPermission("venturechat.format")) { - evMessage = Format.FormatString(evMessage); + catch(SQLException e) { + e.printStackTrace(); } - if(!mcp.isQuickChat()) { - evMessage = " " + evMessage; + } + + if(!bungee) { + for(Player p : event.getRecipients()) { + String json = Format.formatModerationGUI(globalJSON, p, mcp.getName(), eventChannel.getName(), message.hashCode()); + WrappedChatComponent chatComponent = WrappedChatComponent.fromJson(json); + PacketContainer packet = Format.createPacketPlayOutChat(chatComponent); + Format.sendPacketPlayOutChat(p, packet); } - if(curColor.equalsIgnoreCase("None")) { - event.setMessage(evMessage); - } - else { - event.setMessage(ChatColor.valueOf(curColor) + evMessage); - } - mcp.setQuickChat(false); - String message = String.format(Channelformat + "%s", new Object[] { event.getMessage() }); - event.setFormat(message.replace("%", "%%")); - message = message.replaceAll("(§([a-z0-9]))", ""); - String format = Channelformat; - String chat = event.getMessage(); - if(curColor.equalsIgnoreCase("None")) { - chat = Format.getLastCode(format) + chat; - event.setMessage(chat); - } - MineverseChat.lastChatMessage = new ChatMessage(mcp.getPlayer().getName(), message, message.hashCode(), format, chat, eventChannel.getName()); - MineverseChat.lastJson = Format.convertToJson(MineverseChat.lastChatMessage); - - - /* Temp disabled for 1.14 - * ChatMessageEvent chatMessageEvent = new ChatMessageEvent(mcp, eventChannel, bungee, MineverseChat.lastChatMessage, MineverseChat.lastJson); - Bukkit.getServer().getPluginManager().callEvent(chatMessageEvent); - */ - - if(plugin.mysql) { - Statement statement; - currentDate = Calendar.getInstance(); - formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - date = formatter.format(currentDate.getTime()); - try { - statement = plugin.c.createStatement(); - statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', '" + mcp.getUUID().toString() + "', '" + mcp.getName() + "', '" + plugin.getServer().getName() + "', '" + eventChannel.getName() + "', '" + event.getMessage().replace("'", "''") + "', 'Chat');"); + Bukkit.getConsoleSender().sendMessage(consoleChat); + event.setCancelled(true); + return; + } + else { + ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream(); + DataOutputStream out = new DataOutputStream(byteOutStream); + try { + out.writeUTF("Chat"); + out.writeUTF(eventChannel.getName()); + out.writeUTF(mcp.getName()); + out.writeUTF(mcp.getUUID().toString()); + out.writeBoolean(mcp.getBungeeToggle()); + out.writeInt(message.hashCode()); + out.writeUTF(consoleChat); + if(plugin.getConfig().getString("loglevel", "info").equals("debug")) { + System.out.println(out.size() + " size bytes without json"); } - catch(SQLException e) { - e.printStackTrace(); - } - } - if(bungee && !event.isCancelled()) { - message = String.format(Channelformat + event.getMessage(), new Object[] { event.getPlayer().getDisplayName(), event.getMessage() }).replaceAll("(§([a-z0-9]))", ""); - format = String.format(Channelformat, new Object[] { event.getPlayer().getDisplayName() }); - chat = event.getMessage(); - //MineverseChat.lastChatMessage = new ChatMessage(mcp.getPlayer().getName(), message, message.hashCode(), format, chat, eventChannel.getName()); - //MineverseChat.lastJson = Format.convertToJson(MineverseChat.lastChatMessage); - event.setCancelled(true); - ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream(); - DataOutputStream out = new DataOutputStream(byteOutStream); - try { - out.writeUTF("Chat"); - out.writeUTF(eventChannel.getName()); - out.writeUTF(Channelformat + event.getMessage()); - out.writeUTF(mcp.getName()); - out.writeBoolean(mcp.getBungeeToggle()); - out.writeUTF(message); - out.writeUTF(format); - out.writeUTF(chat); - if(plugin.getConfig().getString("loglevel", "info").equals("debug")) { - System.out.println(out.size() + " size bytes without json"); - } - out.writeUTF(MineverseChat.lastJson); - if(plugin.getConfig().getString("loglevel", "info").equals("debug")) { - System.out.println(out.size() + " bytes size with json"); - } - mcp.getPlayer().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray()); - - //PluginMessageRecipient test = (PluginMessageRecipient) mcp.getPlayer(); - //System.out.println("Listening plugin channels?"); - //System.out.println(test.getListeningPluginChannels()); - //System.out.println("PluginMessageRecipient methods?"); - //for(Method m : test.getClass().getMethods()) { - //System.out.println(m.getName()); - //} - out.close(); - } - catch(Exception e) { - e.printStackTrace(); + out.writeUTF(globalJSON); + if(plugin.getConfig().getString("loglevel", "info").equals("debug")) { + System.out.println(out.size() + " bytes size with json"); } + mcp.getPlayer().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray()); + out.close(); } - } - catch(IllegalFormatException ex) { - // plugin.getLogger().log(Level.INFO, - // "Message Format issue: {0}:{1}", new Object[] { ex.getMessage(), - // evMessage }); - event.setMessage(Channelformat + evMessage); + catch(Exception e) { + e.printStackTrace(); + } + event.setCancelled(true); + return; } } } \ No newline at end of file diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java index e9f67e9..9833d78 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java @@ -38,12 +38,11 @@ import me.clip.placeholderapi.PlaceholderAPI; //This class listens for commands (Any chat that begins with a /) to use in the command spy and //in the custom commands such as aliases. public class CommandListener implements CommandExecutor, Listener { - private MineverseChat plugin; + private MineverseChat plugin = MineverseChat.getInstance(); private ChatChannelInfo cc; private AliasInfo aa; - public CommandListener(MineverseChat plugin, ChatChannelInfo cc, AliasInfo aa) { - this.plugin = plugin; + public CommandListener(ChatChannelInfo cc, AliasInfo aa) { this.cc = cc; this.aa = aa; } diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/LoginListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/LoginListener.java index 3e650d1..a599851 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/LoginListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/LoginListener.java @@ -30,12 +30,11 @@ import org.bukkit.event.player.PlayerQuitEvent; //This class listens for when Players login or logout and manages their wrapped MineverseChatPlayer //and it's data. public class LoginListener implements Listener { - private MineverseChat plugin; + private MineverseChat plugin = MineverseChat.getInstance(); private ChatChannelInfo cc; private FileConfiguration playerData = PlayerData.getPlayerData(); - public LoginListener(MineverseChat plugin, ChatChannelInfo cc) { - this.plugin = plugin; + public LoginListener(ChatChannelInfo cc) { this.cc = cc; } diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java index 081abf1..d374297 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java @@ -1,16 +1,9 @@ package mineverse.Aust1n46.chat.listeners; -import java.util.Iterator; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.JSONValue; - import mineverse.Aust1n46.chat.ChatMessage; import mineverse.Aust1n46.chat.MineverseChat; import mineverse.Aust1n46.chat.api.MineverseChatAPI; import mineverse.Aust1n46.chat.api.MineverseChatPlayer; -import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.versions.VersionHandler; import com.comphenix.protocol.PacketType; @@ -23,9 +16,8 @@ import com.comphenix.protocol.wrappers.WrappedChatComponent; //The packets are modified to include advanced json formating and the message remover button if the //player has permission to remove messages. public class PacketListener extends PacketAdapter { - public PacketListener(MineverseChat plugin) { - super(plugin, ListenerPriority.MONITOR, new PacketType[] { PacketType.Play.Server.CHAT }); - this.plugin = plugin; + public PacketListener() { + super(MineverseChat.getInstance(), ListenerPriority.MONITOR, new PacketType[] { PacketType.Play.Server.CHAT }); } @Override @@ -61,44 +53,13 @@ public class PacketListener extends PacketAdapter { } WrappedChatComponent chat = event.getPacket().getChatComponents().read(0); - WrappedChatComponent originalChat = event.getPacket().getChatComponents().read(0); String message = null; int hash = -1; - //System.out.println(chat.getJson()); - //System.out.println(MineverseChat.lastChatMessage.getMessage()); message = MineverseChat.toPlainText(chat.getHandle(), chat.getHandleType()); - //System.out.println(chat.getJson()); - //System.out.println(message + " message"); hash = message != null ? message.hashCode() : -1; - //System.out.println("remover goes in here?"); - ChatMessage lastChatMessage = MineverseChat.lastChatMessage; MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer()); - if(lastChatMessage != null && lastChatMessage.getHash() == hash) { - String json = MineverseChat.lastJson; - if(mcp.getPlayer().hasPermission("venturechat.gui")) { - json = json.substring(0, json.length() - 1); - json += "," + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guiicon")), ",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/vchatgui " + lastChatMessage.getSender() + " " + lastChatMessage.getChannel() + " " + lastChatMessage.getHash() +"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[" + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guitext"))) + "]}}") + "]"; - //json += ",{\"text\":\"" + "json test" + "\"}]"; - } - //System.out.println("," + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guiicon")), ",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/vchatgui " + lastChatMessage.getSender() + " " + lastChatMessage.getChannel() + " " + lastChatMessage.getHash() +"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[" + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guitext"))) + "]}}") + "]}]"); - //System.out.println("\nline break\n"); - //System.out.println(json); - chat.setJson(json); - event.getPacket().getChatComponents().write(0, chat); - } if((message != null) && (chat.getHandle() != null) && mcp != null) { - mcp.addMessage(new ChatMessage(originalChat, chat, lastChatMessage != null ? lastChatMessage.getSender() : null, message, hash)); + mcp.addMessage(new ChatMessage(chat, null, message, hash)); } } - - @SuppressWarnings("unused") - private String getMessage(String json) { - JSONArray components = (JSONArray) ((JSONObject) JSONValue.parse(json)).get("extra"); - Iterator iterator = components.iterator(); - StringBuilder builder = new StringBuilder(); - while(iterator.hasNext()) { - builder.append(((JSONObject) iterator.next()).get("text").toString()); - } - return builder.toString(); - } } \ No newline at end of file diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/SignListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/SignListener.java index b29c119..0e1ed30 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/SignListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/SignListener.java @@ -13,11 +13,10 @@ import mineverse.Aust1n46.chat.utilities.Format; //This class listens for text being added to signs, and it formats them to allow colors and formatting. public class SignListener implements Listener { - MineverseChat plugin; + MineverseChat plugin = MineverseChat.getInstance(); ChatChannelInfo cc; - public SignListener(MineverseChat plugin, ChatChannelInfo cc) { - this.plugin = plugin; + public SignListener(ChatChannelInfo cc) { this.cc = cc; } diff --git a/MineverseChat/mineverse/Aust1n46/chat/utilities/Format.java b/MineverseChat/mineverse/Aust1n46/chat/utilities/Format.java index fd9fbef..0dcce6d 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/utilities/Format.java +++ b/MineverseChat/mineverse/Aust1n46/chat/utilities/Format.java @@ -5,11 +5,15 @@ import java.util.regex.Pattern; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.entity.Player; + +import com.comphenix.protocol.PacketType; +import com.comphenix.protocol.ProtocolLibrary; +import com.comphenix.protocol.events.PacketContainer; +import com.comphenix.protocol.wrappers.WrappedChatComponent; import me.clip.placeholderapi.PlaceholderAPI; -import mineverse.Aust1n46.chat.ChatMessage; import mineverse.Aust1n46.chat.MineverseChat; -import mineverse.Aust1n46.chat.api.MineverseChatAPI; import mineverse.Aust1n46.chat.api.MineverseChatPlayer; import mineverse.Aust1n46.chat.json.JsonFormat; @@ -17,17 +21,16 @@ import mineverse.Aust1n46.chat.json.JsonFormat; public class Format { private static MineverseChat plugin = MineverseChat.getInstance(); - public static String convertToJson(ChatMessage lastChatMessage) { - MineverseChatPlayer icp = MineverseChatAPI.getMineverseChatPlayer(lastChatMessage.getSender()); - JsonFormat format = MineverseChat.jfInfo.getJsonFormat(icp.getJsonFormat()); - String f = lastChatMessage.getFormat().replace("\\", "\\\\").replace("\"", "\\\""); - String c = lastChatMessage.getChat().replace("\\", "\\\\").replace("\"", "\\\""); + public static String convertToJson(MineverseChatPlayer sender, String format, String chat) { + JsonFormat JSONformat = MineverseChat.jfInfo.getJsonFormat(sender.getJsonFormat()); + String f = format.replace("\\", "\\\\").replace("\"", "\\\""); + String c = chat.replace("\\", "\\\\").replace("\"", "\\\""); String json = "[\"\",{\"text\":\"\",\"extra\":["; String prefix = ""; String suffix = ""; try { - prefix = FormatStringAll(MineverseChat.chat.getPlayerPrefix(icp.getPlayer())); - suffix = FormatStringAll(MineverseChat.chat.getPlayerSuffix(icp.getPlayer())); + prefix = FormatStringAll(MineverseChat.chat.getPlayerPrefix(sender.getPlayer())); + suffix = FormatStringAll(MineverseChat.chat.getPlayerSuffix(sender.getPlayer())); if(suffix.equals("")) { suffix = "venturechat_no_suffix_code"; } @@ -43,10 +46,10 @@ public class Format { prefix = "venturechat_no_prefix_code"; } String nickname = ""; - if(icp.getPlayer() != null) { - nickname = FormatStringAll(icp.getPlayer().getDisplayName()); + if(sender.getPlayer() != null) { + nickname = FormatStringAll(sender.getPlayer().getDisplayName()); } - json += convertPlaceholders(f, format, prefix, nickname, suffix, icp); + json += convertPlaceholders(f, JSONformat, prefix, nickname, suffix, sender); json += "]}"; json += "," + convertLinks(c); json += "]"; @@ -277,6 +280,30 @@ public class Format { return ""; } + public static String formatModerationGUI(String json, Player player, String sender, String channelName, int hash) { + if(player.hasPermission("venturechat.gui")) { + json = json.substring(0, json.length() - 1); + json += "," + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guiicon")), ",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/vchatgui " + sender + " " + channelName + " " + hash +"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[" + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guitext"))) + "]}}") + "]"; + } + return json; + } + + public static PacketContainer createPacketPlayOutChat(WrappedChatComponent component) { + PacketContainer container = new PacketContainer(PacketType.Play.Server.CHAT); + container.getModifier().writeDefaults(); + container.getChatComponents().write(0, component); + return container; + } + + public static void sendPacketPlayOutChat(Player player, PacketContainer packet) { + try { + ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet); + } + catch(Exception e) { + e.printStackTrace(); + } + } + protected static Pattern chatColorPattern = Pattern.compile("(?i)&([0-9A-F])"); protected static Pattern chatMagicPattern = Pattern.compile("(?i)&([K])"); protected static Pattern chatBoldPattern = Pattern.compile("(?i)&([L])");