diff --git a/out/production/ActionHealth/com/zeshanaslam/actionhealth/HealthUtil.class b/out/production/ActionHealth/com/zeshanaslam/actionhealth/HealthUtil.class index f1daf1d..d5b436e 100644 Binary files a/out/production/ActionHealth/com/zeshanaslam/actionhealth/HealthUtil.class and b/out/production/ActionHealth/com/zeshanaslam/actionhealth/HealthUtil.class differ diff --git a/out/production/ActionHealth/com/zeshanaslam/actionhealth/PreAction.class b/out/production/ActionHealth/com/zeshanaslam/actionhealth/PreAction.class new file mode 100644 index 0000000..8353b9f Binary files /dev/null and b/out/production/ActionHealth/com/zeshanaslam/actionhealth/PreAction.class differ diff --git a/src/com/zeshanaslam/actionhealth/HealthUtil.java b/src/com/zeshanaslam/actionhealth/HealthUtil.java index 2bbc94e..34c10c6 100644 --- a/src/com/zeshanaslam/actionhealth/HealthUtil.java +++ b/src/com/zeshanaslam/actionhealth/HealthUtil.java @@ -73,6 +73,8 @@ public class HealthUtil { } output = output.replace("{displayname}", displayName); + } else { + output = output.replace("{displayname}", name); } if (output.contains("{usestyle}")) { @@ -127,33 +129,50 @@ public class HealthUtil { message = ChatColor.translateAlternateColorCodes('&', message); try { - Class c1 = Class.forName("org.bukkit.craftbukkit." + plugin.settingsManager.mcVersion + ".entity.CraftPlayer"); - Object p = c1.cast(player); - Object ppoc; - Class c4 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".PacketPlayOutChat"); - Class c5 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".Packet"); + if (plugin.settingsManager.mcVersion.equals("v1_12_R1")) { + new PreAction(player, message); + } else if (!(plugin.settingsManager.mcVersion.equalsIgnoreCase("v1_8_R1") || (plugin.settingsManager.mcVersion.contains("v1_7_")))) { + Class c1 = Class.forName("org.bukkit.craftbukkit." + plugin.settingsManager.mcVersion + ".entity.CraftPlayer"); + Object p = c1.cast(player); + Object ppoc; + Class c4 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".PacketPlayOutChat"); + Class c5 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".Packet"); + + Class c2 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".ChatComponentText"); + Class c3 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".IChatBaseComponent"); + Object o = c2.getConstructor(new Class[]{String.class}).newInstance(message); + ppoc = c4.getConstructor(new Class[]{c3, byte.class}).newInstance(o, (byte) 2); + + Method getHandle = c1.getDeclaredMethod("getHandle"); + Object handle = getHandle.invoke(p); + + Field fieldConnection = handle.getClass().getDeclaredField("playerConnection"); + Object playerConnection = fieldConnection.get(handle); + + Method sendPacket = playerConnection.getClass().getDeclaredMethod("sendPacket", c5); + sendPacket.invoke(playerConnection, ppoc); + } else { + Class c1 = Class.forName("org.bukkit.craftbukkit." + plugin.settingsManager.mcVersion + ".entity.CraftPlayer"); + Object p = c1.cast(player); + Object ppoc; + Class c4 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".PacketPlayOutChat"); + Class c5 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".Packet"); - if (plugin.settingsManager.useOldMethods) { Class c2 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".ChatSerializer"); Class c3 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".IChatBaseComponent"); Method m3 = c2.getDeclaredMethod("a", String.class); Object cbc = c3.cast(m3.invoke(c2, "{\"text\": \"" + message + "\"}")); ppoc = c4.getConstructor(new Class[]{c3, byte.class}).newInstance(cbc, (byte) 2); - } else { - Class c2 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".ChatComponentText"); - Class c3 = Class.forName("net.minecraft.server." + plugin.settingsManager.mcVersion + ".IChatBaseComponent"); - Object o = c2.getConstructor(new Class[]{String.class}).newInstance(message); - ppoc = c4.getConstructor(new Class[]{c3, byte.class}).newInstance(o, (byte) 2); + + Method getHandle = c1.getDeclaredMethod("getHandle"); + Object handle = getHandle.invoke(p); + + Field fieldConnection = handle.getClass().getDeclaredField("playerConnection"); + Object playerConnection = fieldConnection.get(handle); + + Method sendPacket = playerConnection.getClass().getDeclaredMethod("sendPacket", c5); + sendPacket.invoke(playerConnection, ppoc); } - - Method getHandle = c1.getDeclaredMethod("getHandle"); - Object handle = getHandle.invoke(p); - - Field fieldConnection = handle.getClass().getDeclaredField("playerConnection"); - Object playerConnection = fieldConnection.get(handle); - - Method sendPacket = playerConnection.getClass().getDeclaredMethod("sendPacket", c5); - sendPacket.invoke(playerConnection, ppoc); } catch (Exception e) { e.printStackTrace(); } diff --git a/src/com/zeshanaslam/actionhealth/PreAction.java b/src/com/zeshanaslam/actionhealth/PreAction.java new file mode 100644 index 0000000..2cb8747 --- /dev/null +++ b/src/com/zeshanaslam/actionhealth/PreAction.java @@ -0,0 +1,16 @@ +package com.zeshanaslam.actionhealth; + +import net.minecraft.server.v1_12_R1.ChatMessageType; +import net.minecraft.server.v1_12_R1.IChatBaseComponent; +import net.minecraft.server.v1_12_R1.PacketPlayOutChat; +import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; + +public class PreAction { + + public PreAction(Player player, String message) { + IChatBaseComponent cbc = IChatBaseComponent.ChatSerializer.a("{\"text\": \"" + message + "\"}"); + PacketPlayOutChat packetPlayOutChat = new PacketPlayOutChat(cbc, ChatMessageType.GAME_INFO); + ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packetPlayOutChat); + } +}