funkemunky

OutWorldPackets Wrapper [API thingy]

Jul 17th, 2018
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.90 KB | None | 0 0
  1. package cc.funkemunky.fiona.packetapi.packetlistener.packet.wrapped;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.entity.Player;
  5.  
  6. import java.lang.reflect.InvocationTargetException;
  7.  
  8. public class WrappedPacketPlayOutWorldParticle {
  9.  
  10.     private String type;
  11.     private String version;
  12.     private boolean j;
  13.     private float x;
  14.     private float y;
  15.     private float z;
  16.     private float xOffset;
  17.     private float yOffset;
  18.     private float zOffset;
  19.     private float speed;
  20.     private int amount;
  21.     private int[] data;
  22.  
  23.     public WrappedPacketPlayOutWorldParticle(String type, boolean var2, float x, float y, float z, float xOffset, float yOffset, float ZOffset, float speed, int amount, int... data) {
  24.         this.type = type;
  25.         this.j = var2;
  26.         this.x = x;
  27.         this.y = y;
  28.         this.z = z;
  29.         this.xOffset = xOffset;
  30.         this.yOffset = yOffset;
  31.         this.zOffset = ZOffset;
  32.         this.speed = speed;
  33.         this.amount = amount;
  34.         this.data = data;
  35.  
  36.         version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
  37.     }
  38.  
  39.     public void sendPacket(Player player) {
  40.         try {
  41.             Object enumPart = getEnum(getNMSClass("EnumParticle"), type);
  42.             Object packet = getNMSClass("PacketPlayOutWorldParticles").getConstructor(getNMSClass("EnumParticle"), boolean.class, float.class, float.class, float.class, float.class, float.class, float.class, float.class, int.class, int[].class).newInstance(enumPart, j, x, y, z, xOffset, yOffset, zOffset, speed, amount, data);
  43.             Object pCon = getNMSClass("EntityPlayer").getDeclaredField("playerConnection").get(getEntityPlayer(player));
  44.             getNMSClass("PlayerConnection").getMethod("sendPacket", getNMSClass("Packet")).invoke(pCon, packet);
  45.         } catch(Exception e) {
  46.             e.printStackTrace();
  47.         }
  48.     }
  49.  
  50.     private Object getEntityPlayer(Player player) {
  51.         try {
  52.             return getCBClass("entity.CraftPlayer").getMethod("getHandle").invoke(player);
  53.         } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e1) {
  54.             e1.printStackTrace();
  55.             return null;
  56.         }
  57.     }
  58.  
  59.     private Class<?> getNMSClass(String string) {
  60.         try {
  61.             return Class.forName("net.minecraft.server." + version + "." + string);
  62.         } catch (ClassNotFoundException e1) {
  63.             e1.printStackTrace();
  64.             return null;
  65.         }
  66.     }
  67.  
  68.     private Class<?> getCBClass(String string) {
  69.         try {
  70.             return Class.forName("org.bukkit.craftbukkit." + version + "." + string);
  71.         } catch (ClassNotFoundException e1) {
  72.             e1.printStackTrace();
  73.             return null;
  74.         }
  75.     }
  76.  
  77.     private Enum<?> getEnum(Class<?> clazz, String enumName) {
  78.         return Enum.valueOf((Class<Enum>) clazz, enumName);
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment