///<summary> /// Returns a list of creatures of the specified type that can spawn at the given location. ///</summary> public List <SpawnListEntry> GetPossibleCreatures(CreatureType par1EnumCreatureType, int par2, int par3, int par4) { BiomeGenBase biomegenbase = worldObj.GetBiomeGenForCoords(par2, par4); if (biomegenbase == null) { return(null); } else { return(biomegenbase.GetSpawnableList(par1EnumCreatureType)); } }
///<summary> /// Returns a list of creatures of the specified type that can spawn at the given location. ///</summary> public List <SpawnListEntry> GetPossibleCreatures(CreatureType par1EnumCreatureType, int par2, int par3, int par4) { if (par1EnumCreatureType == CreatureType.Monster && GenNetherBridge.Func_40483_a(par2, par3, par4)) { return(GenNetherBridge.GetSpawnList()); } BiomeGenBase biomegenbase = worldObj.GetBiomeGenForCoords(par2, par4); if (biomegenbase == null) { return(null); } else { return(biomegenbase.GetSpawnableList(par1EnumCreatureType)); } }
/// <summary> /// Called during chunk generation to spawn initial creatures. /// </summary> public static void PerformWorldGenSpawning(World par0World, BiomeGenBase par1BiomeGenBase, int par2, int par3, int par4, int par5, Random par6Random) { List <SpawnListEntry> list = par1BiomeGenBase.GetSpawnableList(CreatureType.Creature); if (list.Count == 0) { return; } while (par6Random.NextDouble() < par1BiomeGenBase.GetSpawningChance()) { SpawnListEntry spawnlistentry = (SpawnListEntry)WeightedRandom.GetRandomItem(par0World.Rand, list); int i = spawnlistentry.MinGroupCount + par6Random.Next((1 + spawnlistentry.MaxGroupCount) - spawnlistentry.MinGroupCount); int j = par2 + par6Random.Next(par4); int k = par3 + par6Random.Next(par5); int l = j; int i1 = k; int j1 = 0; while (j1 < i) { bool flag = false; for (int k1 = 0; !flag && k1 < 4; k1++) { int l1 = par0World.GetTopSolidOrLiquidBlock(j, k); if (CanCreatureTypeSpawnAtLocation(CreatureType.Creature, par0World, j, l1, k)) { float f = (float)j + 0.5F; float f1 = l1; float f2 = (float)k + 0.5F; EntityLiving entityliving; try { entityliving = (EntityLiving)Activator.CreateInstance(spawnlistentry.EntityClass, new object[] { par0World }); } catch (Exception exception) { Console.WriteLine(exception.ToString()); Console.Write(exception.StackTrace); continue; } entityliving.SetLocationAndAngles(f, f1, f2, (float)par6Random.NextDouble() * 360F, 0.0F); par0World.SpawnEntityInWorld(entityliving); CreatureSpecificInit(entityliving, par0World, f, f1, f2); flag = true; } j += par6Random.Next(5) - par6Random.Next(5); for (k += par6Random.Next(5) - par6Random.Next(5); j < par2 || j >= par2 + par4 || k < par3 || k >= par3 + par4; k = (i1 + par6Random.Next(5)) - par6Random.Next(5)) { j = (l + par6Random.Next(5)) - par6Random.Next(5); } } j1++; } } }