Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.kewi.Teste;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Method;
- import org.bukkit.Bukkit;
- import org.bukkit.entity.Player;
- public class ActionBarSender
- {
- private static Class<?> CRAFTPLAYERCLASS;
- private static Class<?> PACKET_PLAYER_CHAT_CLASS;
- private static Class<?> ICHATCOMP;
- private static Class<?> CHATMESSAGE;
- private static Class<?> PACKET_CLASS;
- private static Constructor<?> PACKET_PLAYER_CHAT_CONSTRUCTOR;
- private static Constructor<?> CHATMESSAGE_CONSTRUCTOR;
- private static final String SERVER_VERSION;
- static {
- String name = Bukkit.getServer().getClass().getName();
- name = name.substring(name.indexOf("craftbukkit.") + "craftbukkit.".length());
- name = (SERVER_VERSION = name.substring(0, name.indexOf(".")));
- try {
- ActionBarSender.CRAFTPLAYERCLASS = Class.forName("org.bukkit.craftbukkit." + ActionBarSender.SERVER_VERSION + ".entity.CraftPlayer");
- ActionBarSender.PACKET_PLAYER_CHAT_CLASS = Class.forName("net.minecraft.server." + ActionBarSender.SERVER_VERSION + ".PacketPlayOutChat");
- ActionBarSender.PACKET_CLASS = Class.forName("net.minecraft.server." + ActionBarSender.SERVER_VERSION + ".Packet");
- ActionBarSender.ICHATCOMP = Class.forName("net.minecraft.server." + ActionBarSender.SERVER_VERSION + ".IChatBaseComponent");
- ActionBarSender.PACKET_PLAYER_CHAT_CONSTRUCTOR = ActionBarSender.PACKET_PLAYER_CHAT_CLASS.getConstructor(ActionBarSender.ICHATCOMP, Byte.TYPE);
- ActionBarSender.CHATMESSAGE = Class.forName("net.minecraft.server." + ActionBarSender.SERVER_VERSION + ".ChatMessage");
- ActionBarSender.CHATMESSAGE_CONSTRUCTOR = ActionBarSender.CHATMESSAGE.getDeclaredConstructor(String.class, Object[].class);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void sendActionBarMessage(final Player player, final String message) {
- try {
- final Object icb = ActionBarSender.CHATMESSAGE_CONSTRUCTOR.newInstance(message, new Object[0]);
- final Object packet = ActionBarSender.PACKET_PLAYER_CHAT_CONSTRUCTOR.newInstance(icb, (byte)2);
- final Object craftplayerInst = ActionBarSender.CRAFTPLAYERCLASS.cast(player);
- final Method methodHandle = ActionBarSender.CRAFTPLAYERCLASS.getMethod("getHandle", (Class<?>[])new Class[0]);
- final Object methodhHandle = methodHandle.invoke(craftplayerInst, new Object[0]);
- final Object playerConnection = methodhHandle.getClass().getField("playerConnection").get(methodhHandle);
- playerConnection.getClass().getMethod("sendPacket", ActionBarSender.PACKET_CLASS).invoke(playerConnection, packet);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement