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.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.SQLException;
@ -553,37 +552,47 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
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());
}*/
public static String toPlainText(Object o, Class<?> c) {
List<Object> finalList = new ArrayList<>();
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));
try {
splitComponents(finalList, o, c);
for(Object component : finalList) {
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());
catch(Exception e) {
e.printStackTrace();
}
if(plugin.getConfig().getString("loglevel", "info").equals("debug")) {
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 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() {
try {

View File

@ -142,6 +142,7 @@ public class Removemessage extends MineverseCommand {
}*/
//System.out.println(message.getComponent().getJson());
playerPackets.add(Removemessage.this.createPacketPlayOutChat(message.getComponent()));
}
if(resend) {
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.versions.VersionHandler;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import com.comphenix.protocol.PacketType;
@ -98,22 +97,15 @@ public class PacketListener extends PacketAdapter {
WrappedChatComponent originalChat = (WrappedChatComponent) event.getPacket().getChatComponents().read(0);
String message = null;
int hash = -1;
try {
//System.out.println(chat.getJson());
//message = TextComponent.toPlainText(new TextComponent(chat.getJson()));
//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);
//ex.printStackTrace();
}
//System.out.println(chat.getJson());
//message = TextComponent.toPlainText(new TextComponent(chat.getJson()));
//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;
//System.out.println("remover goes in here?");
ChatMessage lastChatMessage = MineverseChat.lastChatMessage;
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer());
if(lastChatMessage != null && lastChatMessage.getHash() == hash) {