Fixed multimessage remover

This commit is contained in:
Aust1n46 2019-02-07 18:10:21 -05:00
parent 622b2f113d
commit 0b87ebf8c4
3 changed files with 46 additions and 44 deletions

View File

@ -11,7 +11,6 @@ import java.io.DataOutputStream;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.sql.Connection; import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;
@ -553,38 +552,48 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
this.protocolManager.addPacketListener(this.packetListener); this.protocolManager.addPacketListener(this.packetListener);
} }
public static String toPlainText(Object o, Class<?> c) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { public static String toPlainText(Object o, Class<?> c) {
//System.out.println(o.getClass().getName()); List<Object> finalList = new ArrayList<>();
//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(); StringBuilder stringbuilder = new StringBuilder();
for(Object component : list) { try {
if(VersionHandler.is1_7_10()) { splitComponents(finalList, o, c);
stringbuilder.append((String) component.getClass().getMethod("e").invoke(component));
} for(Object component : finalList) {
else { if(VersionHandler.is1_7_10()) {
stringbuilder.append((String) component.getClass().getMethod("getText").invoke(component)); stringbuilder.append((String) component.getClass().getMethod("e").invoke(component));
}
else {
stringbuilder.append((String) component.getClass().getMethod("getText").invoke(component));
}
} }
} }
//System.out.println("my string"); catch(Exception e) {
//System.out.println("my string"); e.printStackTrace();
//System.out.println("my string"); }
//System.out.println("my string"); if(plugin.getConfig().getString("loglevel", "info").equals("debug")) {
//System.out.println("my string"); System.out.println("my string");
//System.out.println(stringbuilder.toString()); 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(); return stringbuilder.toString();
} }
private static void splitComponents(List<Object> finalList, Object o, Class<?> c) throws Exception {
ArrayList<?> list = (ArrayList<?>) c.getMethod("a").invoke(o, new Object[0]);
for(Object component : list) {
ArrayList<?> innerList = (ArrayList<?>) c.getMethod("a").invoke(component, new Object[0]);
if(innerList.size() > 0) {
splitComponents(finalList, component, c);
}
else {
finalList.add(component);
}
}
}
private void loadNMS() { private void loadNMS() {
try { try {
MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b"); MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b");

View File

@ -142,6 +142,7 @@ public class Removemessage extends MineverseCommand {
}*/ }*/
//System.out.println(message.getComponent().getJson()); //System.out.println(message.getComponent().getJson());
playerPackets.add(Removemessage.this.createPacketPlayOutChat(message.getComponent())); playerPackets.add(Removemessage.this.createPacketPlayOutChat(message.getComponent()));
} }
if(resend) { if(resend) {
packets.put(p.getPlayer(), playerPackets); packets.put(p.getPlayer(), playerPackets);

View File

@ -13,7 +13,6 @@ import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.utilities.Format;
import mineverse.Aust1n46.chat.versions.VersionHandler; import mineverse.Aust1n46.chat.versions.VersionHandler;
import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.chat.ComponentSerializer; import net.md_5.bungee.chat.ComponentSerializer;
import com.comphenix.protocol.PacketType; import com.comphenix.protocol.PacketType;
@ -98,22 +97,15 @@ public class PacketListener extends PacketAdapter {
WrappedChatComponent originalChat = (WrappedChatComponent) event.getPacket().getChatComponents().read(0); WrappedChatComponent originalChat = (WrappedChatComponent) event.getPacket().getChatComponents().read(0);
String message = null; String message = null;
int hash = -1; int hash = -1;
try { //System.out.println(chat.getJson());
//System.out.println(chat.getJson()); //message = TextComponent.toPlainText(new TextComponent(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());
//System.out.println(MineverseChat.lastChatMessage.getMessage()); message = MineverseChat.toPlainText(chat.getHandle(), chat.getHandleType());
//System.out.println(chat.getJson());
message = MineverseChat.toPlainText(chat.getHandle(), chat.getHandleType()); //System.out.println(message + " message");
//System.out.println(chat.getJson()); hash = message != null ? message.hashCode() : -1;
//System.out.println(message + " message"); //System.out.println("remover goes in here?");
hash = message != null ? message.hashCode() : -1;
}
catch(Exception ex) {
message = TextComponent.toPlainText(new TextComponent(chat.getJson()));
//System.out.println(message);
//ex.printStackTrace();
}
ChatMessage lastChatMessage = MineverseChat.lastChatMessage; ChatMessage lastChatMessage = MineverseChat.lastChatMessage;
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer()); MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer());
if(lastChatMessage != null && lastChatMessage.getHash() == hash) { if(lastChatMessage != null && lastChatMessage.getHash() == hash) {