Mobs don't spawn
This commit is contained in:
parent
a53d1f808f
commit
44ae27f469
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -135,18 +135,18 @@ public abstract class BiomeGenBase
|
||||||
this.biomeID = par1;
|
this.biomeID = par1;
|
||||||
biomeList[par1] = this;
|
biomeList[par1] = this;
|
||||||
this.theBiomeDecorator = this.createBiomeDecorator();
|
this.theBiomeDecorator = this.createBiomeDecorator();
|
||||||
this.spawnableCreatureList.add(new SpawnListEntry(EntitySheep.class, 12, 4, 4));
|
this.spawnableCreatureList.add(new SpawnListEntry((w) -> new EntitySheep(w), 12, 4, 4));
|
||||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityPig.class, 10, 4, 4));
|
this.spawnableCreatureList.add(new SpawnListEntry((w) -> new EntityPig(w), 10, 4, 4));
|
||||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityChicken.class, 10, 4, 4));
|
this.spawnableCreatureList.add(new SpawnListEntry((w) -> new EntityChicken(w), 10, 4, 4));
|
||||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityCow.class, 8, 4, 4));
|
this.spawnableCreatureList.add(new SpawnListEntry((w) -> new EntityCow(w), 8, 4, 4));
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntitySpider.class, 10, 4, 4));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntitySpider(w), 10, 4, 4));
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityZombie.class, 10, 4, 4));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntityZombie(w), 10, 4, 4));
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 10, 4, 4));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntitySkeleton(w), 10, 4, 4));
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityCreeper.class, 10, 4, 4));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntityCreeper(w), 10, 4, 4));
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntitySlime.class, 10, 4, 4));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntitySlime(w), 10, 4, 4));
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityEnderman.class, 1, 1, 4));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntityEnderman(w), 1, 1, 4));
|
||||||
this.spawnableWaterCreatureList.add(new SpawnListEntry(EntitySquid.class, 10, 4, 4));
|
this.spawnableWaterCreatureList.add(new SpawnListEntry((w) -> new EntitySquid(w), 10, 4, 4));
|
||||||
this.spawnableCaveCreatureList.add(new SpawnListEntry(EntityBat.class, 10, 8, 8));
|
this.spawnableCaveCreatureList.add(new SpawnListEntry((w) -> new EntityBat(w), 10, 8, 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -9,7 +9,7 @@ public class BiomeGenEnd extends BiomeGenBase
|
||||||
this.spawnableCreatureList.clear();
|
this.spawnableCreatureList.clear();
|
||||||
this.spawnableWaterCreatureList.clear();
|
this.spawnableWaterCreatureList.clear();
|
||||||
this.spawnableCaveCreatureList.clear();
|
this.spawnableCaveCreatureList.clear();
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityEnderman.class, 10, 4, 4));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntityEnderman(w), 10, 4, 4));
|
||||||
this.topBlock = (byte)Block.dirt.blockID;
|
this.topBlock = (byte)Block.dirt.blockID;
|
||||||
this.fillerBlock = (byte)Block.dirt.blockID;
|
this.fillerBlock = (byte)Block.dirt.blockID;
|
||||||
this.theBiomeDecorator = new BiomeEndDecorator(this);
|
this.theBiomeDecorator = new BiomeEndDecorator(this);
|
||||||
|
|
|
@ -7,7 +7,7 @@ public class BiomeGenForest extends BiomeGenBase
|
||||||
public BiomeGenForest(int par1)
|
public BiomeGenForest(int par1)
|
||||||
{
|
{
|
||||||
super(par1);
|
super(par1);
|
||||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 5, 4, 4));
|
this.spawnableCreatureList.add(new SpawnListEntry((w) -> new EntityWolf(w), 5, 4, 4));
|
||||||
this.theBiomeDecorator.treesPerChunk = 10;
|
this.theBiomeDecorator.treesPerChunk = 10;
|
||||||
this.theBiomeDecorator.grassPerChunk = 2;
|
this.theBiomeDecorator.grassPerChunk = 2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,8 @@ public class BiomeGenHell extends BiomeGenBase
|
||||||
this.spawnableCreatureList.clear();
|
this.spawnableCreatureList.clear();
|
||||||
this.spawnableWaterCreatureList.clear();
|
this.spawnableWaterCreatureList.clear();
|
||||||
this.spawnableCaveCreatureList.clear();
|
this.spawnableCaveCreatureList.clear();
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityGhast.class, 50, 4, 4));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntityGhast(w), 50, 4, 4));
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityPigZombie.class, 100, 4, 4));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntityPigZombie(w), 100, 4, 4));
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityMagmaCube.class, 1, 4, 4));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntityMagmaCube(w), 1, 4, 4));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,8 @@ public class BiomeGenJungle extends BiomeGenBase
|
||||||
this.theBiomeDecorator.treesPerChunk = 50;
|
this.theBiomeDecorator.treesPerChunk = 50;
|
||||||
this.theBiomeDecorator.grassPerChunk = 25;
|
this.theBiomeDecorator.grassPerChunk = 25;
|
||||||
this.theBiomeDecorator.flowersPerChunk = 4;
|
this.theBiomeDecorator.flowersPerChunk = 4;
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityOcelot.class, 2, 1, 1));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntityOcelot(w), 2, 1, 1));
|
||||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityChicken.class, 10, 4, 4));
|
this.spawnableCreatureList.add(new SpawnListEntry((w) -> new EntityChicken(w), 10, 4, 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -14,6 +14,6 @@ public class BiomeGenMushroomIsland extends BiomeGenBase
|
||||||
this.spawnableMonsterList.clear();
|
this.spawnableMonsterList.clear();
|
||||||
this.spawnableCreatureList.clear();
|
this.spawnableCreatureList.clear();
|
||||||
this.spawnableWaterCreatureList.clear();
|
this.spawnableWaterCreatureList.clear();
|
||||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityMooshroom.class, 8, 4, 8));
|
this.spawnableCreatureList.add(new SpawnListEntry((w) -> new EntityMooshroom(w), 8, 4, 8));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ public class BiomeGenPlains extends BiomeGenBase
|
||||||
protected BiomeGenPlains(int par1)
|
protected BiomeGenPlains(int par1)
|
||||||
{
|
{
|
||||||
super(par1);
|
super(par1);
|
||||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityHorse.class, 5, 2, 6));
|
this.spawnableCreatureList.add(new SpawnListEntry((w) -> new EntityHorse(w), 5, 2, 6));
|
||||||
this.theBiomeDecorator.treesPerChunk = -999;
|
this.theBiomeDecorator.treesPerChunk = -999;
|
||||||
this.theBiomeDecorator.flowersPerChunk = 4;
|
this.theBiomeDecorator.flowersPerChunk = 4;
|
||||||
this.theBiomeDecorator.grassPerChunk = 10;
|
this.theBiomeDecorator.grassPerChunk = 10;
|
||||||
|
|
|
@ -15,7 +15,7 @@ public class BiomeGenSwamp extends BiomeGenBase
|
||||||
this.theBiomeDecorator.clayPerChunk = 1;
|
this.theBiomeDecorator.clayPerChunk = 1;
|
||||||
this.theBiomeDecorator.waterlilyPerChunk = 4;
|
this.theBiomeDecorator.waterlilyPerChunk = 4;
|
||||||
this.waterColorMultiplier = 14745518;
|
this.waterColorMultiplier = 14745518;
|
||||||
this.spawnableMonsterList.add(new SpawnListEntry(EntitySlime.class, 1, 1, 1));
|
this.spawnableMonsterList.add(new SpawnListEntry((w) -> new EntitySlime(w), 1, 1, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -7,7 +7,7 @@ public class BiomeGenTaiga extends BiomeGenBase
|
||||||
public BiomeGenTaiga(int par1)
|
public BiomeGenTaiga(int par1)
|
||||||
{
|
{
|
||||||
super(par1);
|
super(par1);
|
||||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 8, 4, 4));
|
this.spawnableCreatureList.add(new SpawnListEntry((w) -> new EntityWolf(w), 8, 4, 4));
|
||||||
this.theBiomeDecorator.treesPerChunk = 10;
|
this.theBiomeDecorator.treesPerChunk = 10;
|
||||||
this.theBiomeDecorator.grassPerChunk = 1;
|
this.theBiomeDecorator.grassPerChunk = 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -516,7 +516,7 @@ public class ChunkProviderGenerate implements IChunkProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
var6.decorate(this.worldObj, this.rand, var4, var5);
|
var6.decorate(this.worldObj, this.rand, var4, var5);
|
||||||
//SpawnerAnimals.performWorldGenSpawning(this.worldObj, var6, var4 + 8, var5 + 8, 16, 16, this.rand); // problem, IMPORTANT!!!
|
SpawnerAnimals.performWorldGenSpawning(this.worldObj, var6, var4 + 8, var5 + 8, 16, 16, this.rand);
|
||||||
var4 += 8;
|
var4 += 8;
|
||||||
var5 += 8;
|
var5 += 8;
|
||||||
|
|
||||||
|
|
|
@ -9,10 +9,10 @@ public class MapGenNetherBridge extends MapGenStructure
|
||||||
|
|
||||||
public MapGenNetherBridge()
|
public MapGenNetherBridge()
|
||||||
{
|
{
|
||||||
this.spawnList.add(new SpawnListEntry(EntityBlaze.class, 10, 2, 3));
|
this.spawnList.add(new SpawnListEntry((w) -> new EntityBlaze(w), 10, 2, 3));
|
||||||
this.spawnList.add(new SpawnListEntry(EntityPigZombie.class, 5, 4, 4));
|
this.spawnList.add(new SpawnListEntry((w) -> new EntityPigZombie(w), 5, 4, 4));
|
||||||
this.spawnList.add(new SpawnListEntry(EntitySkeleton.class, 10, 4, 4));
|
this.spawnList.add(new SpawnListEntry((w) -> new EntitySkeleton(w), 10, 4, 4));
|
||||||
this.spawnList.add(new SpawnListEntry(EntityMagmaCube.class, 3, 4, 4));
|
this.spawnList.add(new SpawnListEntry((w) -> new EntityMagmaCube(w), 3, 4, 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String func_143025_a()
|
public String func_143025_a()
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class MapGenScatteredFeature extends MapGenStructure
|
||||||
this.scatteredFeatureSpawnList = new ArrayList();
|
this.scatteredFeatureSpawnList = new ArrayList();
|
||||||
this.maxDistanceBetweenScatteredFeatures = 32;
|
this.maxDistanceBetweenScatteredFeatures = 32;
|
||||||
this.minDistanceBetweenScatteredFeatures = 8;
|
this.minDistanceBetweenScatteredFeatures = 8;
|
||||||
this.scatteredFeatureSpawnList.add(new SpawnListEntry(EntityWitch.class, 1, 1, 1));
|
this.scatteredFeatureSpawnList.add(new SpawnListEntry((w) -> new EntityWitch(w), 1, 1, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
public MapGenScatteredFeature(Map par1Map)
|
public MapGenScatteredFeature(Map par1Map)
|
||||||
|
|
|
@ -1,22 +1,17 @@
|
||||||
package net.minecraft.src;
|
package net.minecraft.src;
|
||||||
|
|
||||||
public class SpawnListEntry extends WeightedRandomItem
|
import java.util.function.Function;
|
||||||
{
|
|
||||||
|
public class SpawnListEntry extends WeightedRandomItem {
|
||||||
/** Holds the class of the entity to be spawned. */
|
/** Holds the class of the entity to be spawned. */
|
||||||
public Class entityClass;
|
public Function<World, EntityLiving> entityConstructor;
|
||||||
public int minGroupCount;
|
public int minGroupCount;
|
||||||
public int maxGroupCount;
|
public int maxGroupCount;
|
||||||
|
|
||||||
public SpawnListEntry(Class par1Class, int par2, int par3, int par4)
|
public SpawnListEntry(Function<World, EntityLiving> par1Class, int par2, int par3, int par4) {
|
||||||
{
|
|
||||||
super(par2);
|
super(par2);
|
||||||
this.entityClass = par1Class;
|
this.entityConstructor = par1Class;
|
||||||
this.minGroupCount = par3;
|
this.minGroupCount = par3;
|
||||||
this.maxGroupCount = par4;
|
this.maxGroupCount = par4;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
return this.entityClass.getSimpleName() + "*(" + this.minGroupCount + "-" + this.maxGroupCount + "):" + this.itemWeight;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,18 +3,21 @@ package net.minecraft.src;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.EaglercraftRandom;
|
import net.lax1dude.eaglercraft.EaglercraftRandom;
|
||||||
|
|
||||||
public final class SpawnerAnimals
|
public final class SpawnerAnimals {
|
||||||
{
|
|
||||||
/** The 17x17 area around the player where mobs can spawn */
|
/** The 17x17 area around the player where mobs can spawn */
|
||||||
private HashMap eligibleChunksForSpawning = new HashMap();
|
private static HashMap eligibleChunksForSpawning = new HashMap();
|
||||||
|
|
||||||
|
/** An array of entity classes that spawn at night. */
|
||||||
|
protected static final Class[] nightSpawnEntities = new Class[] { EntitySpider.class, EntityZombie.class,
|
||||||
|
EntitySkeleton.class };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given a chunk, find a random position in it.
|
* Given a chunk, find a random position in it.
|
||||||
*/
|
*/
|
||||||
protected static ChunkPosition getRandomSpawningPointInChunk(World par0World, int par1, int par2)
|
protected static ChunkPosition getRandomSpawningPointInChunk(World par0World, int par1, int par2) {
|
||||||
{
|
|
||||||
Chunk var3 = par0World.getChunkFromChunkCoords(par1, par2);
|
Chunk var3 = par0World.getChunkFromChunkCoords(par1, par2);
|
||||||
int var4 = par1 * 16 + par0World.rand.nextInt(16);
|
int var4 = par1 * 16 + par0World.rand.nextInt(16);
|
||||||
int var5 = par2 * 16 + par0World.rand.nextInt(16);
|
int var5 = par2 * 16 + par0World.rand.nextInt(16);
|
||||||
|
@ -23,159 +26,148 @@ public final class SpawnerAnimals
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* adds all chunks within the spawn radius of the players to eligibleChunksForSpawning. pars: the world,
|
* adds all chunks within the spawn radius of the players to
|
||||||
* hostileCreatures, passiveCreatures. returns number of eligible chunks.
|
* eligibleChunksForSpawning. pars: the world, hostileCreatures,
|
||||||
|
* passiveCreatures. returns number of eligible chunks.
|
||||||
*/
|
*/
|
||||||
public int findChunksForSpawning(WorldServer par1WorldServer, boolean par2, boolean par3, boolean par4)
|
public static int findChunksForSpawning(WorldServer par0WorldServer, boolean par1, boolean par2, boolean par3) {
|
||||||
{
|
if (!par1 && !par2) {
|
||||||
if (!par2 && !par3)
|
|
||||||
{
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
} else {
|
||||||
else
|
eligibleChunksForSpawning.clear();
|
||||||
{
|
int var4;
|
||||||
this.eligibleChunksForSpawning.clear();
|
int var7;
|
||||||
int var5;
|
|
||||||
int var8;
|
|
||||||
|
|
||||||
for (var5 = 0; var5 < par1WorldServer.playerEntities.size(); ++var5)
|
for (var4 = 0; var4 < par0WorldServer.playerEntities.size(); ++var4) {
|
||||||
{
|
EntityPlayerMP var5 = (EntityPlayerMP) par0WorldServer.playerEntities.get(var4);
|
||||||
EntityPlayer var6 = (EntityPlayer)par1WorldServer.playerEntities.get(var5);
|
int var6 = MathHelper.floor_double(var5.posX / 16.0D);
|
||||||
int var7 = MathHelper.floor_double(var6.posX / 16.0D);
|
var7 = MathHelper.floor_double(var5.posZ / 16.0D);
|
||||||
var8 = MathHelper.floor_double(var6.posZ / 16.0D);
|
int var8 = 8;
|
||||||
byte var9 = 8;
|
|
||||||
|
|
||||||
for (int var10 = -var9; var10 <= var9; ++var10)
|
if(var5.renderDistance < var8) {
|
||||||
{
|
var8 = var5.renderDistance;
|
||||||
for (int var11 = -var9; var11 <= var9; ++var11)
|
if(var8 < 4) {
|
||||||
{
|
var8 = 4;
|
||||||
boolean var12 = var10 == -var9 || var10 == var9 || var11 == -var9 || var11 == var9;
|
} // TODO
|
||||||
ChunkCoordIntPair var13 = new ChunkCoordIntPair(var10 + var7, var11 + var8);
|
}
|
||||||
|
|
||||||
if (!var12)
|
for (int var9 = -var8; var9 <= var8; ++var9) {
|
||||||
{
|
for (int var10 = -var8; var10 <= var8; ++var10) {
|
||||||
this.eligibleChunksForSpawning.put(var13, Boolean.valueOf(false));
|
boolean var11 = var8 >= 8 && (var9 == -var8 || var9 == var8 || var10 == -var8 || var10 == var8);
|
||||||
}
|
ChunkCoordIntPair var12 = new ChunkCoordIntPair(var9 + var6, var10 + var7);
|
||||||
else if (!this.eligibleChunksForSpawning.containsKey(var13))
|
|
||||||
{
|
if (!var11) {
|
||||||
this.eligibleChunksForSpawning.put(var13, Boolean.valueOf(true));
|
eligibleChunksForSpawning.put(var12, Boolean.valueOf(false));
|
||||||
|
} else if (!eligibleChunksForSpawning.containsKey(var12)) {
|
||||||
|
eligibleChunksForSpawning.put(var12, Boolean.valueOf(true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var5 = 0;
|
var4 = 0;
|
||||||
ChunkCoordinates var34 = par1WorldServer.getSpawnPoint();
|
ChunkCoordinates var32 = par0WorldServer.getSpawnPoint();
|
||||||
EnumCreatureType[] var35 = EnumCreatureType.values();
|
EnumCreatureType[] var33 = EnumCreatureType.values();
|
||||||
var8 = var35.length;
|
var7 = var33.length;
|
||||||
|
|
||||||
for (int var36 = 0; var36 < var8; ++var36)
|
for (int var34 = 0; var34 < var7; ++var34) {
|
||||||
{
|
EnumCreatureType var35 = var33[var34];
|
||||||
EnumCreatureType var37 = var35[var36];
|
|
||||||
|
|
||||||
if ((!var37.getPeacefulCreature() || par3) && (var37.getPeacefulCreature() || par2) && (!var37.getAnimal() || par4) && par1WorldServer.countEntities(var37.getCreatureClass()) <= var37.getMaxNumberOfCreature() * this.eligibleChunksForSpawning.size() / 256)
|
if ((!var35.getPeacefulCreature() || par2) && (var35.getPeacefulCreature() || par1)
|
||||||
{
|
&& (!var35.getAnimal() || par3)
|
||||||
Iterator var38 = this.eligibleChunksForSpawning.keySet().iterator();
|
&& par0WorldServer.countEntities(var35.getCreatureClass()) <= var35.getMaxNumberOfCreature()
|
||||||
|
* eligibleChunksForSpawning.size() / 256) {
|
||||||
|
Iterator var36 = eligibleChunksForSpawning.keySet().iterator();
|
||||||
label110:
|
label110:
|
||||||
|
|
||||||
while (var38.hasNext())
|
while (var36.hasNext()) {
|
||||||
{
|
ChunkCoordIntPair var37 = (ChunkCoordIntPair) var36.next();
|
||||||
ChunkCoordIntPair var39 = (ChunkCoordIntPair)var38.next();
|
|
||||||
|
|
||||||
if (!((Boolean)this.eligibleChunksForSpawning.get(var39)).booleanValue())
|
if (!((Boolean) eligibleChunksForSpawning.get(var37)).booleanValue()) {
|
||||||
{
|
ChunkPosition var38 = getRandomSpawningPointInChunk(par0WorldServer, var37.chunkXPos,
|
||||||
ChunkPosition var40 = getRandomSpawningPointInChunk(par1WorldServer, var39.chunkXPos, var39.chunkZPos);
|
var37.chunkZPos);
|
||||||
int var14 = var40.x;
|
int var13 = var38.x;
|
||||||
int var15 = var40.y;
|
int var14 = var38.y;
|
||||||
int var16 = var40.z;
|
int var15 = var38.z;
|
||||||
|
|
||||||
if (!par1WorldServer.isBlockNormalCube(var14, var15, var16) && par1WorldServer.getBlockMaterial(var14, var15, var16) == var37.getCreatureMaterial())
|
if (!par0WorldServer.isBlockNormalCube(var13, var14, var15) && par0WorldServer
|
||||||
{
|
.getBlockMaterial(var13, var14, var15) == var35.getCreatureMaterial()) {
|
||||||
|
int var16 = 0;
|
||||||
int var17 = 0;
|
int var17 = 0;
|
||||||
int var18 = 0;
|
|
||||||
|
|
||||||
while (var18 < 3)
|
while (var17 < 3) {
|
||||||
{
|
int var18 = var13;
|
||||||
int var19 = var14;
|
int var19 = var14;
|
||||||
int var20 = var15;
|
int var20 = var15;
|
||||||
int var21 = var16;
|
byte var21 = 6;
|
||||||
byte var22 = 6;
|
SpawnListEntry var22 = null;
|
||||||
SpawnListEntry var23 = null;
|
int var23 = 0;
|
||||||
EntityLivingData var24 = null;
|
|
||||||
int var25 = 0;
|
|
||||||
|
|
||||||
while (true)
|
while (true) {
|
||||||
{
|
if (var23 < 4) {
|
||||||
if (var25 < 4)
|
label103: {
|
||||||
{
|
var18 += par0WorldServer.rand.nextInt(var21)
|
||||||
label103:
|
- par0WorldServer.rand.nextInt(var21);
|
||||||
{
|
var19 += par0WorldServer.rand.nextInt(1)
|
||||||
var19 += par1WorldServer.rand.nextInt(var22) - par1WorldServer.rand.nextInt(var22);
|
- par0WorldServer.rand.nextInt(1);
|
||||||
var20 += par1WorldServer.rand.nextInt(1) - par1WorldServer.rand.nextInt(1);
|
var20 += par0WorldServer.rand.nextInt(var21)
|
||||||
var21 += par1WorldServer.rand.nextInt(var22) - par1WorldServer.rand.nextInt(var22);
|
- par0WorldServer.rand.nextInt(var21);
|
||||||
|
|
||||||
if (canCreatureTypeSpawnAtLocation(var37, par1WorldServer, var19, var20, var21))
|
if (canCreatureTypeSpawnAtLocation(var35, par0WorldServer, var18, var19,
|
||||||
{
|
var20)) {
|
||||||
float var26 = (float)var19 + 0.5F;
|
float var24 = (float) var18 + 0.5F;
|
||||||
float var27 = (float)var20;
|
float var25 = (float) var19;
|
||||||
float var28 = (float)var21 + 0.5F;
|
float var26 = (float) var20 + 0.5F;
|
||||||
|
|
||||||
if (par1WorldServer.getClosestPlayer((double)var26, (double)var27, (double)var28, 24.0D) == null)
|
if (par0WorldServer.getClosestPlayer(var24,
|
||||||
{
|
var25, var26, 24.0D) == null) {
|
||||||
float var29 = var26 - (float)var34.posX;
|
float var27 = var24 - (float) var32.posX;
|
||||||
float var30 = var27 - (float)var34.posY;
|
float var28 = var25 - (float) var32.posY;
|
||||||
float var31 = var28 - (float)var34.posZ;
|
float var29 = var26 - (float) var32.posZ;
|
||||||
float var32 = var29 * var29 + var30 * var30 + var31 * var31;
|
float var30 = var27 * var27 + var28 * var28 + var29 * var29;
|
||||||
|
|
||||||
if (var32 >= 576.0F)
|
if (var30 >= 576.0F) {
|
||||||
{
|
if (var22 == null) {
|
||||||
if (var23 == null)
|
var22 = par0WorldServer.spawnRandomCreature(var35,
|
||||||
{
|
var18, var19, var20);
|
||||||
var23 = par1WorldServer.spawnRandomCreature(var37, var19, var20, var21);
|
|
||||||
|
|
||||||
if (var23 == null)
|
if (var22 == null) {
|
||||||
{
|
|
||||||
break label103;
|
break label103;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityLiving var41;
|
EntityLiving var39;
|
||||||
|
|
||||||
try
|
try {
|
||||||
{
|
var39 = (EntityLiving) var22.entityConstructor.apply(par0WorldServer);
|
||||||
var41 = (EntityLiving)var23.entityClass.getConstructor(new Class[] {World.class}).newInstance(new Object[] {par1WorldServer});
|
} catch (Exception var31) {
|
||||||
}
|
var31.printStackTrace();
|
||||||
catch (Exception var33)
|
return var4;
|
||||||
{
|
|
||||||
var33.printStackTrace();
|
|
||||||
return var5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var41.setLocationAndAngles((double)var26, (double)var27, (double)var28, par1WorldServer.rand.nextFloat() * 360.0F, 0.0F);
|
var39.setLocationAndAngles((double) var24, (double) var25, (double) var26, par0WorldServer.rand.nextFloat() * 360.0F, 0.0F);
|
||||||
|
|
||||||
if (var41.getCanSpawnHere())
|
if (var39.getCanSpawnHere()) {
|
||||||
{
|
++var16;
|
||||||
++var17;
|
par0WorldServer.spawnEntityInWorld(var39);
|
||||||
par1WorldServer.spawnEntityInWorld(var41);
|
creatureSpecificInit(var39, par0WorldServer, var24, var25, var26);
|
||||||
var24 = var41.onSpawnWithEgg(var24);
|
|
||||||
|
|
||||||
if (var17 >= var41.getMaxSpawnedInChunk())
|
if (var16 >= var39.getMaxSpawnedInChunk()) {
|
||||||
{
|
|
||||||
continue label110;
|
continue label110;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var5 += var17;
|
var4 += var16;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
++var25;
|
++var23;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
++var18;
|
++var17;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,85 +177,80 @@ public final class SpawnerAnimals
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return var5;
|
return var4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether or not the specified creature type can spawn at the specified location.
|
* Returns whether or not the specified creature type can spawn at the specified
|
||||||
|
* location.
|
||||||
*/
|
*/
|
||||||
public static boolean canCreatureTypeSpawnAtLocation(EnumCreatureType par0EnumCreatureType, World par1World, int par2, int par3, int par4)
|
public static boolean canCreatureTypeSpawnAtLocation(EnumCreatureType par0EnumCreatureType, World par1World, int par2, int par3, int par4) {
|
||||||
{
|
if (par0EnumCreatureType.getCreatureMaterial() == Material.water) {
|
||||||
if (par0EnumCreatureType.getCreatureMaterial() == Material.water)
|
|
||||||
{
|
|
||||||
return par1World.getBlockMaterial(par2, par3, par4).isLiquid() && par1World.getBlockMaterial(par2, par3 - 1, par4).isLiquid() && !par1World.isBlockNormalCube(par2, par3 + 1, par4);
|
return par1World.getBlockMaterial(par2, par3, par4).isLiquid() && par1World.getBlockMaterial(par2, par3 - 1, par4).isLiquid() && !par1World.isBlockNormalCube(par2, par3 + 1, par4);
|
||||||
}
|
} else if (!par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4)) {
|
||||||
else if (!par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4))
|
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
int var5 = par1World.getBlockId(par2, par3 - 1, par4);
|
int var5 = par1World.getBlockId(par2, par3 - 1, par4);
|
||||||
return var5 != Block.bedrock.blockID && !par1World.isBlockNormalCube(par2, par3, par4) && !par1World.getBlockMaterial(par2, par3, par4).isLiquid() && !par1World.isBlockNormalCube(par2, par3 + 1, par4);
|
return var5 != Block.bedrock.blockID && !par1World.isBlockNormalCube(par2, par3, par4) && !par1World.getBlockMaterial(par2, par3, par4).isLiquid() && !par1World.isBlockNormalCube(par2, par3 + 1, par4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* determines if a skeleton spawns on a spider, and if a sheep is a different
|
||||||
|
* color
|
||||||
|
*/
|
||||||
|
private static void creatureSpecificInit(EntityLiving par0EntityLiving, World par1World, float par2, float par3, float par4) {
|
||||||
|
par0EntityLiving.onSpawnWithEgg(null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called during chunk generation to spawn initial creatures.
|
* Called during chunk generation to spawn initial creatures.
|
||||||
*/
|
*/
|
||||||
public static void performWorldGenSpawning(World par0World, BiomeGenBase par1BiomeGenBase, int par2, int par3, int par4, int par5, EaglercraftRandom par6Random)
|
public static void performWorldGenSpawning(World par0World, BiomeGenBase par1BiomeGenBase, int par2, int par3, int par4, int par5, EaglercraftRandom par6Random) {
|
||||||
{
|
|
||||||
List var7 = par1BiomeGenBase.getSpawnableList(EnumCreatureType.creature);
|
List var7 = par1BiomeGenBase.getSpawnableList(EnumCreatureType.creature);
|
||||||
|
|
||||||
if (!var7.isEmpty())
|
if (!var7.isEmpty()) {
|
||||||
{
|
while (par6Random.nextFloat() < par1BiomeGenBase.getSpawningChance()) {
|
||||||
while (par6Random.nextFloat() < par1BiomeGenBase.getSpawningChance())
|
SpawnListEntry var8 = (SpawnListEntry) WeightedRandom.getRandomItem(par0World.rand, var7);
|
||||||
{
|
int var9 = var8.minGroupCount + par6Random.nextInt(1 + var8.maxGroupCount - var8.minGroupCount);
|
||||||
SpawnListEntry var8 = (SpawnListEntry)WeightedRandom.getRandomItem(par0World.rand, var7);
|
int var10 = par2 + par6Random.nextInt(par4);
|
||||||
EntityLivingData var9 = null;
|
int var11 = par3 + par6Random.nextInt(par5);
|
||||||
int var10 = var8.minGroupCount + par6Random.nextInt(1 + var8.maxGroupCount - var8.minGroupCount);
|
int var12 = var10;
|
||||||
int var11 = par2 + par6Random.nextInt(par4);
|
|
||||||
int var12 = par3 + par6Random.nextInt(par5);
|
|
||||||
int var13 = var11;
|
int var13 = var11;
|
||||||
int var14 = var12;
|
|
||||||
|
|
||||||
for (int var15 = 0; var15 < var10; ++var15)
|
for (int var14 = 0; var14 < var9; ++var14) {
|
||||||
{
|
boolean var15 = false;
|
||||||
boolean var16 = false;
|
|
||||||
|
|
||||||
for (int var17 = 0; !var16 && var17 < 4; ++var17)
|
for (int var16 = 0; !var15 && var16 < 4; ++var16) {
|
||||||
{
|
int var17 = par0World.getTopSolidOrLiquidBlock(var10, var11);
|
||||||
int var18 = par0World.getTopSolidOrLiquidBlock(var11, var12);
|
|
||||||
|
|
||||||
if (canCreatureTypeSpawnAtLocation(EnumCreatureType.creature, par0World, var11, var18, var12))
|
if (canCreatureTypeSpawnAtLocation(EnumCreatureType.creature, par0World, var10, var17, var11)) {
|
||||||
{
|
float var18 = (float) var10 + 0.5F;
|
||||||
float var19 = (float)var11 + 0.5F;
|
float var19 = (float) var17;
|
||||||
float var20 = (float)var18;
|
float var20 = (float) var11 + 0.5F;
|
||||||
float var21 = (float)var12 + 0.5F;
|
EntityLiving var21;
|
||||||
EntityLiving var22;
|
|
||||||
|
|
||||||
try
|
try {
|
||||||
{
|
var21 = (EntityLiving) var8.entityConstructor.apply(par0World);
|
||||||
var22 = (EntityLiving)var8.entityClass.getConstructor(new Class[] {World.class}).newInstance(new Object[] {par0World});
|
} catch (Exception var23) {
|
||||||
}
|
var23.printStackTrace();
|
||||||
catch (Exception var24)
|
|
||||||
{
|
|
||||||
var24.printStackTrace();
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var22.setLocationAndAngles((double)var19, (double)var20, (double)var21, par6Random.nextFloat() * 360.0F, 0.0F);
|
var21.setLocationAndAngles((double) var18, (double) var19, (double) var20,
|
||||||
par0World.spawnEntityInWorld(var22);
|
par6Random.nextFloat() * 360.0F, 0.0F);
|
||||||
var9 = var22.onSpawnWithEgg(var9);
|
par0World.spawnEntityInWorld(var21);
|
||||||
var16 = true;
|
creatureSpecificInit(var21, par0World, var18, var19, var20);
|
||||||
|
var15 = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var11 += par6Random.nextInt(5) - par6Random.nextInt(5);
|
var10 += par6Random.nextInt(5) - par6Random.nextInt(5);
|
||||||
|
|
||||||
for (var12 += par6Random.nextInt(5) - par6Random.nextInt(5); var11 < par2 || var11 >= par2 + par4 || var12 < par3 || var12 >= par3 + par4; var12 = var14 + par6Random.nextInt(5) - par6Random.nextInt(5))
|
for (var11 += par6Random.nextInt(5) - par6Random.nextInt(5); var10 < par2
|
||||||
{
|
|| var10 >= par2 + par4 || var11 < par3 || var11 >= par3 + par4; var11 = var13
|
||||||
var11 = var13 + par6Random.nextInt(5) - par6Random.nextInt(5);
|
+ par6Random.nextInt(5) - par6Random.nextInt(5)) {
|
||||||
|
var10 = var12 + par6Random.nextInt(5) - par6Random.nextInt(5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ public class WorldServer extends World
|
||||||
|
|
||||||
if (this.getGameRules().getGameRuleBooleanValue("doMobSpawning"))
|
if (this.getGameRules().getGameRuleBooleanValue("doMobSpawning"))
|
||||||
{
|
{
|
||||||
//this.animalSpawner.findChunksForSpawning(this, this.spawnHostileMobs, this.spawnPeacefulMobs, this.worldInfo.getWorldTotalTime() % 400L == 0L); // FIX THIS SHIT, IMPORTANT!!!
|
this.animalSpawner.findChunksForSpawning(this, this.spawnHostileMobs, this.spawnPeacefulMobs, this.worldInfo.getWorldTotalTime() % 400L == 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.chunkProvider.unloadQueuedChunks();
|
this.chunkProvider.unloadQueuedChunks();
|
||||||
|
|
Loading…
Reference in New Issue