summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/SpawnerCreature.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/minecraft/server/SpawnerCreature.java')
-rw-r--r--src/main/java/net/minecraft/server/SpawnerCreature.java57
1 files changed, 28 insertions, 29 deletions
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
index 056100f5..aa7698b9 100644
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
@@ -14,23 +14,24 @@ import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
public final class SpawnerCreature {
- private static LongObjectHashMap<Boolean> b = new LongObjectHashMap<Boolean>(); // CraftBukkit - HashMap -> LongObjectHashMap
- protected static final Class[] a = new Class[] { EntitySpider.class, EntityZombie.class, EntitySkeleton.class};
+ private LongObjectHashMap<Boolean> a = new LongObjectHashMap<Boolean>(); // CraftBukkit - HashMap -> LongObjectHashMap
+
+ public SpawnerCreature() {}
protected static ChunkPosition getRandomPosition(World world, int i, int j) {
Chunk chunk = world.getChunkAt(i, j);
int k = i * 16 + world.random.nextInt(16);
int l = j * 16 + world.random.nextInt(16);
- int i1 = world.random.nextInt(chunk == null ? world.R() : chunk.h() + 16 - 1);
+ int i1 = world.random.nextInt(chunk == null ? world.S() : chunk.h() + 16 - 1);
return new ChunkPosition(k, i1, l);
}
- public static final int spawnEntities(WorldServer worldserver, boolean flag, boolean flag1, boolean flag2) {
+ public int spawnEntities(WorldServer worldserver, boolean flag, boolean flag1, boolean flag2) {
if (!flag && !flag1) {
return 0;
} else {
- b.clear();
+ this.a.clear();
int i;
int j;
@@ -50,9 +51,9 @@ public final class SpawnerCreature {
long chunkCoords = LongHash.toLong(l + k, i1 + j);
if (!flag3) {
- b.put(chunkCoords, false);
- } else if (!b.containsKey(chunkCoords)) {
- b.put(chunkCoords, true);
+ this.a.put(chunkCoords, false);
+ } else if (!this.a.containsKey(chunkCoords)) {
+ this.a.put(chunkCoords, true);
}
// CraftBukkit end
}
@@ -90,15 +91,15 @@ public final class SpawnerCreature {
}
// CraftBukkit end
- if ((!enumcreaturetype.d() || flag1) && (enumcreaturetype.d() || flag) && (!enumcreaturetype.e() || flag2) && worldserver.a(enumcreaturetype.a()) <= limit * b.size() / 256) { // CraftBukkit - use per-world limits
- Iterator iterator = b.keySet().iterator();
+ if ((!enumcreaturetype.d() || flag1) && (enumcreaturetype.d() || flag) && (!enumcreaturetype.e() || flag2) && worldserver.a(enumcreaturetype.a()) <= limit * this.a.size() / 256) { // CraftBukkit - use per-world limits
+ Iterator iterator = this.a.keySet().iterator();
label110:
while (iterator.hasNext()) {
// CraftBukkit start
long key = ((Long) iterator.next()).longValue();
- if (!b.get(key)) {
+ if (!this.a.get(key)) {
ChunkPosition chunkposition = getRandomPosition(worldserver, LongHash.msw(key), LongHash.lsw(key));
// CraftBukkit end
int k1 = chunkposition.x;
@@ -115,6 +116,7 @@ public final class SpawnerCreature {
int j3 = i2;
byte b1 = 6;
BiomeMeta biomemeta = null;
+ GroupDataEntity groupdataentity = null;
int k3 = 0;
while (true) {
@@ -142,23 +144,23 @@ public final class SpawnerCreature {
}
}
- EntityLiving entityliving;
+ EntityInsentient entityinsentient;
try {
- entityliving = (EntityLiving) biomemeta.b.getConstructor(new Class[] { World.class}).newInstance(new Object[] { worldserver});
+ entityinsentient = (EntityInsentient) biomemeta.b.getConstructor(new Class[] { World.class}).newInstance(new Object[] { worldserver});
} catch (Exception exception) {
exception.printStackTrace();
return i;
}
- entityliving.setPositionRotation((double) f, (double) f1, (double) f2, worldserver.random.nextFloat() * 360.0F, 0.0F);
- if (entityliving.canSpawn()) {
+ entityinsentient.setPositionRotation((double) f, (double) f1, (double) f2, worldserver.random.nextFloat() * 360.0F, 0.0F);
+ if (entityinsentient.canSpawn()) {
++j2;
- // CraftBukkit start - Added a reason for spawning this creature, moved a(entityliving, world...) up
- a(entityliving, worldserver, f, f1, f2);
- worldserver.addEntity(entityliving, SpawnReason.NATURAL);
+ // CraftBukkit start - Added a reason for spawning this creature, moved entityinsentient.a(groupdataentity) up
+ groupdataentity = entityinsentient.a(groupdataentity);
+ worldserver.addEntity(entityinsentient, SpawnReason.NATURAL);
// CraftBukkit end
- if (j2 >= entityliving.by()) {
+ if (j2 >= entityinsentient.br()) {
continue label110;
}
}
@@ -199,16 +201,13 @@ public final class SpawnerCreature {
}
}
- private static void a(EntityLiving entityliving, World world, float f, float f1, float f2) {
- entityliving.bJ();
- }
-
public static void a(World world, BiomeBase biomebase, int i, int j, int k, int l, Random random) {
List list = biomebase.getMobs(EnumCreatureType.CREATURE);
if (!list.isEmpty()) {
while (random.nextFloat() < biomebase.f()) {
BiomeMeta biomemeta = (BiomeMeta) WeightedRandom.a(world.random, (Collection) list);
+ GroupDataEntity groupdataentity = null;
int i1 = biomemeta.c + random.nextInt(1 + biomemeta.d - biomemeta.c);
int j1 = i + random.nextInt(k);
int k1 = j + random.nextInt(l);
@@ -226,19 +225,19 @@ public final class SpawnerCreature {
float f1 = (float) l2;
float f2 = (float) k1 + 0.5F;
- EntityLiving entityliving;
+ EntityInsentient entityinsentient;
try {
- entityliving = (EntityLiving) biomemeta.b.getConstructor(new Class[] { World.class}).newInstance(new Object[] { world});
+ entityinsentient = (EntityInsentient) biomemeta.b.getConstructor(new Class[] { World.class}).newInstance(new Object[] { world});
} catch (Exception exception) {
exception.printStackTrace();
continue;
}
- entityliving.setPositionRotation((double) f, (double) f1, (double) f2, random.nextFloat() * 360.0F, 0.0F);
- // CraftBukkit start - Added a reason for spawning this creature, moved a(entity, world...) up
- a(entityliving, world, f, f1, f2);
- world.addEntity(entityliving, SpawnReason.CHUNK_GEN);
+ entityinsentient.setPositionRotation((double) f, (double) f1, (double) f2, random.nextFloat() * 360.0F, 0.0F);
+ // CraftBukkit start - Added a reason for spawning this creature, moved entityinsentient.a(groupdataentity) up
+ groupdataentity = entityinsentient.a(groupdataentity);
+ world.addEntity(entityinsentient, SpawnReason.CHUNK_GEN);
// CraftBukkit end
flag = true;
}