Add method to disguise next entity. Use entity ID's not entitys.
This commit is contained in:
		| @@ -59,7 +59,7 @@ import com.comphenix.protocol.reflect.StructureModifier; | |||||||
|  |  | ||||||
| public class DisguiseAPI { | public class DisguiseAPI { | ||||||
|  |  | ||||||
|     private static HashMap<Entity, Disguise> disguises = new HashMap<Entity, Disguise>(); |     private static HashMap<Integer, Disguise> disguises = new HashMap<Integer, Disguise>(); | ||||||
|     private static boolean hearSelfDisguise; |     private static boolean hearSelfDisguise; | ||||||
|     private static LibsDisguises libsDisguises; |     private static LibsDisguises libsDisguises; | ||||||
|     private static PacketListener packetListener; |     private static PacketListener packetListener; | ||||||
| @@ -69,19 +69,6 @@ public class DisguiseAPI { | |||||||
|     private static boolean viewDisguises; |     private static boolean viewDisguises; | ||||||
|     private static PacketListener viewDisguisesListener; |     private static PacketListener viewDisguisesListener; | ||||||
|  |  | ||||||
|     private synchronized static Disguise access(Entity entity, Disguise... args) { |  | ||||||
|         if (args.length == 0) { |  | ||||||
|             if (disguises.containsKey(entity)) |  | ||||||
|                 return disguises.get(entity); |  | ||||||
|             return null; |  | ||||||
|         } |  | ||||||
|         if (args[0] == null) |  | ||||||
|             disguises.remove(entity); |  | ||||||
|         else |  | ||||||
|             disguises.put(entity, args[0]); |  | ||||||
|         return null; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public static boolean canHearSelfDisguise() { |     public static boolean canHearSelfDisguise() { | ||||||
|         return hearSelfDisguise; |         return hearSelfDisguise; | ||||||
|     } |     } | ||||||
| @@ -105,17 +92,30 @@ public class DisguiseAPI { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (disguise.getEntity() != entity) { |         if (disguise.getEntity() != entity) { | ||||||
|             if (disguise.getWatcher() != null) { |             if (disguise.getEntity() != null) { | ||||||
|                 disguise = disguise.clone(); |                 disguise = disguise.clone(); | ||||||
|             } |             } | ||||||
|             disguise.constructWatcher(entity); |             disguise.setEntity(entity); | ||||||
|         } |         } | ||||||
|         put(entity, disguise); |         disguises.put(entity.getEntityId(), disguise); | ||||||
|         refresh(entity); |         refresh(entity); | ||||||
|         if (entity instanceof Player) |         if (entity instanceof Player) | ||||||
|             setupPlayer((Player) entity); |             setupPlayer((Player) entity); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public static void disguiseNextEntity(Disguise disguise) { | ||||||
|  |         if (disguise == null) | ||||||
|  |             return; | ||||||
|  |         try { | ||||||
|  |             Field field = net.minecraft.server.v1_6_R2.Entity.class.getDeclaredField("entityCount"); | ||||||
|  |             field.setAccessible(true); | ||||||
|  |             int id = field.getInt(null); | ||||||
|  |             disguises.put(id, disguise); | ||||||
|  |         } catch (Exception ex) { | ||||||
|  |             ex.printStackTrace(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public static void enableSounds(boolean isSoundsEnabled) { |     public static void enableSounds(boolean isSoundsEnabled) { | ||||||
|         if (soundsEnabled != isSoundsEnabled) { |         if (soundsEnabled != isSoundsEnabled) { | ||||||
|             soundsEnabled = isSoundsEnabled; |             soundsEnabled = isSoundsEnabled; | ||||||
| @@ -127,21 +127,17 @@ public class DisguiseAPI { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private static Disguise get(Entity obj) { |  | ||||||
|         return access(obj); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param Disguiser |      * @param Disguiser | ||||||
|      * @return Disguise |      * @return Disguise | ||||||
|      */ |      */ | ||||||
|     public static Disguise getDisguise(Entity disguiser) { |     public static Disguise getDisguise(Entity disguiser) { | ||||||
|         return get(disguiser); |         return disguises.get(disguiser.getEntityId()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Deprecated |     @Deprecated | ||||||
|     public static Disguise getDisguise(Object disguiser) { |     public static Disguise getDisguise(Object disguiser) { | ||||||
|         return get((Entity) disguiser); |         return getDisguise((Entity) disguiser); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static int getFakeDisguise(int id) { |     public static int getFakeDisguise(int id) { | ||||||
| @@ -403,22 +399,18 @@ public class DisguiseAPI { | |||||||
|      * @return boolean - If the disguiser is disguised |      * @return boolean - If the disguiser is disguised | ||||||
|      */ |      */ | ||||||
|     public static boolean isDisguised(Entity disguiser) { |     public static boolean isDisguised(Entity disguiser) { | ||||||
|         return get(disguiser) != null; |         return getDisguise(disguiser) != null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Deprecated |     @Deprecated | ||||||
|     public static boolean isDisguised(Object disguiser) { |     public static boolean isDisguised(Object disguiser) { | ||||||
|         return get((Entity) disguiser) != null; |         return getDisguise((Entity) disguiser) != null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static boolean isVelocitySent() { |     public static boolean isVelocitySent() { | ||||||
|         return sendVelocity; |         return sendVelocity; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private static void put(Entity obj, Disguise disguise) { |  | ||||||
|         access(obj, disguise); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param Resends |      * @param Resends | ||||||
|      *            the entity to all the watching players, which is where the magic begins |      *            the entity to all the watching players, which is where the magic begins | ||||||
| @@ -611,7 +603,7 @@ public class DisguiseAPI { | |||||||
|         if (event.isCancelled()) |         if (event.isCancelled()) | ||||||
|             return; |             return; | ||||||
|         disguise.getScheduler().cancel(); |         disguise.getScheduler().cancel(); | ||||||
|         put(entity, null); |         disguises.remove(entity.getEntityId()); | ||||||
|         if (entity.isValid()) { |         if (entity.isValid()) { | ||||||
|             refresh(entity); |             refresh(entity); | ||||||
|         } |         } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user