+ * http://forums.bukkit.org/threads/tutorial-utilizing-the-boss-health-bar.158018/page-2#post-1760928 + * + * @author James Mortemore + */ public class v1_6 extends FakeDragon { - private static final Integer EntityID = 6000; - - public v1_6(String name, Location loc) { - super(name, loc); - } - - @SuppressWarnings("deprecation") - @Override - public Object getSpawnPacket() { - Class> mob_class = Util.getCraftClass("Packet24MobSpawn"); - Object mobPacket = null; - try { - mobPacket = mob_class.newInstance(); - - Field a = Util.getField(mob_class, "a"); - a.setAccessible(true); - a.set(mobPacket, EntityID);// Entity ID - Field b = Util.getField(mob_class, "b"); - b.setAccessible(true); - b.set(mobPacket, EntityType.ENDER_DRAGON.getTypeId());// Mob type - // (ID: 64) - Field c = Util.getField(mob_class, "c"); - c.setAccessible(true); - c.set(mobPacket, getX());// X position - Field d = Util.getField(mob_class, "d"); - d.setAccessible(true); - d.set(mobPacket, getY());// Y position - Field e = Util.getField(mob_class, "e"); - e.setAccessible(true); - e.set(mobPacket, getZ());// Z position - Field f = Util.getField(mob_class, "f"); - f.setAccessible(true); - f.set(mobPacket, (byte) ((int) (getPitch() * 256.0F / 360.0F)));// Pitch - Field g = Util.getField(mob_class, "g"); - g.setAccessible(true); - g.set(mobPacket, (byte) ((int) 0));// Head - // Pitch - Field h = Util.getField(mob_class, "h"); - h.setAccessible(true); - h.set(mobPacket, (byte) ((int) (getYaw() * 256.0F / 360.0F)));// Yaw - Field i = Util.getField(mob_class, "i"); - i.setAccessible(true); - i.set(mobPacket, getXvel());// X velocity - Field j = Util.getField(mob_class, "j"); - j.setAccessible(true); - j.set(mobPacket, getYvel());// Y velocity - Field k = Util.getField(mob_class, "k"); - k.setAccessible(true); - k.set(mobPacket, getZvel());// Z velocity - - Object watcher = getWatcher(); - Field t = Util.getField(mob_class, "t"); - t.setAccessible(true); - t.set(mobPacket, watcher); - } catch (InstantiationException e1) { - e1.printStackTrace(); - } catch (IllegalAccessException e1) { - e1.printStackTrace(); - } - - return mobPacket; - } - - @Override - public Object getDestroyPacket() { - Class> packet_class = Util.getCraftClass("Packet29DestroyEntity"); - Object packet = null; - try { - packet = packet_class.newInstance(); - - Field a = Util.getField(packet_class, "a"); - a.setAccessible(true); - a.set(packet, new int[] { EntityID }); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - - return packet; - } - - @Override - public Object getMetaPacket(Object watcher) { - Class> packet_class = Util.getCraftClass("Packet40EntityMetadata"); - Object packet = null; - try { - packet = packet_class.newInstance(); - - Field a = Util.getField(packet_class, "a"); - a.setAccessible(true); - a.set(packet, EntityID); - - Method watcher_c = Util.getMethod(watcher.getClass(), "c"); - Field b = Util.getField(packet_class, "b"); - b.setAccessible(true); - b.set(packet, watcher_c.invoke(watcher)); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - - return packet; - } - - @Override - public Object getTeleportPacket(Location loc) { - Class> packet_class = Util.getCraftClass("Packet34EntityTeleport"); - Object packet = null; - try { - packet = packet_class.newInstance(); - - Field a = Util.getField(packet_class, "a"); - a.setAccessible(true); - a.set(packet, EntityID); - Field b = Util.getField(packet_class, "b"); - b.setAccessible(true); - b.set(packet, (int) Math.floor(loc.getX() * 32.0D)); - Field c = Util.getField(packet_class, "c"); - c.setAccessible(true); - c.set(packet, (int) Math.floor(loc.getY() * 32.0D)); - Field d = Util.getField(packet_class, "d"); - d.setAccessible(true); - d.set(packet, (int) Math.floor(loc.getZ() * 32.0D)); - Field e = Util.getField(packet_class, "e"); - e.setAccessible(true); - e.set(packet, (byte) ((int) (loc.getYaw() * 256.0F / 360.0F))); - Field f = Util.getField(packet_class, "f"); - f.setAccessible(true); - f.set(packet, (byte) ((int) (loc.getPitch() * 256.0F / 360.0F))); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - return packet; - } - - @Override - public Object getWatcher() { - Class> watcher_class = Util.getCraftClass("DataWatcher"); - Object watcher = null; - try { - watcher = watcher_class.newInstance(); - - Method a = Util.getMethod(watcher_class, "a", new Class>[] { int.class, Object.class }); - a.setAccessible(true); - - a.invoke(watcher, 0, isVisible() ? (byte) 0 : (byte) 0x20); - a.invoke(watcher, 6, (Float) (float) health); - a.invoke(watcher, 7, (Integer) (int) 0); - a.invoke(watcher, 8, (Byte) (byte) 0); - a.invoke(watcher, 10, (String) name); - a.invoke(watcher, 11, (Byte) (byte) 1); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - - return watcher; - } + private static final Integer EntityID = 6000; + + public v1_6(String name, Location loc) { + super(name, loc); + } + + @SuppressWarnings("deprecation") + @Override + public Object getSpawnPacket() { + Class> mob_class = Util.getCraftClass("Packet24MobSpawn"); + Object mobPacket = null; + try { + mobPacket = mob_class.newInstance(); + + Field a = Util.getField(mob_class, "a"); + a.setAccessible(true); + a.set(mobPacket, EntityID);// Entity ID + Field b = Util.getField(mob_class, "b"); + b.setAccessible(true); + b.set(mobPacket, EntityType.ENDER_DRAGON.getTypeId());// Mob type + // (ID: 64) + Field c = Util.getField(mob_class, "c"); + c.setAccessible(true); + c.set(mobPacket, getX());// X position + Field d = Util.getField(mob_class, "d"); + d.setAccessible(true); + d.set(mobPacket, getY());// Y position + Field e = Util.getField(mob_class, "e"); + e.setAccessible(true); + e.set(mobPacket, getZ());// Z position + Field f = Util.getField(mob_class, "f"); + f.setAccessible(true); + f.set(mobPacket, (byte) ((int) (getPitch() * 256.0F / 360.0F)));// Pitch + Field g = Util.getField(mob_class, "g"); + g.setAccessible(true); + g.set(mobPacket, (byte) ((int) 0));// Head + // Pitch + Field h = Util.getField(mob_class, "h"); + h.setAccessible(true); + h.set(mobPacket, (byte) ((int) (getYaw() * 256.0F / 360.0F)));// Yaw + Field i = Util.getField(mob_class, "i"); + i.setAccessible(true); + i.set(mobPacket, getXvel());// X velocity + Field j = Util.getField(mob_class, "j"); + j.setAccessible(true); + j.set(mobPacket, getYvel());// Y velocity + Field k = Util.getField(mob_class, "k"); + k.setAccessible(true); + k.set(mobPacket, getZvel());// Z velocity + + Object watcher = getWatcher(); + Field t = Util.getField(mob_class, "t"); + t.setAccessible(true); + t.set(mobPacket, watcher); + } catch (InstantiationException e1) { + e1.printStackTrace(); + } catch (IllegalAccessException e1) { + e1.printStackTrace(); + } + + return mobPacket; + } + + @Override + public Object getDestroyPacket() { + Class> packet_class = Util.getCraftClass("Packet29DestroyEntity"); + Object packet = null; + try { + packet = packet_class.newInstance(); + + Field a = Util.getField(packet_class, "a"); + a.setAccessible(true); + a.set(packet, new int[]{EntityID}); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + return packet; + } + + @Override + public Object getMetaPacket(Object watcher) { + Class> packet_class = Util.getCraftClass("Packet40EntityMetadata"); + Object packet = null; + try { + packet = packet_class.newInstance(); + + Field a = Util.getField(packet_class, "a"); + a.setAccessible(true); + a.set(packet, EntityID); + + Method watcher_c = Util.getMethod(watcher.getClass(), "c"); + Field b = Util.getField(packet_class, "b"); + b.setAccessible(true); + b.set(packet, watcher_c.invoke(watcher)); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + + return packet; + } + + @Override + public Object getTeleportPacket(Location loc) { + Class> packet_class = Util.getCraftClass("Packet34EntityTeleport"); + Object packet = null; + try { + packet = packet_class.newInstance(); + + Field a = Util.getField(packet_class, "a"); + a.setAccessible(true); + a.set(packet, EntityID); + Field b = Util.getField(packet_class, "b"); + b.setAccessible(true); + b.set(packet, (int) Math.floor(loc.getX() * 32.0D)); + Field c = Util.getField(packet_class, "c"); + c.setAccessible(true); + c.set(packet, (int) Math.floor(loc.getY() * 32.0D)); + Field d = Util.getField(packet_class, "d"); + d.setAccessible(true); + d.set(packet, (int) Math.floor(loc.getZ() * 32.0D)); + Field e = Util.getField(packet_class, "e"); + e.setAccessible(true); + e.set(packet, (byte) ((int) (loc.getYaw() * 256.0F / 360.0F))); + Field f = Util.getField(packet_class, "f"); + f.setAccessible(true); + f.set(packet, (byte) ((int) (loc.getPitch() * 256.0F / 360.0F))); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + return packet; + } + + @Override + public Object getWatcher() { + Class> watcher_class = Util.getCraftClass("DataWatcher"); + Object watcher = null; + try { + watcher = watcher_class.newInstance(); + + Method a = Util.getMethod(watcher_class, "a", new Class>[]{int.class, Object.class}); + a.setAccessible(true); + + a.invoke(watcher, 0, isVisible() ? (byte) 0 : (byte) 0x20); + a.invoke(watcher, 6, (Float) (float) health); + a.invoke(watcher, 7, (Integer) (int) 0); + a.invoke(watcher, 8, (Byte) (byte) 0); + a.invoke(watcher, 10, (String) name); + a.invoke(watcher, 11, (Byte) (byte) 1); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + + return watcher; + } } diff --git a/src/me/confuser/barapi/nms/v1_7.java b/src/me/confuser/barapi/nms/v1_7.java index 7aa685e..f30151c 100644 --- a/src/me/confuser/barapi/nms/v1_7.java +++ b/src/me/confuser/barapi/nms/v1_7.java @@ -1,194 +1,193 @@ package me.confuser.barapi.nms; +import me.confuser.barapi.Util; +import org.bukkit.Location; + import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import me.confuser.barapi.Util; - -import org.bukkit.Location; - /** -* This is the FakeDragon class for BarAPI. -* It is based on the code by SoThatsIt. -* -* http://forums.bukkit.org/threads/tutorial-utilizing-the-boss-health-bar.158018/page-5#post-2053705 -* -* @author James Mortemore -*/ + * This is the FakeDragon class for BarAPI. + * It is based on the code by SoThatsIt. + *
+ * http://forums.bukkit.org/threads/tutorial-utilizing-the-boss-health-bar.158018/page-5#post-2053705 + * + * @author James Mortemore + */ public class v1_7 extends FakeDragon { - private Object dragon; - private int id; - - public v1_7(String name, Location loc) { - super(name, loc); - } - - @Override - public Object getSpawnPacket() { - Class> Entity = Util.getCraftClass("Entity"); - Class> EntityLiving = Util.getCraftClass("EntityLiving"); - Class> EntityEnderDragon = Util.getCraftClass("EntityEnderDragon"); - Object packet = null; - try { - dragon = EntityEnderDragon.getConstructor(Util.getCraftClass("World")).newInstance(getWorld()); - - Method setLocation = Util.getMethod(EntityEnderDragon, "setLocation", new Class>[] { double.class, double.class, double.class, float.class, float.class }); - setLocation.invoke(dragon, getX(), getY(), getZ(), getPitch(), getYaw()); - - Method setInvisible = Util.getMethod(EntityEnderDragon, "setInvisible", new Class>[] { boolean.class }); - setInvisible.invoke(dragon, isVisible()); - - Method setCustomName = Util.getMethod(EntityEnderDragon, "setCustomName", new Class>[] { String.class }); - setCustomName.invoke(dragon, name); - - Method setHealth = Util.getMethod(EntityEnderDragon, "setHealth", new Class>[] { float.class }); - setHealth.invoke(dragon, health); - - Field motX = Util.getField(Entity, "motX"); - motX.set(dragon, getXvel()); - - Field motY = Util.getField(Entity, "motY"); - motY.set(dragon, getYvel()); - - Field motZ = Util.getField(Entity, "motZ"); - motZ.set(dragon, getZvel()); - - Method getId = Util.getMethod(EntityEnderDragon, "getId", new Class>[] {}); - this.id = (Integer) getId.invoke(dragon); - - Class> PacketPlayOutSpawnEntityLiving = Util.getCraftClass("PacketPlayOutSpawnEntityLiving"); - - packet = PacketPlayOutSpawnEntityLiving.getConstructor(new Class>[] { EntityLiving }).newInstance(dragon); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - - return packet; - } - - @Override - public Object getDestroyPacket() { - Class> PacketPlayOutEntityDestroy = Util.getCraftClass("PacketPlayOutEntityDestroy"); - - Object packet = null; - try { - packet = PacketPlayOutEntityDestroy.newInstance(); - Field a = PacketPlayOutEntityDestroy.getDeclaredField("a"); - a.setAccessible(true); - a.set(packet, new int[] { id }); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } - - return packet; - } - - @Override - public Object getMetaPacket(Object watcher) { - Class> DataWatcher = Util.getCraftClass("DataWatcher"); - - Class> PacketPlayOutEntityMetadata = Util.getCraftClass("PacketPlayOutEntityMetadata"); - - Object packet = null; - try { - packet = PacketPlayOutEntityMetadata.getConstructor(new Class>[] { int.class, DataWatcher, boolean.class }).newInstance(id, watcher, true); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - - return packet; - } - - @Override - public Object getTeleportPacket(Location loc) { - Class> PacketPlayOutEntityTeleport = Util.getCraftClass("PacketPlayOutEntityTeleport"); - - Object packet = null; - - try { - packet = PacketPlayOutEntityTeleport.getConstructor(new Class>[] { int.class, int.class, int.class, int.class, byte.class, byte.class }).newInstance(this.id, loc.getBlockX() * 32, loc.getBlockY() * 32, loc.getBlockZ() * 32, (byte) ((int) loc.getYaw() * 256 / 360), (byte) ((int) loc.getPitch() * 256 / 360)); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - - return packet; - } - - @Override - public Object getWatcher() { - Class> Entity = Util.getCraftClass("Entity"); - Class> DataWatcher = Util.getCraftClass("DataWatcher"); - - Object watcher = null; - try { - watcher = DataWatcher.getConstructor(new Class>[] { Entity }).newInstance(dragon); - Method a = Util.getMethod(DataWatcher, "a", new Class>[] { int.class, Object.class }); - - a.invoke(watcher, 0, isVisible() ? (byte) 0 : (byte) 0x20); - a.invoke(watcher, 6, (Float) health); - a.invoke(watcher, 7, (Integer) 0); - a.invoke(watcher, 8, (Byte) (byte) 0); - a.invoke(watcher, 10, name); - a.invoke(watcher, 11, (Byte) (byte) 1); - } catch (IllegalArgumentException e) { - - e.printStackTrace(); - } catch (SecurityException e) { - - e.printStackTrace(); - } catch (InstantiationException e) { - - e.printStackTrace(); - } catch (IllegalAccessException e) { - - e.printStackTrace(); - } catch (InvocationTargetException e) { - - e.printStackTrace(); - } catch (NoSuchMethodException e) { - - e.printStackTrace(); - } - return watcher; - } + private Object dragon; + private int id; + + public v1_7(String name, Location loc) { + super(name, loc); + } + + @Override + public Object getSpawnPacket() { + Class> Entity = Util.getCraftClass("Entity"); + Class> EntityLiving = Util.getCraftClass("EntityLiving"); + Class> EntityEnderDragon = Util.getCraftClass("EntityEnderDragon"); + Object packet = null; + try { + dragon = EntityEnderDragon.getConstructor(Util.getCraftClass("World")).newInstance(getWorld()); + + Method setLocation = Util.getMethod(EntityEnderDragon, "setLocation", new Class>[]{double.class, double.class, double.class, float.class, float.class}); + setLocation.invoke(dragon, getX(), getY(), getZ(), getPitch(), getYaw()); + + Method setInvisible = Util.getMethod(EntityEnderDragon, "setInvisible", new Class>[]{boolean.class}); + setInvisible.invoke(dragon, isVisible()); + + Method setCustomName = Util.getMethod(EntityEnderDragon, "setCustomName", new Class>[]{String.class}); + setCustomName.invoke(dragon, name); + + Method setHealth = Util.getMethod(EntityEnderDragon, "setHealth", new Class>[]{float.class}); + setHealth.invoke(dragon, health); + + Field motX = Util.getField(Entity, "motX"); + motX.set(dragon, getXvel()); + + Field motY = Util.getField(Entity, "motY"); + motY.set(dragon, getYvel()); + + Field motZ = Util.getField(Entity, "motZ"); + motZ.set(dragon, getZvel()); + + Method getId = Util.getMethod(EntityEnderDragon, "getId", new Class>[]{}); + this.id = (Integer) getId.invoke(dragon); + + Class> PacketPlayOutSpawnEntityLiving = Util.getCraftClass("PacketPlayOutSpawnEntityLiving"); + + packet = PacketPlayOutSpawnEntityLiving.getConstructor(new Class>[]{EntityLiving}).newInstance(dragon); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + return packet; + } + + @Override + public Object getDestroyPacket() { + Class> PacketPlayOutEntityDestroy = Util.getCraftClass("PacketPlayOutEntityDestroy"); + + Object packet = null; + try { + packet = PacketPlayOutEntityDestroy.newInstance(); + Field a = PacketPlayOutEntityDestroy.getDeclaredField("a"); + a.setAccessible(true); + a.set(packet, new int[]{id}); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } + + return packet; + } + + @Override + public Object getMetaPacket(Object watcher) { + Class> DataWatcher = Util.getCraftClass("DataWatcher"); + + Class> PacketPlayOutEntityMetadata = Util.getCraftClass("PacketPlayOutEntityMetadata"); + + Object packet = null; + try { + packet = PacketPlayOutEntityMetadata.getConstructor(new Class>[]{int.class, DataWatcher, boolean.class}).newInstance(id, watcher, true); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + return packet; + } + + @Override + public Object getTeleportPacket(Location loc) { + Class> PacketPlayOutEntityTeleport = Util.getCraftClass("PacketPlayOutEntityTeleport"); + + Object packet = null; + + try { + packet = PacketPlayOutEntityTeleport.getConstructor(new Class>[]{int.class, int.class, int.class, int.class, byte.class, byte.class}).newInstance(this.id, loc.getBlockX() * 32, loc.getBlockY() * 32, loc.getBlockZ() * 32, (byte) ((int) loc.getYaw() * 256 / 360), (byte) ((int) loc.getPitch() * 256 / 360)); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + return packet; + } + + @Override + public Object getWatcher() { + Class> Entity = Util.getCraftClass("Entity"); + Class> DataWatcher = Util.getCraftClass("DataWatcher"); + + Object watcher = null; + try { + watcher = DataWatcher.getConstructor(new Class>[]{Entity}).newInstance(dragon); + Method a = Util.getMethod(DataWatcher, "a", new Class>[]{int.class, Object.class}); + + a.invoke(watcher, 0, isVisible() ? (byte) 0 : (byte) 0x20); + a.invoke(watcher, 6, (Float) health); + a.invoke(watcher, 7, (Integer) 0); + a.invoke(watcher, 8, (Byte) (byte) 0); + a.invoke(watcher, 10, name); + a.invoke(watcher, 11, (Byte) (byte) 1); + } catch (IllegalArgumentException e) { + + e.printStackTrace(); + } catch (SecurityException e) { + + e.printStackTrace(); + } catch (InstantiationException e) { + + e.printStackTrace(); + } catch (IllegalAccessException e) { + + e.printStackTrace(); + } catch (InvocationTargetException e) { + + e.printStackTrace(); + } catch (NoSuchMethodException e) { + + e.printStackTrace(); + } + return watcher; + } } diff --git a/src/me/confuser/barapi/nms/v1_8.java b/src/me/confuser/barapi/nms/v1_8.java index ff1e3dc..a808d56 100644 --- a/src/me/confuser/barapi/nms/v1_8.java +++ b/src/me/confuser/barapi/nms/v1_8.java @@ -1,180 +1,179 @@ package me.confuser.barapi.nms; +import me.confuser.barapi.Util; +import org.bukkit.Location; + import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import me.confuser.barapi.Util; - -import org.bukkit.Location; - public class v1_8 extends FakeDragon { - private Object dragon; - private int id; - - public v1_8(String name, Location loc) { - super(name, loc); - } - - @Override - public Object getSpawnPacket() { - Class> Entity = Util.getCraftClass("Entity"); - Class> EntityLiving = Util.getCraftClass("EntityLiving"); - Class> EntityEnderDragon = Util.getCraftClass("EntityEnderDragon"); - Object packet = null; - - try { - dragon = EntityEnderDragon.getConstructor(Util.getCraftClass("World")).newInstance(getWorld()); - - Method setLocation = Util.getMethod(EntityEnderDragon, "setLocation", new Class>[] { double.class, double.class, double.class, float.class, float.class }); - setLocation.invoke(dragon, getX(), getY(), getZ(), getPitch(), getYaw()); - - Method setInvisible = Util.getMethod(EntityEnderDragon, "setInvisible", new Class>[] { boolean.class }); - setInvisible.invoke(dragon, true); - - Method setCustomName = Util.getMethod(EntityEnderDragon, "setCustomName", new Class>[] { String.class }); - setCustomName.invoke(dragon, name); - - Method setHealth = Util.getMethod(EntityEnderDragon, "setHealth", new Class>[] { float.class }); - setHealth.invoke(dragon, health); - - Field motX = Util.getField(Entity, "motX"); - motX.set(dragon, getXvel()); - - Field motY = Util.getField(Entity, "motY"); - motY.set(dragon, getYvel()); - - Field motZ = Util.getField(Entity, "motZ"); - motZ.set(dragon, getZvel()); - - Method getId = Util.getMethod(EntityEnderDragon, "getId", new Class>[] {}); - this.id = (Integer) getId.invoke(dragon); - - Class> PacketPlayOutSpawnEntityLiving = Util.getCraftClass("PacketPlayOutSpawnEntityLiving"); - - packet = PacketPlayOutSpawnEntityLiving.getConstructor(new Class>[] { EntityLiving }).newInstance(dragon); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - - return packet; - } - - @Override - public Object getDestroyPacket() { - Class> PacketPlayOutEntityDestroy = Util.getCraftClass("PacketPlayOutEntityDestroy"); - - Object packet = null; - try { - packet = PacketPlayOutEntityDestroy.newInstance(); - Field a = PacketPlayOutEntityDestroy.getDeclaredField("a"); - a.setAccessible(true); - a.set(packet, new int[] { id }); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } - - return packet; - } - - @Override - public Object getMetaPacket(Object watcher) { - Class> DataWatcher = Util.getCraftClass("DataWatcher"); - - Class> PacketPlayOutEntityMetadata = Util.getCraftClass("PacketPlayOutEntityMetadata"); - - Object packet = null; - try { - packet = PacketPlayOutEntityMetadata.getConstructor(new Class>[] { int.class, DataWatcher, boolean.class }).newInstance(id, watcher, true); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - - return packet; - } - - @Override - public Object getTeleportPacket(Location loc) { - Class> PacketPlayOutEntityTeleport = Util.getCraftClass("PacketPlayOutEntityTeleport"); - Object packet = null; - - try { - packet = PacketPlayOutEntityTeleport.getConstructor(new Class>[] { int.class, int.class, int.class, int.class, byte.class, byte.class, boolean.class }).newInstance(this.id, loc.getBlockX() * 32, loc.getBlockY() * 32, loc.getBlockZ() * 32, (byte) ((int) loc.getYaw() * 256 / 360), (byte) ((int) loc.getPitch() * 256 / 360), false); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - - return packet; - } - - @Override - public Object getWatcher() { - Class> Entity = Util.getCraftClass("Entity"); - Class> DataWatcher = Util.getCraftClass("DataWatcher"); - - Object watcher = null; - try { - watcher = DataWatcher.getConstructor(new Class>[] { Entity }).newInstance(dragon); - Method a = Util.getMethod(DataWatcher, "a", new Class>[] { int.class, Object.class }); - - a.invoke(watcher, 5, isVisible() ? (byte) 0 : (byte) 0x20); - a.invoke(watcher, 6, (Float) health); - a.invoke(watcher, 7, (Integer) 0); - a.invoke(watcher, 8, (Byte) (byte) 0); - a.invoke(watcher, 10, name); - a.invoke(watcher, 11, (Byte) (byte) 1); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - - return watcher; - } + private Object dragon; + private int id; + + public v1_8(String name, Location loc) { + super(name, loc); + } + + @Override + public Object getSpawnPacket() { + Class> Entity = Util.getCraftClass("Entity"); + Class> EntityLiving = Util.getCraftClass("EntityLiving"); + Class> EntityEnderDragon = Util.getCraftClass("EntityEnderDragon"); + Object packet = null; + + try { + dragon = EntityEnderDragon.getConstructor(Util.getCraftClass("World")).newInstance(getWorld()); + + Method setLocation = Util.getMethod(EntityEnderDragon, "setLocation", new Class>[]{double.class, double.class, double.class, float.class, float.class}); + setLocation.invoke(dragon, getX(), getY(), getZ(), getPitch(), getYaw()); + + Method setInvisible = Util.getMethod(EntityEnderDragon, "setInvisible", new Class>[]{boolean.class}); + setInvisible.invoke(dragon, true); + + Method setCustomName = Util.getMethod(EntityEnderDragon, "setCustomName", new Class>[]{String.class}); + setCustomName.invoke(dragon, name); + + Method setHealth = Util.getMethod(EntityEnderDragon, "setHealth", new Class>[]{float.class}); + setHealth.invoke(dragon, health); + + Field motX = Util.getField(Entity, "motX"); + motX.set(dragon, getXvel()); + + Field motY = Util.getField(Entity, "motY"); + motY.set(dragon, getYvel()); + + Field motZ = Util.getField(Entity, "motZ"); + motZ.set(dragon, getZvel()); + + Method getId = Util.getMethod(EntityEnderDragon, "getId", new Class>[]{}); + this.id = (Integer) getId.invoke(dragon); + + Class> PacketPlayOutSpawnEntityLiving = Util.getCraftClass("PacketPlayOutSpawnEntityLiving"); + + packet = PacketPlayOutSpawnEntityLiving.getConstructor(new Class>[]{EntityLiving}).newInstance(dragon); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + return packet; + } + + @Override + public Object getDestroyPacket() { + Class> PacketPlayOutEntityDestroy = Util.getCraftClass("PacketPlayOutEntityDestroy"); + + Object packet = null; + try { + packet = PacketPlayOutEntityDestroy.newInstance(); + Field a = PacketPlayOutEntityDestroy.getDeclaredField("a"); + a.setAccessible(true); + a.set(packet, new int[]{id}); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } + + return packet; + } + + @Override + public Object getMetaPacket(Object watcher) { + Class> DataWatcher = Util.getCraftClass("DataWatcher"); + + Class> PacketPlayOutEntityMetadata = Util.getCraftClass("PacketPlayOutEntityMetadata"); + + Object packet = null; + try { + packet = PacketPlayOutEntityMetadata.getConstructor(new Class>[]{int.class, DataWatcher, boolean.class}).newInstance(id, watcher, true); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + return packet; + } + + @Override + public Object getTeleportPacket(Location loc) { + Class> PacketPlayOutEntityTeleport = Util.getCraftClass("PacketPlayOutEntityTeleport"); + Object packet = null; + + try { + packet = PacketPlayOutEntityTeleport.getConstructor(new Class>[]{int.class, int.class, int.class, int.class, byte.class, byte.class, boolean.class}).newInstance(this.id, loc.getBlockX() * 32, loc.getBlockY() * 32, loc.getBlockZ() * 32, (byte) ((int) loc.getYaw() * 256 / 360), (byte) ((int) loc.getPitch() * 256 / 360), false); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + return packet; + } + + @Override + public Object getWatcher() { + Class> Entity = Util.getCraftClass("Entity"); + Class> DataWatcher = Util.getCraftClass("DataWatcher"); + + Object watcher = null; + try { + watcher = DataWatcher.getConstructor(new Class>[]{Entity}).newInstance(dragon); + Method a = Util.getMethod(DataWatcher, "a", new Class>[]{int.class, Object.class}); + + a.invoke(watcher, 5, isVisible() ? (byte) 0 : (byte) 0x20); + a.invoke(watcher, 6, (Float) health); + a.invoke(watcher, 7, (Integer) 0); + a.invoke(watcher, 8, (Byte) (byte) 0); + a.invoke(watcher, 10, name); + a.invoke(watcher, 11, (Byte) (byte) 1); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + return watcher; + } } diff --git a/src/me/confuser/barapi/nms/v1_8Fake.java b/src/me/confuser/barapi/nms/v1_8Fake.java index 180d37e..3c60f11 100644 --- a/src/me/confuser/barapi/nms/v1_8Fake.java +++ b/src/me/confuser/barapi/nms/v1_8Fake.java @@ -18,193 +18,193 @@ public class v1_8Fake extends FakeDragon { - private Object dragon; - private int id; - - public v1_8Fake(String name, Location loc) { - super(name, loc); - } - - public static boolean isUsable() { - Class> PacketPlayOutEntityTeleport = Util.getCraftClass("PacketPlayOutEntityTeleport"); - - try { - PacketPlayOutEntityTeleport - .getConstructor(new Class>[] { int.class, int.class, int.class, int.class, byte.class, byte.class, boolean.class, boolean.class }); - } catch (IllegalArgumentException e) { - return false; - } catch (SecurityException e) { - return false; - } catch (NoSuchMethodException e) { - return false; + private Object dragon; + private int id; + + public v1_8Fake(String name, Location loc) { + super(name, loc); } - return true; - } - - @Override - public Object getSpawnPacket() { - Class> Entity = Util.getCraftClass("Entity"); - Class> EntityLiving = Util.getCraftClass("EntityLiving"); - Class> EntityEnderDragon = Util.getCraftClass("EntityEnderDragon"); - Object packet = null; - try { - dragon = EntityEnderDragon.getConstructor(Util.getCraftClass("World")).newInstance(getWorld()); - - Method setLocation = Util - .getMethod(EntityEnderDragon, "setLocation", new Class>[] { double.class, double.class, double.class, float.class, float.class }); - setLocation.invoke(dragon, getX(), getY(), getZ(), getPitch(), getYaw()); - - Method setInvisible = Util.getMethod(EntityEnderDragon, "setInvisible", new Class>[] { boolean.class }); - setInvisible.invoke(dragon, true); - - Method setCustomName = Util.getMethod(EntityEnderDragon, "setCustomName", new Class>[] { String.class }); - setCustomName.invoke(dragon, name); - - Method setHealth = Util.getMethod(EntityEnderDragon, "setHealth", new Class>[] { float.class }); - setHealth.invoke(dragon, health); - - Field motX = Util.getField(Entity, "motX"); - motX.set(dragon, getXvel()); - - Field motY = Util.getField(Entity, "motY"); - motY.set(dragon, getYvel()); - - Field motZ = Util.getField(Entity, "motZ"); - motZ.set(dragon, getZvel()); - - Method getId = Util.getMethod(EntityEnderDragon, "getId", new Class>[] {}); - this.id = (Integer) getId.invoke(dragon); - - Class> PacketPlayOutSpawnEntityLiving = Util.getCraftClass("PacketPlayOutSpawnEntityLiving"); - - packet = PacketPlayOutSpawnEntityLiving.getConstructor(new Class>[] { EntityLiving }).newInstance(dragon); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); + public static boolean isUsable() { + Class> PacketPlayOutEntityTeleport = Util.getCraftClass("PacketPlayOutEntityTeleport"); + + try { + PacketPlayOutEntityTeleport + .getConstructor(new Class>[]{int.class, int.class, int.class, int.class, byte.class, byte.class, boolean.class, boolean.class}); + } catch (IllegalArgumentException e) { + return false; + } catch (SecurityException e) { + return false; + } catch (NoSuchMethodException e) { + return false; + } + + return true; } - return packet; - } - - @Override - public Object getDestroyPacket() { - Class> PacketPlayOutEntityDestroy = Util.getCraftClass("PacketPlayOutEntityDestroy"); - - Object packet = null; - try { - packet = PacketPlayOutEntityDestroy.newInstance(); - Field a = PacketPlayOutEntityDestroy.getDeclaredField("a"); - a.setAccessible(true); - a.set(packet, new int[] { id }); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); + @Override + public Object getSpawnPacket() { + Class> Entity = Util.getCraftClass("Entity"); + Class> EntityLiving = Util.getCraftClass("EntityLiving"); + Class> EntityEnderDragon = Util.getCraftClass("EntityEnderDragon"); + Object packet = null; + try { + dragon = EntityEnderDragon.getConstructor(Util.getCraftClass("World")).newInstance(getWorld()); + + Method setLocation = Util + .getMethod(EntityEnderDragon, "setLocation", new Class>[]{double.class, double.class, double.class, float.class, float.class}); + setLocation.invoke(dragon, getX(), getY(), getZ(), getPitch(), getYaw()); + + Method setInvisible = Util.getMethod(EntityEnderDragon, "setInvisible", new Class>[]{boolean.class}); + setInvisible.invoke(dragon, true); + + Method setCustomName = Util.getMethod(EntityEnderDragon, "setCustomName", new Class>[]{String.class}); + setCustomName.invoke(dragon, name); + + Method setHealth = Util.getMethod(EntityEnderDragon, "setHealth", new Class>[]{float.class}); + setHealth.invoke(dragon, health); + + Field motX = Util.getField(Entity, "motX"); + motX.set(dragon, getXvel()); + + Field motY = Util.getField(Entity, "motY"); + motY.set(dragon, getYvel()); + + Field motZ = Util.getField(Entity, "motZ"); + motZ.set(dragon, getZvel()); + + Method getId = Util.getMethod(EntityEnderDragon, "getId", new Class>[]{}); + this.id = (Integer) getId.invoke(dragon); + + Class> PacketPlayOutSpawnEntityLiving = Util.getCraftClass("PacketPlayOutSpawnEntityLiving"); + + packet = PacketPlayOutSpawnEntityLiving.getConstructor(new Class>[]{EntityLiving}).newInstance(dragon); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + return packet; } - return packet; - } - - @Override - public Object getMetaPacket(Object watcher) { - Class> DataWatcher = Util.getCraftClass("DataWatcher"); - - Class> PacketPlayOutEntityMetadata = Util.getCraftClass("PacketPlayOutEntityMetadata"); - - Object packet = null; - try { - packet = PacketPlayOutEntityMetadata.getConstructor(new Class>[] { int.class, DataWatcher, boolean.class }) - .newInstance(id, watcher, true); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); + @Override + public Object getDestroyPacket() { + Class> PacketPlayOutEntityDestroy = Util.getCraftClass("PacketPlayOutEntityDestroy"); + + Object packet = null; + try { + packet = PacketPlayOutEntityDestroy.newInstance(); + Field a = PacketPlayOutEntityDestroy.getDeclaredField("a"); + a.setAccessible(true); + a.set(packet, new int[]{id}); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } + + return packet; } - return packet; - } - - @Override - public Object getTeleportPacket(Location loc) { - Class> PacketPlayOutEntityTeleport = Util.getCraftClass("PacketPlayOutEntityTeleport"); - Object packet = null; - - try { - packet = PacketPlayOutEntityTeleport - .getConstructor(new Class>[] { int.class, int.class, int.class, int.class, byte.class, byte.class, boolean.class, boolean.class }) - .newInstance(this.id, loc.getBlockX() * 32, loc.getBlockY() * 32, loc.getBlockZ() * 32, (byte) ((int) loc - .getYaw() * 256 / 360), (byte) ((int) loc.getPitch() * 256 / 360), false, false); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); + @Override + public Object getMetaPacket(Object watcher) { + Class> DataWatcher = Util.getCraftClass("DataWatcher"); + + Class> PacketPlayOutEntityMetadata = Util.getCraftClass("PacketPlayOutEntityMetadata"); + + Object packet = null; + try { + packet = PacketPlayOutEntityMetadata.getConstructor(new Class>[]{int.class, DataWatcher, boolean.class}) + .newInstance(id, watcher, true); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + return packet; } - return packet; - } - - @Override - public Object getWatcher() { - Class> Entity = Util.getCraftClass("Entity"); - Class> DataWatcher = Util.getCraftClass("DataWatcher"); - - Object watcher = null; - try { - watcher = DataWatcher.getConstructor(new Class>[] { Entity }).newInstance(dragon); - Method a = Util.getMethod(DataWatcher, "a", new Class>[] { int.class, Object.class }); - - a.invoke(watcher, 5, isVisible() ? (byte) 0 : (byte) 0x20); - a.invoke(watcher, 6, (Float) health); - a.invoke(watcher, 7, (Integer) 0); - a.invoke(watcher, 8, (Byte) (byte) 0); - a.invoke(watcher, 10, name); - a.invoke(watcher, 11, (Byte) (byte) 1); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); + @Override + public Object getTeleportPacket(Location loc) { + Class> PacketPlayOutEntityTeleport = Util.getCraftClass("PacketPlayOutEntityTeleport"); + Object packet = null; + + try { + packet = PacketPlayOutEntityTeleport + .getConstructor(new Class>[]{int.class, int.class, int.class, int.class, byte.class, byte.class, boolean.class, boolean.class}) + .newInstance(this.id, loc.getBlockX() * 32, loc.getBlockY() * 32, loc.getBlockZ() * 32, (byte) ((int) loc + .getYaw() * 256 / 360), (byte) ((int) loc.getPitch() * 256 / 360), false, false); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + return packet; } - return watcher; - } + @Override + public Object getWatcher() { + Class> Entity = Util.getCraftClass("Entity"); + Class> DataWatcher = Util.getCraftClass("DataWatcher"); + + Object watcher = null; + try { + watcher = DataWatcher.getConstructor(new Class>[]{Entity}).newInstance(dragon); + Method a = Util.getMethod(DataWatcher, "a", new Class>[]{int.class, Object.class}); + + a.invoke(watcher, 5, isVisible() ? (byte) 0 : (byte) 0x20); + a.invoke(watcher, 6, (Float) health); + a.invoke(watcher, 7, (Integer) 0); + a.invoke(watcher, 8, (Byte) (byte) 0); + a.invoke(watcher, 10, name); + a.invoke(watcher, 11, (Byte) (byte) 1); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + return watcher; + } } diff --git a/src/me/confuser/barapi/nms/v1_9.java b/src/me/confuser/barapi/nms/v1_9.java deleted file mode 100644 index ef5a811..0000000 --- a/src/me/confuser/barapi/nms/v1_9.java +++ /dev/null @@ -1,58 +0,0 @@ -package me.confuser.barapi.nms; - -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.boss.BarColor; -import org.bukkit.boss.BarStyle; -import org.bukkit.boss.BossBar; - -/** - * This is the FakeDragon class for BarAPI. - * It is based on the code by SoThatsIt. - *
- * http://forums.bukkit.org/threads/tutorial-utilizing-the-boss-health-bar.158018/page-5#post-2053705 - * - * @author James Mortemore - */ - -public class v1_9 extends FakeDragon { - - private Object dragon; - private int id; - private BossBar bar; - - public v1_9(String name, Location loc) { - super(name, loc); - - bar = Bukkit.createBossBar(name, BarColor.PINK, BarStyle.SOLID); - } - - public BossBar getBar() { - return bar; - } - - @Override - public Object getSpawnPacket() { - return null; - } - - @Override - public Object getDestroyPacket() { - return null; - } - - @Override - public Object getMetaPacket(Object watcher) { - return null; - } - - @Override - public Object getTeleportPacket(Location loc) { - return null; - } - - @Override - public Object getWatcher() { - return null; - } -}