diff --git a/.classpath b/.classpath index 41db0c1..88ce6fe 100644 --- a/.classpath +++ b/.classpath @@ -7,11 +7,12 @@ - + + diff --git a/MineverseChat/bungee.yml b/MineverseChat/bungee.yml index d8aa61b..490bfa1 100644 --- a/MineverseChat/bungee.yml +++ b/MineverseChat/bungee.yml @@ -1,4 +1,4 @@ name: VentureChat main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee -version: 2.12.4 +version: 2.14.0 author: Aust1n46 \ No newline at end of file diff --git a/MineverseChat/config.yml b/MineverseChat/config.yml index bb53523..4b35369 100644 --- a/MineverseChat/config.yml +++ b/MineverseChat/config.yml @@ -193,7 +193,7 @@ venturegui: durability: 0 text: '&cRemove Message' permission: 'removemessage' - command: '/removemessage {channel} {hash} true' + command: '/removemessage {hash} {channel} true' slot: 7 guiicon: '&c [✓]' diff --git a/MineverseChat/defaultconfig.yml b/MineverseChat/defaultconfig.yml index c6c01ca..5c0fbc6 100644 --- a/MineverseChat/defaultconfig.yml +++ b/MineverseChat/defaultconfig.yml @@ -193,7 +193,7 @@ venturegui: durability: 0 text: '&cRemove Message' permission: 'removemessage' - command: '/removemessage {hash} true' + command: '/removemessage {hash} {channel} true' slot: 7 guiicon: '&c [✓]' diff --git a/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java b/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java index 04e8a1c..88f81ac 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java +++ b/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java @@ -11,6 +11,7 @@ import java.io.DataOutputStream; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.SQLException; @@ -30,7 +31,6 @@ import java.util.logging.Logger; import net.milkbowl.vault.chat.Chat; import net.milkbowl.vault.permission.Permission; - import mineverse.Aust1n46.chat.irc.Bot; import mineverse.Aust1n46.chat.irc.command.IRCCommandInfo; //import mineverse.Aust1n46.chat.json.JsonButtonInfo; @@ -407,12 +407,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { loginListener = new LoginListener(this, ccInfo); pluginManager.registerEvents(loginListener, this); this.registerPacketListeners(); - try { - this.loadNMS(); - } - catch(ClassNotFoundException e) { - e.printStackTrace(); - } + this.loadNMS(); Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Attaching to Executors")); try { // if(VersionHandler.is1_7_9()) cmap = V1_7_9.v1_7_9(); @@ -557,89 +552,58 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { this.packetListener = new PacketListener(this); this.protocolManager.addPacketListener(this.packetListener); } + + public static String toPlainText(Object o, Class c) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { + //System.out.println(o.getClass().getName()); + //System.out.println(c.getName()); + /*for(Method m : c.getDeclaredMethods()) { + System.out.println(m.getName()); + System.out.println(m.getGenericReturnType().toString()); + }*/ + ArrayList list = (ArrayList) c.getMethod("a").invoke(o, new Object[0]); + //System.out.println(list); + //System.out.println(list.get(0).getClass().getName()); + /*for(Method m : list.get(0).getClass().getDeclaredMethods()) { + System.out.println(m.getName()); + System.out.println(m.getGenericReturnType().toString()); + }*/ + StringBuilder stringbuilder = new StringBuilder(); + for(Object component : list) { + if(VersionHandler.is1_7_10()) { + stringbuilder.append((String) component.getClass().getMethod("e").invoke(component)); + } + else { + stringbuilder.append((String) component.getClass().getMethod("getText").invoke(component)); + } + } + //System.out.println("my string"); + //System.out.println("my string"); + //System.out.println("my string"); + //System.out.println("my string"); + //System.out.println("my string"); + //System.out.println(stringbuilder.toString()); + return stringbuilder.toString(); + } - private void loadNMS() throws ClassNotFoundException { - /* - * if(VersionHandler.is1_7_10()) { try { MineverseChat.posField = - * MinecraftReflection.getMinecraftClass("PacketPlayOutChat"). - * getDeclaredField("b"); MineverseChat.posField.setAccessible(true); } - * catch(NoSuchFieldException | SecurityException - * localNoSuchFieldException) { - * localNoSuchFieldException.printStackTrace(); } try { - * MineverseChat.messageMethod = - * MinecraftReflection.getMinecraftClass("IChatBaseComponent"). - * getDeclaredMethod("c", new Class[0]); - * MineverseChat.messageMethod.setAccessible(true); } - * catch(SecurityException | NoSuchMethodException e) { - * e.printStackTrace(); } return; } - */ - if(VersionHandler.is1_8() || VersionHandler.is1_7_10()) { - try { - MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b"); - MineverseChat.posField.setAccessible(true); - } - catch(NoSuchFieldException | SecurityException localNoSuchFieldException) { - localNoSuchFieldException.printStackTrace(); - } - try { - MineverseChat.messageMethod = MinecraftReflection.getMinecraftClass("IChatBaseComponent").getDeclaredMethod("c", new Class[0]); - MineverseChat.messageMethod.setAccessible(true); - } - catch(SecurityException | NoSuchMethodException e) { - e.printStackTrace(); - } + private void loadNMS() { + try { + MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b"); + MineverseChat.posField.setAccessible(true); + + + //MineverseChat.messageMethod = MinecraftReflection.getMinecraftClass("ChatBaseComponent").getDeclaredMethod("getString"); + //MineverseChat.messageMethod.setAccessible(true); } - else if(!VersionHandler.is1_13()){ - try { - MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b"); - MineverseChat.posField.setAccessible(true); - } - catch(NoSuchFieldException | SecurityException localNoSuchFieldException) { - localNoSuchFieldException.printStackTrace(); - } - try { - MineverseChat.messageMethod = MinecraftReflection.getMinecraftClass("ChatBaseComponent").getDeclaredMethod("toPlainText", new Class[0]); - MineverseChat.messageMethod.setAccessible(true); - } - catch(SecurityException | NoSuchMethodException e) { - e.printStackTrace(); - } - if(!VersionHandler.is1_9() && !VersionHandler.is1_10() && !VersionHandler.is1_11()) { - try { - MineverseChat.chatMessageType = getNMSClass("ChatMessageType"); - } - catch(Exception e) { - e.printStackTrace(); - } - } + catch(Exception e) { + e.printStackTrace(); } - else { + if(!VersionHandler.is1_7_10() && !VersionHandler.is1_8() && !VersionHandler.is1_9() && !VersionHandler.is1_10() && !VersionHandler.is1_11()) { try { - MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b"); - MineverseChat.posField.setAccessible(true); + MineverseChat.chatMessageType = getNMSClass("ChatMessageType"); } - catch(NoSuchFieldException | SecurityException localNoSuchFieldException) { - localNoSuchFieldException.printStackTrace(); - } - try { - /*for(Method m : MinecraftReflection.getMinecraftClass("ChatBaseComponent").getDeclaredMethods()) { - System.out.println(m.getName()); - }*/ - - MineverseChat.messageMethod = MinecraftReflection.getMinecraftClass("ChatBaseComponent").getDeclaredMethod("getString", new Class[0]); - MineverseChat.messageMethod.setAccessible(true); - } - catch(SecurityException | NoSuchMethodException e) { + catch(Exception e) { e.printStackTrace(); } - if(!VersionHandler.is1_9() && !VersionHandler.is1_10() && !VersionHandler.is1_11()) { - try { - MineverseChat.chatMessageType = getNMSClass("ChatMessageType"); - } - catch(Exception e) { - e.printStackTrace(); - } - } } } @@ -821,30 +785,32 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { String f = msgin.readUTF(); String c = msgin.readUTF(); String json = msgin.readUTF(); - MineverseChat.lastChatMessage = new ChatMessage(playerName, lastMessage, lastMessage.hashCode(), f, c, chatchannel); - lastJson = json; - Bukkit.getConsoleSender().sendMessage(chat); - MineverseChatPlayer sender = MineverseChatAPI.getMineverseChatPlayer(playerName); - 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) { - continue; - } - if(plugin.getConfig().getBoolean("ignorechat", false)) { - // System.out.println(p.getIgnores()); - if(sender == null) { - // System.out.println("null sender"); - p.getPlayer().sendMessage(chat); + 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); + 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) { continue; } - if(!p.getIgnores().contains(sender.getUUID())) { - // System.out.println("Chat sent"); - p.getPlayer().sendMessage(chat); + 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())) { + // System.out.println("Chat sent"); + p.getPlayer().sendMessage(chat); + } + continue; } - continue; + p.getPlayer().sendMessage(chat); } - p.getPlayer().sendMessage(chat); } } } @@ -939,7 +905,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { UUID sender = UUID.fromString(msgin.readUTF()); ByteArrayOutputStream stream = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(stream); - if(p == null || !p.isOnline()) { + if(!plugin.getConfig().getBoolean("bungeecordmessaging", true) || p == null || !p.isOnline()) { out.writeUTF("Ignore"); out.writeUTF("Offline"); out.writeUTF(server); @@ -995,7 +961,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { if(p != null) { // System.out.println(p.isOnline() + " online"); } - if(p == null || !p.isOnline()) { + if(!plugin.getConfig().getBoolean("bungeecordmessaging", true) || p == null || !p.isOnline()) { out.writeUTF("Message"); out.writeUTF("Offline"); out.writeUTF(server); diff --git a/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java b/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java index 08978e8..cde2fab 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java +++ b/MineverseChat/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java @@ -136,7 +136,7 @@ public class MineverseChatBungee extends Plugin implements Listener { @EventHandler public void onPluginMessage(PluginMessageEvent ev) { //System.out.println(ev.getTag() + "," + ev.getSender().toString() + "," + (ev.getSender() instanceof Server)); - if(!ev.getTag().equals("venturechat:")) { + if(!ev.getTag().equals("venturechat:") && !ev.getTag().contains("viaversion:")) { return; } if(!(ev.getSender() instanceof Server)) { diff --git a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java index 47390a8..2dc8e6a 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java +++ b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java @@ -50,13 +50,13 @@ public class Removemessage extends MineverseCommand { sender.sendMessage(ChatColor.RED + "Invalid hashcode."); return; } - if(args.length > 1 && Boolean.parseBoolean(args[1]) && sender instanceof Player) { + if(args.length > 1 && MineverseChat.ccInfo.isChannel(args[1]) && MineverseChat.ccInfo.getChannelInfo(args[1]).getBungee() && Boolean.parseBoolean(args[2]) && sender instanceof Player) { ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(byteOutStream); try { out.writeUTF("RemoveMessage"); out.writeUTF(String.valueOf(hash)); - ((Player) sender).sendPluginMessage(plugin, "VentureChat", byteOutStream.toByteArray()); + ((Player) sender).sendPluginMessage(plugin, "venturechat:", byteOutStream.toByteArray()); out.close(); } catch(Exception e) { @@ -75,6 +75,7 @@ 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); @@ -139,6 +140,7 @@ public class Removemessage extends MineverseCommand { resend = true; continue; }*/ + //System.out.println(message.getComponent().getJson()); playerPackets.add(Removemessage.this.createPacketPlayOutChat(message.getComponent())); } if(resend) { diff --git a/MineverseChat/mineverse/Aust1n46/chat/command/chat/VentureChatGui.java b/MineverseChat/mineverse/Aust1n46/chat/command/chat/VentureChatGui.java index 13c2e38..63ab964 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/command/chat/VentureChatGui.java +++ b/MineverseChat/mineverse/Aust1n46/chat/command/chat/VentureChatGui.java @@ -26,6 +26,7 @@ import mineverse.Aust1n46.chat.command.MineverseCommand; import mineverse.Aust1n46.chat.gui.GuiSlot; import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.utilities.UUIDFetcher; +import mineverse.Aust1n46.chat.versions.VersionHandler; public class VentureChatGui extends MineverseCommand { private MineverseChat plugin; @@ -84,7 +85,13 @@ public class VentureChatGui extends MineverseCommand { private void openInventory(MineverseChatPlayer mcp, MineverseChatPlayer target, ChatChannel channel, int hash) { Inventory inv = Bukkit.createInventory(null, this.getSlots(), "VentureChat: " + target.getName() + " GUI"); - ItemStack close = new ItemStack(Material.BARRIER); + ItemStack close = null; + if(VersionHandler.is1_7_10()) { + close = new ItemStack(Material.BEDROCK); + } + else { + close = new ItemStack(Material.BARRIER); + } ItemMeta closeMeta = close.getItemMeta(); closeMeta.setDisplayName("§oClose GUI"); close.setItemMeta(closeMeta); diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java index 8cf9861..48a502a 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.Method; import java.sql.SQLException; import java.sql.Statement; import java.text.SimpleDateFormat; @@ -21,6 +22,7 @@ import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.messaging.PluginMessageRecipient; import org.bukkit.util.EulerAngle; import com.massivecraft.factions.entity.MPlayer; @@ -734,6 +736,14 @@ public class ChatListener implements Listener { System.out.println(out.size() + " bytes size with json"); } mcp.getPlayer().sendPluginMessage(plugin, "venturechat:", 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) { diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java index 6e20a02..ea869e2 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java @@ -17,6 +17,7 @@ import mineverse.Aust1n46.chat.gui.GuiSlot; import mineverse.Aust1n46.chat.irc.Bot; import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.utilities.FormatTags; +import mineverse.Aust1n46.chat.versions.VersionHandler; //import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -274,8 +275,15 @@ public class CommandListener implements CommandExecutor, Listener { SkullMeta skullMeta = (SkullMeta) skull.getItemMeta(); ChatChannel channel = MineverseChat.ccInfo.getChannelInfo(ChatColor.stripColor(skullMeta.getLore().get(0)).replace("Channel: ", "")); int hash = Integer.parseInt(ChatColor.stripColor(skullMeta.getLore().get(1).replace("Hash: ", ""))); - if(item.getType() == Material.BARRIER) { - mcp.getPlayer().closeInventory(); + if(VersionHandler.is1_7_10()) { + if(item.getType() == Material.BEDROCK) { + mcp.getPlayer().closeInventory(); + } + } + else { + if(item.getType() == Material.BARRIER) { + mcp.getPlayer().closeInventory(); + } } for(GuiSlot g : MineverseChat.gsInfo.getGuiSlots()) { if(g.getIcon() == item.getType() && g.getDurability() == item.getDurability() && g.getSlot() == e.getSlot()) { diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java index a147d7b..af24fec 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java @@ -101,13 +101,17 @@ public class PacketListener extends PacketAdapter { try { //System.out.println(chat.getJson()); //message = TextComponent.toPlainText(new TextComponent(chat.getJson())); - message = (String) MineverseChat.messageMethod.invoke(chat.getHandle(), new Object[0]); + //message = (String) MineverseChat.messageMethod.invoke(chat.getHandle(), new Object[0]); //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; } catch(Exception ex) { message = TextComponent.toPlainText(new TextComponent(chat.getJson())); - System.out.println(message); + //System.out.println(message); //ex.printStackTrace(); } ChatMessage lastChatMessage = MineverseChat.lastChatMessage; @@ -128,8 +132,11 @@ public class PacketListener extends PacketAdapter { }*/ 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 += "," + 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); diff --git a/MineverseChat/plugin.yml b/MineverseChat/plugin.yml index 5ef1508..4cfade9 100644 --- a/MineverseChat/plugin.yml +++ b/MineverseChat/plugin.yml @@ -1,5 +1,5 @@ name: VentureChat -version: 2.12.4 +version: 2.14.0 main: mineverse.Aust1n46.chat.MineverseChat depend: [Vault, ProtocolLib, PlaceholderAPI] softdepend: [Towny, Factions, Heroes]