Added method to get the disguisetype from a entity, including horses, zombie villager and wither skeleton
This commit is contained in:
		| @@ -1,6 +1,9 @@ | ||||
| package me.libraryaddict.disguise.disguisetypes; | ||||
|  | ||||
| import java.lang.reflect.Method; | ||||
|  | ||||
| import org.apache.commons.lang.StringUtils; | ||||
| import org.bukkit.entity.Entity; | ||||
| import org.bukkit.entity.EntityType; | ||||
|  | ||||
| public enum DisguiseType { | ||||
| @@ -166,7 +169,46 @@ public enum DisguiseType { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static DisguiseType getType(org.bukkit.entity.EntityType entityType) { | ||||
|     public static DisguiseType getType(Entity entity) { | ||||
|         DisguiseType disguiseType = getType(entity.getType()); | ||||
|         switch (disguiseType) { | ||||
|         case ZOMBIE: | ||||
|             try { | ||||
|                 Method isVillager = entity.getClass().getMethod("isVillager"); | ||||
|                 if ((Boolean) isVillager.invoke(entity)) { | ||||
|                     disguiseType = DisguiseType.ZOMBIE_VILLAGER; | ||||
|                 } | ||||
|             } catch (NoSuchMethodException ex) { | ||||
|             } catch (Exception ex) { | ||||
|                 ex.printStackTrace(); | ||||
|             } | ||||
|             break; | ||||
|         case HORSE: | ||||
|             try { | ||||
|                 Object variant = entity.getClass().getMethod("getVariant").invoke(entity); | ||||
|                 disguiseType = DisguiseType.valueOf(((Enum) variant).name()); | ||||
|             } catch (Exception ex) { | ||||
|                 ex.printStackTrace(); | ||||
|             } | ||||
|             break; | ||||
|         case SKELETON: | ||||
|             try { | ||||
|                 Object type = entity.getClass().getMethod("getSkeletonType").invoke(entity); | ||||
|                 if (((Enum) type).name().equals("WITHER")) { | ||||
|                     disguiseType = DisguiseType.WITHER_SKELETON; | ||||
|                 } | ||||
|             } catch (NoSuchMethodException ex) { | ||||
|             } catch (Exception ex) { | ||||
|                 ex.printStackTrace(); | ||||
|             } | ||||
|             break; | ||||
|         default: | ||||
|             break; | ||||
|         } | ||||
|         return disguiseType; | ||||
|     } | ||||
|  | ||||
|     public static DisguiseType getType(EntityType entityType) { | ||||
|         try { | ||||
|             return DisguiseType.valueOf(entityType.name()); | ||||
|         } catch (Throwable ex) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user