001 package net.minecraft.src;
002
003 import cpw.mods.fml.common.Side;
004 import cpw.mods.fml.common.asm.SideOnly;
005 import java.util.HashMap;
006 import java.util.LinkedHashMap;
007 import java.util.Map;
008
009 public class EntityList
010 {
011 /** Provides a mapping between entity classes and a string */
012 public static Map stringToClassMapping = new HashMap();
013
014 /** Provides a mapping between a string and an entity classes */
015 public static Map classToStringMapping = new HashMap();
016
017 /** provides a mapping between an entityID and an Entity Class */
018 public static Map IDtoClassMapping = new HashMap();
019
020 /** provides a mapping between an Entity Class and an entity ID */
021 private static Map classToIDMapping = new HashMap();
022
023 /** Maps entity names to their numeric identifiers */
024 private static Map stringToIDMapping = new HashMap();
025
026 /** This is a HashMap of the Creative Entity Eggs/Spawners. */
027 public static HashMap entityEggs = new LinkedHashMap();
028
029 /**
030 * adds a mapping between Entity classes and both a string representation and an ID
031 */
032 public static void addMapping(Class par0Class, String par1Str, int par2)
033 {
034 stringToClassMapping.put(par1Str, par0Class);
035 classToStringMapping.put(par0Class, par1Str);
036 IDtoClassMapping.put(Integer.valueOf(par2), par0Class);
037 classToIDMapping.put(par0Class, Integer.valueOf(par2));
038 stringToIDMapping.put(par1Str, Integer.valueOf(par2));
039 }
040
041 /**
042 * Adds a entity mapping with egg info.
043 */
044 public static void addMapping(Class par0Class, String par1Str, int par2, int par3, int par4)
045 {
046 addMapping(par0Class, par1Str, par2);
047 entityEggs.put(Integer.valueOf(par2), new EntityEggInfo(par2, par3, par4));
048 }
049
050 /**
051 * Create a new instance of an entity in the world by using the entity name.
052 */
053 public static Entity createEntityByName(String par0Str, World par1World)
054 {
055 Entity var2 = null;
056
057 try
058 {
059 Class var3 = (Class)stringToClassMapping.get(par0Str);
060
061 if (var3 != null)
062 {
063 var2 = (Entity)var3.getConstructor(new Class[] {World.class}).newInstance(new Object[] {par1World});
064 }
065 }
066 catch (Exception var4)
067 {
068 var4.printStackTrace();
069 }
070
071 return var2;
072 }
073
074 /**
075 * create a new instance of an entity from NBT store
076 */
077 public static Entity createEntityFromNBT(NBTTagCompound par0NBTTagCompound, World par1World)
078 {
079 Entity var2 = null;
080
081 try
082 {
083 Class var3 = (Class)stringToClassMapping.get(par0NBTTagCompound.getString("id"));
084
085 if (var3 != null)
086 {
087 var2 = (Entity)var3.getConstructor(new Class[] {World.class}).newInstance(new Object[] {par1World});
088 }
089 }
090 catch (Exception var4)
091 {
092 var4.printStackTrace();
093 }
094
095 if (var2 != null)
096 {
097 var2.readFromNBT(par0NBTTagCompound);
098 }
099 else
100 {
101 System.out.println("Skipping Entity with id " + par0NBTTagCompound.getString("id"));
102 }
103
104 return var2;
105 }
106
107 /**
108 * Create a new instance of an entity in the world by using an entity ID.
109 */
110 public static Entity createEntityByID(int par0, World par1World)
111 {
112 Entity var2 = null;
113
114 try
115 {
116 Class var3 = (Class)IDtoClassMapping.get(Integer.valueOf(par0));
117
118 if (var3 != null)
119 {
120 var2 = (Entity)var3.getConstructor(new Class[] {World.class}).newInstance(new Object[] {par1World});
121 }
122 }
123 catch (Exception var4)
124 {
125 var4.printStackTrace();
126 }
127
128 if (var2 == null)
129 {
130 System.out.println("Skipping Entity with id " + par0);
131 }
132
133 return var2;
134 }
135
136 /**
137 * gets the entityID of a specific entity
138 */
139 public static int getEntityID(Entity par0Entity)
140 {
141 Class var1 = par0Entity.getClass();
142 return classToIDMapping.containsKey(var1) ? ((Integer)classToIDMapping.get(var1)).intValue() : 0;
143 }
144
145 /**
146 * Gets the string representation of a specific entity.
147 */
148 public static String getEntityString(Entity par0Entity)
149 {
150 return (String)classToStringMapping.get(par0Entity.getClass());
151 }
152
153 @SideOnly(Side.CLIENT)
154
155 /**
156 * Finds the class using IDtoClassMapping and classToStringMapping
157 */
158 public static String getStringFromID(int par0)
159 {
160 Class var1 = (Class)IDtoClassMapping.get(Integer.valueOf(par0));
161 return var1 != null ? (String)classToStringMapping.get(var1) : null;
162 }
163
164 static
165 {
166 addMapping(EntityItem.class, "Item", 1);
167 addMapping(EntityXPOrb.class, "XPOrb", 2);
168 addMapping(EntityPainting.class, "Painting", 9);
169 addMapping(EntityArrow.class, "Arrow", 10);
170 addMapping(EntitySnowball.class, "Snowball", 11);
171 addMapping(EntityFireball.class, "Fireball", 12);
172 addMapping(EntitySmallFireball.class, "SmallFireball", 13);
173 addMapping(EntityEnderPearl.class, "ThrownEnderpearl", 14);
174 addMapping(EntityEnderEye.class, "EyeOfEnderSignal", 15);
175 addMapping(EntityPotion.class, "ThrownPotion", 16);
176 addMapping(EntityExpBottle.class, "ThrownExpBottle", 17);
177 addMapping(EntityTNTPrimed.class, "PrimedTnt", 20);
178 addMapping(EntityFallingSand.class, "FallingSand", 21);
179 addMapping(EntityMinecart.class, "Minecart", 40);
180 addMapping(EntityBoat.class, "Boat", 41);
181 addMapping(EntityLiving.class, "Mob", 48);
182 addMapping(EntityMob.class, "Monster", 49);
183 addMapping(EntityCreeper.class, "Creeper", 50, 894731, 0);
184 addMapping(EntitySkeleton.class, "Skeleton", 51, 12698049, 4802889);
185 addMapping(EntitySpider.class, "Spider", 52, 3419431, 11013646);
186 addMapping(EntityGiantZombie.class, "Giant", 53);
187 addMapping(EntityZombie.class, "Zombie", 54, 44975, 7969893);
188 addMapping(EntitySlime.class, "Slime", 55, 5349438, 8306542);
189 addMapping(EntityGhast.class, "Ghast", 56, 16382457, 12369084);
190 addMapping(EntityPigZombie.class, "PigZombie", 57, 15373203, 5009705);
191 addMapping(EntityEnderman.class, "Enderman", 58, 1447446, 0);
192 addMapping(EntityCaveSpider.class, "CaveSpider", 59, 803406, 11013646);
193 addMapping(EntitySilverfish.class, "Silverfish", 60, 7237230, 3158064);
194 addMapping(EntityBlaze.class, "Blaze", 61, 16167425, 16775294);
195 addMapping(EntityMagmaCube.class, "LavaSlime", 62, 3407872, 16579584);
196 addMapping(EntityDragon.class, "EnderDragon", 63);
197 addMapping(EntityPig.class, "Pig", 90, 15771042, 14377823);
198 addMapping(EntitySheep.class, "Sheep", 91, 15198183, 16758197);
199 addMapping(EntityCow.class, "Cow", 92, 4470310, 10592673);
200 addMapping(EntityChicken.class, "Chicken", 93, 10592673, 16711680);
201 addMapping(EntitySquid.class, "Squid", 94, 2243405, 7375001);
202 addMapping(EntityWolf.class, "Wolf", 95, 14144467, 13545366);
203 addMapping(EntityMooshroom.class, "MushroomCow", 96, 10489616, 12040119);
204 addMapping(EntitySnowman.class, "SnowMan", 97);
205 addMapping(EntityOcelot.class, "Ozelot", 98, 15720061, 5653556);
206 addMapping(EntityIronGolem.class, "VillagerGolem", 99);
207 addMapping(EntityVillager.class, "Villager", 120, 5651507, 12422002);
208 addMapping(EntityEnderCrystal.class, "EnderCrystal", 200);
209 }
210 }