Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2014
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.74 KB | None | 0 0
  1. package mc.slimey101.core;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.lang.reflect.Method;
  5.  
  6. import net.minecraft.server.v1_7_R4.ChatSerializer;
  7.  
  8. import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
  9. import org.bukkit.entity.Player;
  10. import org.spigotmc.ProtocolInjector;
  11. import org.spigotmc.ProtocolInjector.PacketTitle;
  12. public class Title {        private static int VERSION = 47;
  13.  
  14.     public static void sendTitle(Player p, String title) {
  15.         if (!(((CraftPlayer)p).getHandle().playerConnection.networkManager.getVersion() >= VERSION)) return;
  16.         ((CraftPlayer)p).getHandle().playerConnection.sendPacket(new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.TITLE, ChatSerializer.a("{\"text\": \"\"}").a(title)));
  17.     }
  18.  
  19.     public static void sendSubTitle(Player p, String subtitle) {
  20.         if (!(((CraftPlayer)p).getHandle().playerConnection.networkManager.getVersion() >= VERSION)) return;
  21.         ((CraftPlayer)p).getHandle().playerConnection.sendPacket(new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.SUBTITLE, ChatSerializer.a("{\"text\": \"\"}").a(subtitle)));
  22.     }
  23.  
  24.     public static void sendTimings(Player p, int fadeIn, int stay, int fadeOut) {
  25.         if (!(((CraftPlayer)p).getHandle().playerConnection.networkManager.getVersion() >= VERSION)) return;
  26.         try {
  27.             final Object handle = getHandle(p);
  28.             final Object connection = getField(handle.getClass(), "playerConnection").get(handle);
  29.             Object packet = PacketTitle.class.getConstructor(PacketTitle.Action.class, int.class, int.class, int.class).newInstance(PacketTitle.Action.TIMES, fadeIn, stay, fadeOut);
  30.             getMethod(connection.getClass(), "sendPacket").invoke(connection, packet);
  31.         } catch (final Exception e) {
  32.             e.printStackTrace();
  33.         }
  34.     }
  35.  
  36.     private static boolean ClassListEqual(Class<?>[] l1, Class<?>[] l2) {
  37.         boolean equal = true;
  38.         if (l1.length != l2.length) {
  39.             return false;
  40.         }
  41.         for (int i = 0; i < l1.length; i++) {
  42.             if (l1[i] != l2[i]) {
  43.                 equal = false;
  44.                 break;
  45.             }
  46.         }
  47.         return equal;
  48.     }
  49.  
  50.     private static Field getField(Class<?> clazz, String name) {
  51.         try {
  52.             Field field = clazz.getDeclaredField(name);
  53.             field.setAccessible(true);
  54.             return field;
  55.         } catch (Exception e) {
  56.             e.printStackTrace();
  57.         }
  58.         return null;
  59.     }
  60.  
  61.     private static Method getMethod(Class<?> clazz, String name, Class<?>... args) {
  62.         for (Method m : clazz.getMethods()) {
  63.             if ((m.getName().equals(name)) && ((args.length == 0) || (ClassListEqual(args, m.getParameterTypes())))) {
  64.                 m.setAccessible(true);
  65.                 return m;
  66.             }
  67.         }
  68.         return null;
  69.     }
  70.  
  71.     private static Object getHandle(Object obj) {
  72.         try {
  73.             return getMethod(obj.getClass(), "getHandle", new Class[0]).invoke(obj, new Object[0]);
  74.         } catch (Exception e) {
  75.             e.printStackTrace();
  76.         }
  77.         return null;
  78.     }
  79.  
  80.     public static void reset(Player p) {
  81.         if (!(((CraftPlayer)p).getHandle().playerConnection.networkManager.getVersion() >= VERSION)) return;
  82.         ((CraftPlayer)p).getHandle().playerConnection.sendPacket(new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.RESET));
  83.     }
  84.  
  85.     public static void clear(Player p) {
  86.         if (!(((CraftPlayer)p).getHandle().playerConnection.networkManager.getVersion() >= VERSION)) return;
  87.         ((CraftPlayer)p).getHandle().playerConnection.sendPacket(new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.CLEAR));
  88.     }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement