Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package cc.funkemunky.fiona.packetapi.packetlistener.packet.wrapped;
- import org.bukkit.Bukkit;
- import org.bukkit.entity.Player;
- import java.lang.reflect.InvocationTargetException;
- public class WrappedPacketPlayOutWorldParticle {
- private String type;
- private String version;
- private boolean j;
- private float x;
- private float y;
- private float z;
- private float xOffset;
- private float yOffset;
- private float zOffset;
- private float speed;
- private int amount;
- private int[] data;
- public WrappedPacketPlayOutWorldParticle(String type, boolean var2, float x, float y, float z, float xOffset, float yOffset, float ZOffset, float speed, int amount, int... data) {
- this.type = type;
- this.j = var2;
- this.x = x;
- this.y = y;
- this.z = z;
- this.xOffset = xOffset;
- this.yOffset = yOffset;
- this.zOffset = ZOffset;
- this.speed = speed;
- this.amount = amount;
- this.data = data;
- version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
- }
- public void sendPacket(Player player) {
- try {
- Object enumPart = getEnum(getNMSClass("EnumParticle"), type);
- 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);
- Object pCon = getNMSClass("EntityPlayer").getDeclaredField("playerConnection").get(getEntityPlayer(player));
- getNMSClass("PlayerConnection").getMethod("sendPacket", getNMSClass("Packet")).invoke(pCon, packet);
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- private Object getEntityPlayer(Player player) {
- try {
- return getCBClass("entity.CraftPlayer").getMethod("getHandle").invoke(player);
- } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e1) {
- e1.printStackTrace();
- return null;
- }
- }
- private Class<?> getNMSClass(String string) {
- try {
- return Class.forName("net.minecraft.server." + version + "." + string);
- } catch (ClassNotFoundException e1) {
- e1.printStackTrace();
- return null;
- }
- }
- private Class<?> getCBClass(String string) {
- try {
- return Class.forName("org.bukkit.craftbukkit." + version + "." + string);
- } catch (ClassNotFoundException e1) {
- e1.printStackTrace();
- return null;
- }
- }
- private Enum<?> getEnum(Class<?> clazz, String enumName) {
- return Enum.valueOf((Class<Enum>) clazz, enumName);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment