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 }