You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.6 KiB
79 lines
3.6 KiB
--- ../src-base/minecraft/cpw/mods/fml/common/registry/EntityRegistry.java |
|
+++ ../src-work/minecraft/cpw/mods/fml/common/registry/EntityRegistry.java |
|
@@ -41,6 +41,12 @@ |
|
import cpw.mods.fml.common.ModContainer; |
|
import cpw.mods.fml.common.network.internal.FMLMessage.EntitySpawnMessage; |
|
|
|
+// Cauldron start |
|
+import net.minecraftforge.common.util.EnumHelper; |
|
+import org.bukkit.craftbukkit.entity.CraftEntity; |
|
+import org.bukkit.entity.EntityType; |
|
+// Cauldron end |
|
+ |
|
public class EntityRegistry |
|
{ |
|
public class EntityRegistration |
|
@@ -118,6 +124,8 @@ |
|
private ListMultimap<ModContainer, EntityRegistration> entityRegistrations = ArrayListMultimap.create(); |
|
private Map<String,ModContainer> entityNames = Maps.newHashMap(); |
|
private BiMap<Class<? extends Entity>, EntityRegistration> entityClassRegistrations = HashBiMap.create(); |
|
+ public static Map<Class <? extends Entity>, String> entityTypeMap = Maps.newHashMap(); // Cauldron - used by CraftCustomEntity |
|
+ public static Map<String, Class <? extends Entity>> entityClassMap = Maps.newHashMap(); // Cauldron - used by CraftWorld |
|
public static EntityRegistry instance() |
|
{ |
|
return INSTANCE; |
|
@@ -147,6 +155,7 @@ |
|
public static void registerModEntity(Class<? extends Entity> entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates) |
|
{ |
|
instance().doModEntityRegistration(entityClass, entityName, id, mod, trackingRange, updateFrequency, sendsVelocityUpdates); |
|
+ registerBukkitType(entityClass, entityName); // Cauldron - register EntityType for Bukkit |
|
} |
|
|
|
@SuppressWarnings("unchecked") |
|
@@ -197,6 +206,7 @@ |
|
} |
|
id = instance().validateAndClaimId(id); |
|
EntityList.addMapping(entityClass, entityName, id); |
|
+ registerBukkitType(entityClass, entityName); // Cauldron - register EntityType for Bukkit |
|
} |
|
|
|
private int validateAndClaimId(int id) |
|
@@ -249,8 +259,38 @@ |
|
} |
|
instance().validateAndClaimId(id); |
|
EntityList.addMapping(entityClass, entityName, id, backgroundEggColour, foregroundEggColour); |
|
+ registerBukkitType(entityClass, entityName); // Cauldron - register EntityType for Bukkit |
|
} |
|
|
|
+ // Cauldron start |
|
+ private static void registerBukkitType(Class <? extends Entity > entityClass, String entityName) |
|
+ { |
|
+ ModContainer activeModContainer = Loader.instance().activeModContainer(); |
|
+ String modId = "unknown"; |
|
+ // fixup bad entity names from mods |
|
+ if (entityName.contains(".")) |
|
+ { |
|
+ if ((entityName.indexOf(".") + 1) < entityName.length()) |
|
+ entityName = entityName.substring(entityName.indexOf(".") + 1, entityName.length()); |
|
+ } |
|
+ entityName.replace("entity", ""); |
|
+ if (entityName.startsWith("ent")) |
|
+ entityName.replace("ent", ""); |
|
+ entityName = entityName.replaceAll("[^A-Za-z0-9]", ""); // remove all non-digits/alphanumeric |
|
+ if (activeModContainer != null) |
|
+ modId = activeModContainer.getModId(); |
|
+ entityName = modId + "-" + entityName; |
|
+ entityTypeMap.put(entityClass, entityName); |
|
+ entityClassMap.put(entityName, entityClass); |
|
+ } |
|
+ |
|
+ // used by CraftCustomEntity |
|
+ public static String getCustomEntityTypeName(Class <? extends Entity > entityClass) |
|
+ { |
|
+ return entityTypeMap.get(entityClass); |
|
+ } |
|
+ // Cauldron end |
|
+ |
|
public static void addSpawn(Class <? extends EntityLiving > entityClass, int weightedProb, int min, int max, EnumCreatureType typeOfCreature, BiomeGenBase... biomes) |
|
{ |
|
for (BiomeGenBase biome : biomes)
|
|
|