summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/bukkit/entity/CreatureType.java
blob: 127d4756f992754683f0193fc99d18d778c2b081 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package org.bukkit.entity;

import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;

/**
 * Represents a type of creature.
 *
 * @deprecated Use EntityType instead.
 */
@Deprecated
public enum CreatureType {
    // These strings MUST match the strings in nms.EntityTypes and are case sensitive.
    CREEPER("Creeper", Creeper.class, 50),
    SKELETON("Skeleton", Skeleton.class, 51),
    SPIDER("Spider", Spider.class, 52),
    GIANT("Giant", Giant.class, 53),
    ZOMBIE("Zombie", Zombie.class, 54),
    SLIME("Slime", Slime.class, 55),
    GHAST("Ghast", Ghast.class, 56),
    PIG_ZOMBIE("PigZombie", PigZombie.class, 57),
    ENDERMAN("Enderman", Enderman.class, 58),
    CAVE_SPIDER("CaveSpider", CaveSpider.class, 59),
    SILVERFISH("Silverfish", Silverfish.class, 60),
    BLAZE("Blaze", Blaze.class, 61),
    MAGMA_CUBE("LavaSlime", MagmaCube.class, 62),
    ENDER_DRAGON("EnderDragon", EnderDragon.class, 63),
    ENDERMITE("Endermite", Endermite.class, 67),
    GUARDIAN("Guardian", Guardian.class, 68),
    PIG("Pig", Pig.class, 90),
    SHEEP("Sheep", Sheep.class, 91),
    COW("Cow", Cow.class, 92),
    CHICKEN("Chicken", Chicken.class, 93),
    SQUID("Squid", Squid.class, 94),
    WOLF("Wolf", Wolf.class, 95),
    MUSHROOM_COW("MushroomCow", MushroomCow.class, 96),
    SNOWMAN("SnowMan", Snowman.class, 97),
    RABBIT("Rabbit", Rabbit.class, 101),
    VILLAGER("Villager", Villager.class, 120);

    private String name;
    private Class<? extends Entity> clazz;
    private short typeId;

    private static final Map<String, CreatureType> NAME_MAP = new HashMap<String, CreatureType>();
    private static final Map<Short, CreatureType> ID_MAP = new HashMap<Short, CreatureType>();

    static {
        for (CreatureType type : EnumSet.allOf(CreatureType.class)) {
            NAME_MAP.put(type.name, type);
            if (type.typeId != 0) {
                ID_MAP.put(type.typeId, type);
            }
        }
    }

    private CreatureType(String name, Class<? extends Entity> clazz, int typeId) {
        this.name = name;
        this.clazz = clazz;
        this.typeId = (short) typeId;
    }

    public String getName() {
        return name;
    }

    public Class<? extends Entity> getEntityClass() {
        return clazz;
    }

    /**
     *
     * @return the raw type id
     * @deprecated Magic value
     */
    @Deprecated
    public short getTypeId() {
        return typeId;
    }

    public static CreatureType fromName(String name) {
        return NAME_MAP.get(name);
    }

    /**
     *
     * @param id the raw type id
     * @return the matching CreatureType or null
     * @deprecated Magic value
     */
    @Deprecated
    public static CreatureType fromId(int id) {
        if (id > Short.MAX_VALUE) {
            return null;
        }
        return ID_MAP.get((short) id);
    }

    @Deprecated
    public EntityType toEntityType() {
        return EntityType.fromName(getName());
    }

    public static CreatureType fromEntityType(EntityType creatureType) {
        return fromName(creatureType.getName());
    }
}