Disguises should now appear at the right location for entity sizes. But sometimes it disappears
This commit is contained in:
		| @@ -2,6 +2,8 @@ package me.libraryaddict.disguise.DisguiseTypes; | ||||
|  | ||||
| import java.util.HashMap; | ||||
|  | ||||
| import net.minecraft.server.v1_6_R2.EnumEntitySize; | ||||
|  | ||||
| public class Values { | ||||
|  | ||||
|     private static HashMap<DisguiseType, Values> values = new HashMap<DisguiseType, Values>(); | ||||
| @@ -48,14 +50,20 @@ public class Values { | ||||
|     private HashMap<String, Double> attributesValues = new HashMap<String, Double>(); | ||||
|  | ||||
|     private Class declared; | ||||
|     private EnumEntitySize enumEntitySize; | ||||
|  | ||||
|     private HashMap<Integer, Object> metaValues = new HashMap<Integer, Object>(); | ||||
|  | ||||
|     public Values(DisguiseType type, Class classType) { | ||||
|     public Values(DisguiseType type, Class classType, EnumEntitySize entitySize) { | ||||
|         values.put(type, this); | ||||
|         enumEntitySize = entitySize; | ||||
|         declared = classType; | ||||
|     } | ||||
|  | ||||
|     public EnumEntitySize getEntitySize() { | ||||
|         return enumEntitySize; | ||||
|     } | ||||
|  | ||||
|     public HashMap<String, Double> getAttributesValues() { | ||||
|         return attributesValues; | ||||
|     } | ||||
|   | ||||
| @@ -26,6 +26,7 @@ import net.minecraft.server.v1_6_R2.DataWatcher; | ||||
| import net.minecraft.server.v1_6_R2.EntityHuman; | ||||
| import net.minecraft.server.v1_6_R2.EntityLiving; | ||||
| import net.minecraft.server.v1_6_R2.EnumArt; | ||||
| import net.minecraft.server.v1_6_R2.EnumEntitySize; | ||||
| import net.minecraft.server.v1_6_R2.GenericAttributes; | ||||
| import net.minecraft.server.v1_6_R2.ItemStack; | ||||
| import net.minecraft.server.v1_6_R2.MathHelper; | ||||
| @@ -158,6 +159,7 @@ public class LibsDisguises extends JavaPlugin { | ||||
|         Location loc = disguisedEntity.getLocation(); | ||||
|         byte yaw = getYaw(disguise.getType(), DisguiseType.getType(disguise.getEntity().getType()), | ||||
|                 (byte) (int) (loc.getYaw() * 256.0F / 360.0F)); | ||||
|         EnumEntitySize entitySize = Values.getValues(disguise.getType()).getEntitySize(); | ||||
|  | ||||
|         if (disguise.getType() == DisguiseType.EXPERIENCE_ORB) { | ||||
|  | ||||
| @@ -186,9 +188,9 @@ public class LibsDisguises extends JavaPlugin { | ||||
|             spawnPackets[1] = manager.createPacket(Packets.Server.ENTITY_TELEPORT); | ||||
|             mods = spawnPackets[1].getModifier(); | ||||
|             mods.write(0, disguisedEntity.getEntityId()); | ||||
|             mods.write(1, (int) Math.floor(loc.getX() * 32D)); | ||||
|             mods.write(1, (int) Math.floor(entitySize.a(loc.getX()) * 32D)); | ||||
|             mods.write(2, (int) Math.floor(loc.getY() * 32D)); | ||||
|             mods.write(3, (int) Math.floor(loc.getZ() * 32D)); | ||||
|             mods.write(3, (int) Math.floor(entitySize.a(loc.getZ()) * 32D)); | ||||
|             mods.write(4, yaw); | ||||
|             mods.write(5, (byte) (int) (loc.getPitch() * 256.0F / 360.0F)); | ||||
|  | ||||
| @@ -235,9 +237,9 @@ public class LibsDisguises extends JavaPlugin { | ||||
|                 d3 = d1; | ||||
|             if (d4 > d1) | ||||
|                 d4 = d1; | ||||
|             mods.write(2, nmsEntity.at.a(loc.getX())); | ||||
|             mods.write(2, entitySize.a(loc.getX())); | ||||
|             mods.write(3, (int) Math.floor(loc.getY() * 32D)); | ||||
|             mods.write(4, nmsEntity.at.a(loc.getZ())); | ||||
|             mods.write(4, entitySize.a(loc.getZ())); | ||||
|             mods.write(5, (int) (d2 * 8000.0D)); | ||||
|             mods.write(6, (int) (d3 * 8000.0D)); | ||||
|             mods.write(7, (int) (d4 * 8000.0D)); | ||||
| @@ -509,7 +511,7 @@ public class LibsDisguises extends JavaPlugin { | ||||
|                     entityClass = Class.forName("net.minecraft.server.v1_6_R2.Entity" + name); | ||||
|                     entity = (net.minecraft.server.v1_6_R2.Entity) entityClass.getConstructor(World.class).newInstance(world); | ||||
|                 } | ||||
|                 Values value = new Values(disguiseType, entityClass); | ||||
|                 Values value = new Values(disguiseType, entityClass, entity.at); | ||||
|                 List<WatchableObject> watchers = entity.getDataWatcher().c(); | ||||
|                 for (WatchableObject watch : watchers) | ||||
|                     value.setMetaValue(watch.a(), watch.b()); | ||||
| @@ -632,6 +634,12 @@ public class LibsDisguises extends JavaPlugin { | ||||
|                     StructureModifier<Object> mods = packets[0].getModifier(); | ||||
|                     byte value = (Byte) mods.read(4); | ||||
|                     mods.write(4, getYaw(disguise.getType(), DisguiseType.getType(entity.getType()), value)); | ||||
|                     if (sentPacket.getID() == Packets.Server.ENTITY_TELEPORT) { | ||||
|                         Location loc = entity.getLocation(); | ||||
|                         EnumEntitySize entitySize = Values.getValues(disguise.getType()).getEntitySize(); | ||||
|                         mods.write(1, (int) Math.floor(entitySize.a(loc.getX()) * 32D)); | ||||
|                         mods.write(3, (int) Math.floor(entitySize.a(loc.getZ()) * 32D)); | ||||
|                     } | ||||
|                     break; | ||||
|                 } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user