Remove the delayed tile entity removal, fixes issues with recursive removal of comparators

This commit is contained in:
Thinkofdeath 2014-12-21 17:32:35 +00:00
parent 89944c09c9
commit 2681166072

View File

@ -1,5 +1,5 @@
--- ../work/decompile-8eb82bde//net/minecraft/server/Chunk.java 2014-11-28 17:43:42.981707438 +0000
+++ src/main/java/net/minecraft/server/Chunk.java 2014-11-28 17:38:22.000000000 +0000
--- ../work/decompile-8eb82bde/net/minecraft/server/Chunk.java 2014-12-21 17:32:05.580576417 +0000
+++ src/main/java/net/minecraft/server/Chunk.java 2014-12-21 17:32:05.580576417 +0000
@@ -1,6 +1,7 @@
package net.minecraft.server;
@ -79,35 +79,7 @@
public Chunk(World world, ChunkSnapshot chunksnapshot, int i, int j) {
this(world, i, j);
short short0 = 256;
@@ -465,7 +505,13 @@
flag = j >= i1;
}
- chunksection.setType(i, j & 15, k, iblockdata);
+ // CraftBukkit start - Delay removing containers until after they're cleaned up
+ if (!(block1 instanceof IContainer)) {
+ chunksection.setType(i, j & 15, k, iblockdata);
+ }
+ // CraftBukkit end
+
+
if (block1 != block) {
if (!this.world.isStatic) {
block1.remove(this.world, blockposition, iblockdata1);
@@ -474,6 +520,12 @@
}
}
+ // CraftBukkit start - Delay removing containers until after they're cleaned up
+ if (block1 instanceof IContainer) {
+ chunksection.setType(i, j & 15, k, iblockdata);
+ }
+ // CraftBukkit end
+
if (chunksection.b(i, j & 15, k) != block) {
return null;
} else {
@@ -505,7 +557,8 @@
@@ -505,7 +545,8 @@
}
}
@ -117,7 +89,7 @@
block.onPlace(this.world, blockposition, iblockdata);
}
@@ -586,7 +639,11 @@
@@ -586,7 +627,11 @@
int j = MathHelper.floor(entity.locZ / 16.0D);
if (i != this.locX || j != this.locZ) {
@ -130,7 +102,7 @@
entity.die();
}
@@ -673,6 +730,13 @@
@@ -673,6 +718,13 @@
tileentity.D();
this.tileEntities.put(blockposition, tileentity);
@ -144,7 +116,7 @@
}
}
@@ -716,7 +780,21 @@
@@ -716,7 +768,21 @@
}
for (int i = 0; i < this.entitySlices.length; ++i) {