001    package org.bukkit.entity;
002    
003    import java.util.EnumSet;
004    import java.util.HashMap;
005    import java.util.Map;
006    
007    /**
008     * Represents a type of creature.
009     *
010     * @deprecated Use EntityType instead.
011     */
012    @Deprecated
013    public enum CreatureType {
014        // These strings MUST match the strings in nms.EntityTypes and are case sensitive.
015        CREEPER("Creeper", Creeper.class, 50),
016        SKELETON("Skeleton", Skeleton.class, 51),
017        SPIDER("Spider", Spider.class, 52),
018        GIANT("Giant", Giant.class, 53),
019        ZOMBIE("Zombie", Zombie.class, 54),
020        SLIME("Slime", Slime.class, 55),
021        GHAST("Ghast", Ghast.class, 56),
022        PIG_ZOMBIE("PigZombie", PigZombie.class, 57),
023        ENDERMAN("Enderman", Enderman.class, 58),
024        CAVE_SPIDER("CaveSpider", CaveSpider.class, 59),
025        SILVERFISH("Silverfish", Silverfish.class, 60),
026        BLAZE("Blaze", Blaze.class, 61),
027        MAGMA_CUBE("LavaSlime", MagmaCube.class, 62),
028        ENDER_DRAGON("EnderDragon", EnderDragon.class, 63),
029        PIG("Pig", Pig.class, 90),
030        SHEEP("Sheep", Sheep.class, 91),
031        COW("Cow", Cow.class, 92),
032        CHICKEN("Chicken", Chicken.class, 93),
033        SQUID("Squid", Squid.class, 94),
034        WOLF("Wolf", Wolf.class, 95),
035        MUSHROOM_COW("MushroomCow", MushroomCow.class, 96),
036        SNOWMAN("SnowMan", Snowman.class, 97),
037        VILLAGER("Villager", Villager.class, 120);
038    
039        private String name;
040        private Class<? extends Entity> clazz;
041        private short typeId;
042    
043        private static final Map<String, CreatureType> NAME_MAP = new HashMap<String, CreatureType>();
044        private static final Map<Short, CreatureType> ID_MAP = new HashMap<Short, CreatureType>();
045    
046        static {
047            for (CreatureType type : EnumSet.allOf(CreatureType.class)) {
048                NAME_MAP.put(type.name, type);
049                if (type.typeId != 0) {
050                    ID_MAP.put(type.typeId, type);
051                }
052            }
053        }
054    
055        private CreatureType(String name, Class<? extends Entity> clazz, int typeId) {
056            this.name = name;
057            this.clazz = clazz;
058            this.typeId = (short) typeId;
059        }
060    
061        public String getName() {
062            return name;
063        }
064    
065        public Class<? extends Entity> getEntityClass() {
066            return clazz;
067        }
068    
069        /**
070         *
071         * @deprecated Magic value
072         */
073        @Deprecated
074        public short getTypeId() {
075            return typeId;
076        }
077    
078        public static CreatureType fromName(String name) {
079            return NAME_MAP.get(name);
080        }
081    
082        /**
083         *
084         * @deprecated Magic value
085         */
086        @Deprecated
087        public static CreatureType fromId(int id) {
088            if (id > Short.MAX_VALUE) {
089                return null;
090            }
091            return ID_MAP.get((short) id);
092        }
093    
094        @Deprecated
095        public EntityType toEntityType() {
096            return EntityType.fromName(getName());
097        }
098    
099        public static CreatureType fromEntityType(EntityType creatureType) {
100            return fromName(creatureType.getName());
101        }
102    }