diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/World.java')
-rw-r--r-- | src/main/java/net/minecraft/server/World.java | 184 |
1 files changed, 96 insertions, 88 deletions
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 0260dd3c..e2fd0dfd 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -43,13 +43,12 @@ public abstract class World implements IBlockAccess { protected float n; protected float o; protected float p; - protected int q = 0; - public int r = 0; + public int q = 0; public boolean suppressPhysics = false; public int difficulty; public Random random = new Random(); public WorldProvider worldProvider; // CraftBukkit - remove final - protected List w = new ArrayList(); + protected List v = new ArrayList(); public IChunkProvider chunkProvider; // CraftBukkit - protected -> public protected final IDataManager dataManager; public WorldData worldData; // CraftBukkit - protected -> public @@ -58,10 +57,10 @@ public abstract class World implements IBlockAccess { public final VillageCollection villages; protected final VillageSiege siegeManager = new VillageSiege(this); public final MethodProfiler methodProfiler; - private final Vec3DPool K = new Vec3DPool(300, 2000); - private final Calendar L = Calendar.getInstance(); - private UnsafeList M = new UnsafeList(); // CraftBukkit - ArrayList -> UnsafeList - private boolean N; + private final Vec3DPool J = new Vec3DPool(300, 2000); + private final Calendar K = Calendar.getInstance(); + private UnsafeList L = new UnsafeList(); // CraftBukkit - ArrayList -> UnsafeList + private boolean M; // CraftBukkit start - public, longhashset public boolean allowMonsters = true; public boolean allowAnimals = true; @@ -69,9 +68,9 @@ public abstract class World implements IBlockAccess { public long ticksPerAnimalSpawns; public long ticksPerMonsterSpawns; // CraftBukkit end - private int O; - int[] I; - private List P; + private int N; + int[] H; + private List O; public boolean isStatic; public BiomeBase getBiome(int i, int j) { @@ -116,9 +115,9 @@ public abstract class World implements IBlockAccess { this.ticksPerMonsterSpawns = this.getServer().getTicksPerMonsterSpawns(); // CraftBukkit // CraftBukkit end - this.O = this.random.nextInt(12000); - this.I = new int['\u8000']; - this.P = new UnsafeList(); // CraftBukkit - ArrayList -> UnsafeList + this.N = this.random.nextInt(12000); + this.H = new int['\u8000']; + this.O = new UnsafeList(); // CraftBukkit - ArrayList -> UnsafeList this.isStatic = false; this.dataManager = idatamanager; this.methodProfiler = methodprofiler; @@ -416,8 +415,8 @@ public abstract class World implements IBlockAccess { } public void notify(int i, int j, int k) { - for (int l = 0; l < this.w.size(); ++l) { - ((IWorldAccess) this.w.get(l)).a(i, j, k); + for (int l = 0; l < this.v.size(); ++l) { + ((IWorldAccess) this.v.get(l)).a(i, j, k); } } @@ -444,14 +443,14 @@ public abstract class World implements IBlockAccess { } public void j(int i, int j, int k) { - for (int l = 0; l < this.w.size(); ++l) { - ((IWorldAccess) this.w.get(l)).a(i, j, k, i, j, k); + for (int l = 0; l < this.v.size(); ++l) { + ((IWorldAccess) this.v.get(l)).a(i, j, k, i, j, k); } } public void e(int i, int j, int k, int l, int i1, int j1) { - for (int k1 = 0; k1 < this.w.size(); ++k1) { - ((IWorldAccess) this.w.get(k1)).a(i, j, k, l, i1, j1); + for (int k1 = 0; k1 < this.v.size(); ++k1) { + ((IWorldAccess) this.v.get(k1)).a(i, j, k, l, i1, j1); } } @@ -636,8 +635,8 @@ public abstract class World implements IBlockAccess { chunk.a(enumskyblock, i & 15, j, k & 15, l); - for (int i1 = 0; i1 < this.w.size(); ++i1) { - ((IWorldAccess) this.w.get(i1)).b(i, j, k); + for (int i1 = 0; i1 < this.v.size(); ++i1) { + ((IWorldAccess) this.v.get(i1)).b(i, j, k); } } } @@ -646,8 +645,8 @@ public abstract class World implements IBlockAccess { } public void o(int i, int j, int k) { - for (int l = 0; l < this.w.size(); ++l) { - ((IWorldAccess) this.w.get(l)).b(i, j, k); + for (int l = 0; l < this.v.size(); ++l) { + ((IWorldAccess) this.v.get(l)).b(i, j, k); } } @@ -830,39 +829,39 @@ public abstract class World implements IBlockAccess { public void makeSound(Entity entity, String s, float f, float f1) { if (entity != null && s != null) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).a(s, entity.locX, entity.locY - (double) entity.height, entity.locZ, f, f1); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).a(s, entity.locX, entity.locY - (double) entity.height, entity.locZ, f, f1); } } } public void a(EntityHuman entityhuman, String s, float f, float f1) { if (entityhuman != null && s != null) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).a(entityhuman, s, entityhuman.locX, entityhuman.locY - (double) entityhuman.height, entityhuman.locZ, f, f1); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).a(entityhuman, s, entityhuman.locX, entityhuman.locY - (double) entityhuman.height, entityhuman.locZ, f, f1); } } } public void makeSound(double d0, double d1, double d2, String s, float f, float f1) { if (s != null) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).a(s, d0, d1, d2, f, f1); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).a(s, d0, d1, d2, f, f1); } } } - public void b(double d0, double d1, double d2, String s, float f, float f1) {} + public void a(double d0, double d1, double d2, String s, float f, float f1, boolean flag) {} public void a(String s, int i, int j, int k) { - for (int l = 0; l < this.w.size(); ++l) { - ((IWorldAccess) this.w.get(l)).a(s, i, j, k); + for (int l = 0; l < this.v.size(); ++l) { + ((IWorldAccess) this.v.get(l)).a(s, i, j, k); } } public void addParticle(String s, double d0, double d1, double d2, double d3, double d4, double d5) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).a(s, d0, d1, d2, d3, d4, d5); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).a(s, d0, d1, d2, d3, d4, d5); } } @@ -934,16 +933,16 @@ public abstract class World implements IBlockAccess { } protected void a(Entity entity) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).a(entity); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).a(entity); } entity.valid = true; // CraftBukkit } protected void b(Entity entity) { - for (int i = 0; i < this.w.size(); ++i) { - ((IWorldAccess) this.w.get(i)).b(entity); + for (int i = 0; i < this.v.size(); ++i) { + ((IWorldAccess) this.v.get(i)).b(entity); } entity.valid = false; // CraftBukkit @@ -984,11 +983,11 @@ public abstract class World implements IBlockAccess { } public void addIWorldAccess(IWorldAccess iworldaccess) { - this.w.add(iworldaccess); + this.v.add(iworldaccess); } public List getCubes(Entity entity, AxisAlignedBB axisalignedbb) { - this.M.clear(); + this.L.clear(); int i = MathHelper.floor(axisalignedbb.a); int j = MathHelper.floor(axisalignedbb.d + 1.0D); int k = MathHelper.floor(axisalignedbb.b); @@ -1003,7 +1002,7 @@ public abstract class World implements IBlockAccess { Block block = Block.byId[this.getTypeId(k1, i2, l1)]; if (block != null) { - block.a(this, k1, i2, l1, axisalignedbb, this.M, entity); + block.a(this, k1, i2, l1, axisalignedbb, this.L, entity); } } } @@ -1017,20 +1016,20 @@ public abstract class World implements IBlockAccess { AxisAlignedBB axisalignedbb1 = ((Entity) list.get(j2)).E(); if (axisalignedbb1 != null && axisalignedbb1.a(axisalignedbb)) { - this.M.add(axisalignedbb1); + this.L.add(axisalignedbb1); } axisalignedbb1 = entity.g((Entity) list.get(j2)); if (axisalignedbb1 != null && axisalignedbb1.a(axisalignedbb)) { - this.M.add(axisalignedbb1); + this.L.add(axisalignedbb1); } } - return this.M; + return this.L; } public List a(AxisAlignedBB axisalignedbb) { - this.M.clear(); + this.L.clear(); int i = MathHelper.floor(axisalignedbb.a); int j = MathHelper.floor(axisalignedbb.d + 1.0D); int k = MathHelper.floor(axisalignedbb.b); @@ -1045,14 +1044,14 @@ public abstract class World implements IBlockAccess { Block block = Block.byId[this.getTypeId(k1, i2, l1)]; if (block != null) { - block.a(this, k1, i2, l1, axisalignedbb, this.M, (Entity) null); + block.a(this, k1, i2, l1, axisalignedbb, this.L, (Entity) null); } } } } } - return this.M; + return this.L; } public int a(float f) { @@ -1128,6 +1127,7 @@ public abstract class World implements IBlockAccess { // CraftBukkit end try { + ++entity.ticksLived; entity.j_(); } catch (Throwable throwable) { crashreport = CrashReport.a(throwable, "Ticking entity"); @@ -1221,7 +1221,7 @@ public abstract class World implements IBlockAccess { } this.methodProfiler.c("tileEntities"); - this.N = true; + this.M = true; Iterator iterator = this.tileEntityList.iterator(); while (iterator.hasNext()) { @@ -1261,7 +1261,7 @@ public abstract class World implements IBlockAccess { } } - this.N = false; + this.M = false; if (!this.b.isEmpty()) { this.tileEntityList.removeAll(this.b); this.b.clear(); @@ -1304,7 +1304,7 @@ public abstract class World implements IBlockAccess { } public void a(Collection collection) { - if (this.N) { + if (this.M) { this.a.addAll(collection); } else { this.tileEntityList.addAll(collection); @@ -1330,6 +1330,7 @@ public abstract class World implements IBlockAccess { if (entity.vehicle != null) { entity.U(); } else { + ++entity.ticksLived; entity.j_(); } } @@ -1517,7 +1518,7 @@ public abstract class World implements IBlockAccess { Block block = Block.byId[this.getTypeId(k1, l1, i2)]; if (block != null && block.material == material) { - double d0 = (double) ((float) (l1 + 1) - BlockFluids.d(this.getData(k1, l1, i2))); + double d0 = (double) ((float) (l1 + 1) - BlockFluids.e(this.getData(k1, l1, i2))); if ((double) l >= d0) { flag = true; @@ -1702,7 +1703,7 @@ public abstract class World implements IBlockAccess { public void setTileEntity(int i, int j, int k, TileEntity tileentity) { if (tileentity != null && !tileentity.r()) { - if (this.N) { + if (this.M) { tileentity.x = i; tileentity.y = j; tileentity.z = k; @@ -1721,7 +1722,7 @@ public abstract class World implements IBlockAccess { public void r(int i, int j, int k) { TileEntity tileentity = this.getTileEntity(i, j, k); - if (tileentity != null && this.N) { + if (tileentity != null && this.M) { tileentity.w_(); this.a.remove(tileentity); } else { @@ -1814,10 +1815,6 @@ public abstract class World implements IBlockAccess { protected void n() { if (!this.worldProvider.f) { - if (this.q > 0) { - --this.q; - } - int i = this.worldData.getThunderDuration(); if (i <= 0) { @@ -1929,8 +1926,8 @@ public abstract class World implements IBlockAccess { } this.methodProfiler.b(); - if (this.O > 0) { - --this.O; + if (this.N > 0) { + --this.N; } this.methodProfiler.a("playerCheckLight"); @@ -1949,7 +1946,7 @@ public abstract class World implements IBlockAccess { protected void a(int i, int j, Chunk chunk) { this.methodProfiler.c("moodSound"); - if (this.O == 0 && !this.isStatic) { + if (this.N == 0 && !this.isStatic) { this.k = this.k * 3 + 1013904223; int k = this.k >> 2; int l = k & 15; @@ -1964,7 +1961,7 @@ public abstract class World implements IBlockAccess { if (entityhuman != null && entityhuman.e((double) l + 0.5D, (double) j1 + 0.5D, (double) i1 + 0.5D) > 4.0D) { this.makeSound((double) l + 0.5D, (double) j1 + 0.5D, (double) i1 + 0.5D, "ambient.cave.cave", 0.7F, 0.8F + this.random.nextFloat() * 0.2F); - this.O = this.random.nextInt(12000) + 6000; + this.N = this.random.nextInt(12000) + 6000; } } } @@ -2171,16 +2168,16 @@ public abstract class World implements IBlockAccess { int i4; if (i2 > j1) { - this.I[i1++] = 133152; + this.H[i1++] = 133152; } else if (i2 < j1) { if (enumskyblock != EnumSkyBlock.BLOCK) { ; } - this.I[i1++] = 133152 + (j1 << 18); + this.H[i1++] = 133152 + (j1 << 18); while (l < i1) { - k1 = this.I[l++]; + k1 = this.H[l++]; l1 = (k1 & 63) - 32 + i; i2 = (k1 >> 6 & 63) - 32 + j; j2 = (k1 >> 12 & 63) - 32 + k; @@ -2218,8 +2215,8 @@ public abstract class World implements IBlockAccess { i5 = 1; } - if (l2 == k2 - i5 && i1 < this.I.length) { - this.I[i1++] = j4 - i + 32 + (k4 - j + 32 << 6) + (l4 - k + 32 << 12) + (k2 - i5 << 18); + if (l2 == k2 - i5 && i1 < this.H.length) { + this.H[i1++] = j4 - i + 32 + (k4 - j + 32 << 6) + (l4 - k + 32 << 12) + (k2 - i5 << 18); } } } @@ -2234,7 +2231,7 @@ public abstract class World implements IBlockAccess { this.methodProfiler.a("checkedPosition < toCheckCount"); while (l < i1) { - k1 = this.I[l++]; + k1 = this.H[l++]; l1 = (k1 & 63) - 32 + i; i2 = (k1 >> 6 & 63) - 32 + j; j2 = (k1 >> 12 & 63) - 32 + k; @@ -2271,29 +2268,29 @@ public abstract class World implements IBlockAccess { l3 = -l3; } - if (j3 + i4 + l3 < 17 && i1 < this.I.length - 6) { + if (j3 + i4 + l3 < 17 && i1 < this.H.length - 6) { if (this.b(enumskyblock, l1 - 1, i2, j2) < k3) { - this.I[i1++] = l1 - 1 - i + 32 + (i2 - j + 32 << 6) + (j2 - k + 32 << 12); + this.H[i1++] = l1 - 1 - i + 32 + (i2 - j + 32 << 6) + (j2 - k + 32 << 12); } if (this.b(enumskyblock, l1 + 1, i2, j2) < k3) { - this.I[i1++] = l1 + 1 - i + 32 + (i2 - j + 32 << 6) + (j2 - k + 32 << 12); + this.H[i1++] = l1 + 1 - i + 32 + (i2 - j + 32 << 6) + (j2 - k + 32 << 12); } if (this.b(enumskyblock, l1, i2 - 1, j2) < k3) { - this.I[i1++] = l1 - i + 32 + (i2 - 1 - j + 32 << 6) + (j2 - k + 32 << 12); + this.H[i1++] = l1 - i + 32 + (i2 - 1 - j + 32 << 6) + (j2 - k + 32 << 12); } if (this.b(enumskyblock, l1, i2 + 1, j2) < k3) { - this.I[i1++] = l1 - i + 32 + (i2 + 1 - j + 32 << 6) + (j2 - k + 32 << 12); + this.H[i1++] = l1 - i + 32 + (i2 + 1 - j + 32 << 6) + (j2 - k + 32 << 12); } if (this.b(enumskyblock, l1, i2, j2 - 1) < k3) { - this.I[i1++] = l1 - i + 32 + (i2 - j + 32 << 6) + (j2 - 1 - k + 32 << 12); + this.H[i1++] = l1 - i + 32 + (i2 - j + 32 << 6) + (j2 - 1 - k + 32 << 12); } if (this.b(enumskyblock, l1, i2, j2 + 1) < k3) { - this.I[i1++] = l1 - i + 32 + (i2 - j + 32 << 6) + (j2 + 1 - k + 32 << 12); + this.H[i1++] = l1 - i + 32 + (i2 - j + 32 << 6) + (j2 + 1 - k + 32 << 12); } } } @@ -2313,7 +2310,7 @@ public abstract class World implements IBlockAccess { } public List getEntities(Entity entity, AxisAlignedBB axisalignedbb) { - this.P.clear(); + this.O.clear(); int i = MathHelper.floor((axisalignedbb.a - 2.0D) / 16.0D); int j = MathHelper.floor((axisalignedbb.d + 2.0D) / 16.0D); int k = MathHelper.floor((axisalignedbb.c - 2.0D) / 16.0D); @@ -2322,12 +2319,12 @@ public abstract class World implements IBlockAccess { for (int i1 = i; i1 <= j; ++i1) { for (int j1 = k; j1 <= l; ++j1) { if (this.isChunkLoaded(i1, j1)) { - this.getChunkAt(i1, j1).a(entity, axisalignedbb, this.P); + this.getChunkAt(i1, j1).a(entity, axisalignedbb, this.O); } } } - return this.P; + return this.O; } public List a(Class oclass, AxisAlignedBB axisalignedbb) { @@ -2548,7 +2545,7 @@ public abstract class World implements IBlockAccess { } // CraftBukkit end - if (!entityhuman1.abilities.isInvulnerable) { + if (!entityhuman1.abilities.isInvulnerable && entityhuman1.isAlive()) { double d5 = entityhuman1.e(d0, d1, d2); double d6 = d3; @@ -2557,7 +2554,7 @@ public abstract class World implements IBlockAccess { } if (entityhuman1.isInvisible()) { - float f = entityhuman1.bS(); + float f = entityhuman1.bR(); if (f < 0.1F) { f = 0.1F; @@ -2699,8 +2696,8 @@ public abstract class World implements IBlockAccess { } public void e(int i, int j, int k, int l, int i1) { - for (int j1 = 0; j1 < this.w.size(); ++j1) { - ((IWorldAccess) this.w.get(j1)).a(i, j, k, l, i1); + for (int j1 = 0; j1 < this.v.size(); ++j1) { + ((IWorldAccess) this.v.get(j1)).a(i, j, k, l, i1); } } @@ -2709,8 +2706,19 @@ public abstract class World implements IBlockAccess { } public void a(EntityHuman entityhuman, int i, int j, int k, int l, int i1) { - for (int j1 = 0; j1 < this.w.size(); ++j1) { - ((IWorldAccess) this.w.get(j1)).a(entityhuman, i, j, k, l, i1); + try { + for (int j1 = 0; j1 < this.v.size(); ++j1) { + ((IWorldAccess) this.v.get(j1)).a(entityhuman, i, j, k, l, i1); + } + } catch (Throwable throwable) { + CrashReport crashreport = CrashReport.a(throwable, "Playing level event"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Level event being played"); + + crashreportsystemdetails.a("Block coordinates", CrashReportSystemDetails.a(j, k, l)); + crashreportsystemdetails.a("Event source", entityhuman); + crashreportsystemdetails.a("Event type", Integer.valueOf(i)); + crashreportsystemdetails.a("Event data", Integer.valueOf(i1)); + throw new ReportedException(crashreport); } } @@ -2754,22 +2762,22 @@ public abstract class World implements IBlockAccess { } public void g(int i, int j, int k, int l, int i1) { - for (int j1 = 0; j1 < this.w.size(); ++j1) { - IWorldAccess iworldaccess = (IWorldAccess) this.w.get(j1); + for (int j1 = 0; j1 < this.v.size(); ++j1) { + IWorldAccess iworldaccess = (IWorldAccess) this.v.get(j1); iworldaccess.b(i, j, k, l, i1); } } public Vec3DPool getVec3DPool() { - return this.K; + return this.J; } public Calendar T() { if (this.getTime() % 600L == 0L) { - this.L.setTimeInMillis(System.currentTimeMillis()); + this.K.setTimeInMillis(System.currentTimeMillis()); } - return this.L; + return this.K; } } |