mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-27 13:06:02 +01:00
Only delay removing containers. Fixes BUKKIT-5238
In commit f94b7af8 I delay removing the block until after running the block's cleanup code to avoid errors. However, this causes problems of its own due to blocks not being written with this in mind. To avoid blocks getting recursively removed we now only delay removing containers since they are the only ones we had problems with to begin with.
This commit is contained in:
parent
c57e45dcdc
commit
32d9db82e5
@ -430,13 +430,23 @@ public class Chunk {
|
|||||||
block1.f(this.world, l1, j, i2, k1);
|
block1.f(this.world, l1, j, i2, k1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// chunksection.setTypeId(i, j & 15, k, block); // CraftBukkit - Moved down
|
// CraftBukkit start - Delay removing containers until after they're cleaned up
|
||||||
|
if (!(block1 instanceof IContainer)) {
|
||||||
|
chunksection.setTypeId(i, j & 15, k, block);
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
|
||||||
if (!this.world.isStatic) {
|
if (!this.world.isStatic) {
|
||||||
block1.remove(this.world, l1, j, i2, block1, k1);
|
block1.remove(this.world, l1, j, i2, block1, k1);
|
||||||
} else if (block1 instanceof IContainer && block1 != block) {
|
} else if (block1 instanceof IContainer && block1 != block) {
|
||||||
this.world.p(l1, j, i2);
|
this.world.p(l1, j, i2);
|
||||||
}
|
}
|
||||||
chunksection.setTypeId(i, j & 15, k, block); // CraftBukkit - Set new block after cleaning up old one
|
|
||||||
|
// CraftBukkit start - Remove containers now after cleanup
|
||||||
|
if (block1 instanceof IContainer) {
|
||||||
|
chunksection.setTypeId(i, j & 15, k, block);
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
|
||||||
if (chunksection.getTypeId(i, j & 15, k) != block) {
|
if (chunksection.getTypeId(i, j & 15, k) != block) {
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user