summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/Chunk.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/minecraft/server/Chunk.java')
-rw-r--r--src/main/java/net/minecraft/server/Chunk.java160
1 files changed, 78 insertions, 82 deletions
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 223ed087..31cdcd55 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -1,6 +1,6 @@
package net.minecraft.server;
-// import java.util.ArrayList; // CraftBukkit
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
@@ -11,7 +11,6 @@ import java.util.Random;
// CraftBukkit start
import org.bukkit.Bukkit;
import org.bukkit.Location;
-import org.bukkit.craftbukkit.util.UnsafeList;
// CraftBukkit end
public class Chunk {
@@ -58,7 +57,7 @@ public class Chunk {
this.heightMap = new int[256];
for (int k = 0; k < this.entitySlices.length; ++k) {
- this.entitySlices[k] = new UnsafeList(); // CraftBukkit - use UnsafeList
+ this.entitySlices[k] = new ArrayList();
}
Arrays.fill(this.b, -999);
@@ -104,22 +103,22 @@ public class Chunk {
return this.heightMap[j << 4 | i];
}
- public int g() {
+ public int h() {
for (int i = this.sections.length - 1; i >= 0; --i) {
if (this.sections[i] != null) {
- return this.sections[i].c();
+ return this.sections[i].d();
}
}
return 0;
}
- public ChunkSection[] h() {
+ public ChunkSection[] i() {
return this.sections;
}
public void initLighting() {
- int i = this.g();
+ int i = this.h();
int j;
int k;
@@ -152,7 +151,7 @@ public class Chunk {
if (chunksection != null) {
chunksection.c(j, i1 & 15, k, l);
- this.world.o((this.x << 4) + j, i1, (this.z << 4) + k);
+ this.world.n((this.x << 4) + j, i1, (this.z << 4) + k);
}
}
@@ -175,15 +174,13 @@ public class Chunk {
}
}
- public void loadNOP() {}
-
private void e(int i, int j) {
this.c[i + j * 16] = true;
this.s = true;
}
- private void o() {
- MethodProfiler.a("recheckGaps");
+ private void q() {
+ this.world.methodProfiler.a("recheckGaps");
if (this.world.areChunksLoaded(this.x * 16 + 8, 0, this.z * 16 + 8, 16)) {
for (int i = 0; i < 16; ++i) {
for (int j = 0; j < 16; ++j) {
@@ -221,7 +218,7 @@ public class Chunk {
this.s = false;
}
- MethodProfiler.a();
+ this.world.methodProfiler.b();
}
private void g(int i, int j, int k) {
@@ -237,7 +234,7 @@ public class Chunk {
private void d(int i, int j, int k, int l) {
if (l > k && this.world.areChunksLoaded(i, 0, j, 16)) {
for (int i1 = k; i1 < l; ++i1) {
- this.world.b(EnumSkyBlock.SKY, i, i1, j);
+ this.world.c(EnumSkyBlock.SKY, i, i1, j);
}
this.l = true;
@@ -272,7 +269,7 @@ public class Chunk {
chunksection = this.sections[l1 >> 4];
if (chunksection != null) {
chunksection.c(i, l1 & 15, k, 15);
- this.world.o((this.x << 4) + i, l1, (this.z << 4) + k);
+ this.world.n((this.x << 4) + i, l1, (this.z << 4) + k);
}
}
} else {
@@ -280,7 +277,7 @@ public class Chunk {
chunksection = this.sections[l1 >> 4];
if (chunksection != null) {
chunksection.c(i, l1 & 15, k, 0);
- this.world.o((this.x << 4) + i, l1, (this.z << 4) + k);
+ this.world.n((this.x << 4) + i, l1, (this.z << 4) + k);
}
}
}
@@ -365,8 +362,9 @@ public class Chunk {
int k1 = this.heightMap[j1];
int l1 = this.getTypeId(i, j, k);
+ int i2 = this.getData(i, j, k);
- if (l1 == l && this.getData(i, j, k) == i1) {
+ if (l1 == l && i2 == i1) {
return false;
} else {
ChunkSection chunksection = this.sections[j >> 4];
@@ -381,15 +379,19 @@ public class Chunk {
flag = j >= k1;
}
- chunksection.a(i, j & 15, k, l);
- int i2 = this.x * 16 + i;
- int j2 = this.z * 16 + k;
+ int j2 = this.x * 16 + i;
+ int k2 = this.z * 16 + k;
+
+ if (l1 != 0 && !this.world.isStatic) {
+ Block.byId[l1].h(this.world, j2, j, k2, i2);
+ }
+ chunksection.a(i, j & 15, k, l);
if (l1 != 0) {
if (!this.world.isStatic) {
- Block.byId[l1].remove(this.world, i2, j, j2);
+ Block.byId[l1].remove(this.world, j2, j, k2, l1, i2);
} else if (Block.byId[l1] instanceof BlockContainer && l1 != l) {
- this.world.q(i2, j, j2);
+ this.world.q(j2, j, k2);
}
}
@@ -415,14 +417,14 @@ public class Chunk {
if (l != 0) {
if (!this.world.isStatic) {
- Block.byId[l].onPlace(this.world, i2, j, j2);
+ Block.byId[l].onPlace(this.world, j2, j, k2);
}
if (Block.byId[l] instanceof BlockContainer) {
tileentity = this.e(i, j, k);
if (tileentity == null) {
- tileentity = ((BlockContainer) Block.byId[l]).a_();
- this.world.setTileEntity(i2, j, j2, tileentity);
+ tileentity = ((BlockContainer) Block.byId[l]).a(this.world);
+ this.world.setTileEntity(j2, j, k2, tileentity);
}
if (tileentity != null) {
@@ -474,7 +476,7 @@ public class Chunk {
public int getBrightness(EnumSkyBlock enumskyblock, int i, int j, int k) {
ChunkSection chunksection = this.sections[j >> 4];
- return chunksection == null ? enumskyblock.c : (enumskyblock == EnumSkyBlock.SKY ? chunksection.c(i, j & 15, k) : (enumskyblock == EnumSkyBlock.BLOCK ? chunksection.d(i, j & 15, k) : enumskyblock.c));
+ return chunksection == null ? (this.d(i, j, k) ? enumskyblock.c : 0) : (enumskyblock == EnumSkyBlock.SKY ? chunksection.c(i, j & 15, k) : (enumskyblock == EnumSkyBlock.BLOCK ? chunksection.d(i, j & 15, k) : enumskyblock.c));
}
public void a(EnumSkyBlock enumskyblock, int i, int j, int k, int l) {
@@ -490,11 +492,7 @@ public class Chunk {
if (!this.world.worldProvider.e) {
chunksection.c(i, j & 15, k, l);
}
- } else {
- if (enumskyblock != EnumSkyBlock.BLOCK) {
- return;
- }
-
+ } else if (enumskyblock == EnumSkyBlock.BLOCK) {
chunksection.d(i, j & 15, k, l);
}
}
@@ -545,15 +543,15 @@ public class Chunk {
k = this.entitySlices.length - 1;
}
- entity.bZ = true;
- entity.ca = this.x;
- entity.cb = k;
- entity.cc = this.z;
+ entity.ag = true;
+ entity.ah = this.x;
+ entity.ai = k;
+ entity.aj = this.z;
this.entitySlices[k].add(entity);
}
public void b(Entity entity) {
- this.a(entity, entity.cb);
+ this.a(entity, entity.ai);
}
public void a(Entity entity, int i) {
@@ -579,19 +577,19 @@ public class Chunk {
if (tileentity == null) {
int l = this.getTypeId(i, j, k);
- if (l <= 0 || !Block.byId[l].o()) {
+ if (l <= 0 || !Block.byId[l].s()) {
return null;
}
if (tileentity == null) {
- tileentity = ((BlockContainer) Block.byId[l]).a_();
+ tileentity = ((BlockContainer) Block.byId[l]).a(this.world);
this.world.setTileEntity(this.x * 16 + i, j, this.z * 16 + k, tileentity);
}
tileentity = (TileEntity) this.tileEntities.get(chunkposition);
}
- if (tileentity != null && tileentity.l()) {
+ if (tileentity != null && tileentity.p()) {
this.tileEntities.remove(chunkposition);
return null;
} else {
@@ -613,12 +611,12 @@ public class Chunk {
public void a(int i, int j, int k, TileEntity tileentity) {
ChunkPosition chunkposition = new ChunkPosition(i, j, k);
- tileentity.world = this.world;
+ tileentity.a(this.world);
tileentity.x = this.x * 16 + i;
tileentity.y = j;
tileentity.z = this.z * 16 + k;
if (this.getTypeId(i, j, k) != 0 && Block.byId[this.getTypeId(i, j, k)] instanceof BlockContainer) {
- tileentity.m();
+ tileentity.q();
this.tileEntities.put(chunkposition, tileentity);
// CraftBukkit start
} else {
@@ -645,9 +643,13 @@ public class Chunk {
public void addEntities() {
this.d = true;
this.world.a(this.tileEntities.values());
+ List[] alist = this.entitySlices;
+ int i = alist.length;
- for (int i = 0; i < this.entitySlices.length; ++i) {
- this.world.a(this.entitySlices[i]);
+ for (int j = 0; j < i; ++j) {
+ List list = alist[j];
+
+ this.world.a(list);
}
}
@@ -661,9 +663,12 @@ public class Chunk {
this.world.a(tileentity);
}
- for (int i = 0; i < this.entitySlices.length; ++i) {
+ List[] alist = this.entitySlices;
+ int i = alist.length;
+
+ for (int j = 0; j < i; ++j) {
// CraftBukkit start
- java.util.Iterator<Object> iter = this.entitySlices[i].iterator();
+ java.util.Iterator<Object> iter = this.entitySlices[j].iterator();
while (iter.hasNext()) {
Entity entity = (Entity) iter.next();
int cx = Location.locToBlock(entity.locX) >> 4;
@@ -677,7 +682,9 @@ public class Chunk {
}
// CraftBukkit end
- this.world.b(this.entitySlices[i]);
+ List list = alist[j];
+
+ this.world.b(list);
}
}
@@ -698,18 +705,19 @@ public class Chunk {
}
for (int k = i; k <= j; ++k) {
- UnsafeList list1 = (UnsafeList) this.entitySlices[k]; // CraftBukkit - use UnsafeList
+ List list1 = this.entitySlices[k];
+ Iterator iterator = list1.iterator();
- for (int l = 0; l < list1.size(); ++l) {
- Entity entity1 = (Entity) list1.unsafeGet(l); // CraftBukkit - use unsafeGet
+ while (iterator.hasNext()) {
+ Entity entity1 = (Entity) iterator.next();
if (entity1 != entity && entity1.boundingBox.a(axisalignedbb)) {
list.add(entity1);
- Entity[] aentity = entity1.bb();
+ Entity[] aentity = entity1.al();
if (aentity != null) {
- for (int i1 = 0; i1 < aentity.length; ++i1) {
- entity1 = aentity[i1];
+ for (int l = 0; l < aentity.length; ++l) {
+ entity1 = aentity[l];
if (entity1 != entity && entity1.boundingBox.a(axisalignedbb)) {
list.add(entity1);
}
@@ -737,10 +745,11 @@ public class Chunk {
}
for (int k = i; k <= j; ++k) {
- UnsafeList list1 = (UnsafeList) this.entitySlices[k]; // CraftBukkit - use UnsafeList
+ List list1 = this.entitySlices[k];
+ Iterator iterator = list1.iterator();
- for (int l = 0; l < list1.size(); ++l) {
- Entity entity = (Entity) list1.unsafeGet(l); // CraftBukkit - use unsafeGet
+ while (iterator.hasNext()) {
+ Entity entity = (Entity) iterator.next();
if (oclass.isAssignableFrom(entity.getClass()) && entity.boundingBox.a(axisalignedbb)) {
list.add(entity);
@@ -769,19 +778,6 @@ public class Chunk {
return false;
}
- public void i() {
- ChunkSection[] achunksection = this.sections;
- int i = achunksection.length;
-
- for (int j = 0; j < i; ++j) {
- ChunkSection chunksection = achunksection[j];
-
- if (chunksection != null) {
- chunksection.e();
- }
- }
- }
-
public void a(IChunkProvider ichunkprovider, IChunkProvider ichunkprovider1, int i, int j) {
if (!this.done && ichunkprovider.isChunkLoaded(i + 1, j + 1) && ichunkprovider.isChunkLoaded(i, j + 1) && ichunkprovider.isChunkLoaded(i + 1, j)) {
ichunkprovider.getChunkAt(ichunkprovider1, i, j);
@@ -805,7 +801,7 @@ public class Chunk {
int l = this.b[k];
if (l == -999) {
- int i1 = this.g() + 15;
+ int i1 = this.h() + 15;
l = -1;
@@ -826,13 +822,13 @@ public class Chunk {
return l;
}
- public void j() {
+ public void k() {
if (this.s && !this.world.worldProvider.e) {
- this.o();
+ this.q();
}
}
- public ChunkCoordIntPair k() {
+ public ChunkCoordIntPair l() {
return new ChunkCoordIntPair(this.x, this.z);
}
@@ -873,7 +869,7 @@ public class Chunk {
return BiomeBase.biomes[k] == null ? BiomeBase.PLAINS : BiomeBase.biomes[k];
}
- public byte[] l() {
+ public byte[] m() {
return this.r;
}
@@ -881,11 +877,11 @@ public class Chunk {
this.r = abyte;
}
- public void m() {
+ public void n() {
this.t = 0;
}
- public void n() {
+ public void o() {
for (int i = 0; i < 8; ++i) {
if (this.t >= 4096) {
return;
@@ -904,30 +900,30 @@ public class Chunk {
if (this.sections[j] == null && (k1 == 0 || k1 == 15 || k == 0 || k == 15 || l == 0 || l == 15) || this.sections[j] != null && this.sections[j].a(k, k1, l) == 0) {
if (Block.lightEmission[this.world.getTypeId(i1, l1 - 1, j1)] > 0) {
- this.world.v(i1, l1 - 1, j1);
+ this.world.x(i1, l1 - 1, j1);
}
if (Block.lightEmission[this.world.getTypeId(i1, l1 + 1, j1)] > 0) {
- this.world.v(i1, l1 + 1, j1);
+ this.world.x(i1, l1 + 1, j1);
}
if (Block.lightEmission[this.world.getTypeId(i1 - 1, l1, j1)] > 0) {
- this.world.v(i1 - 1, l1, j1);
+ this.world.x(i1 - 1, l1, j1);
}
if (Block.lightEmission[this.world.getTypeId(i1 + 1, l1, j1)] > 0) {
- this.world.v(i1 + 1, l1, j1);
+ this.world.x(i1 + 1, l1, j1);
}
if (Block.lightEmission[this.world.getTypeId(i1, l1, j1 - 1)] > 0) {
- this.world.v(i1, l1, j1 - 1);
+ this.world.x(i1, l1, j1 - 1);
}
if (Block.lightEmission[this.world.getTypeId(i1, l1, j1 + 1)] > 0) {
- this.world.v(i1, l1, j1 + 1);
+ this.world.x(i1, l1, j1 + 1);
}
- this.world.v(i1, l1, j1);
+ this.world.x(i1, l1, j1);
}
}
}