mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-24 03:25:15 +01:00
[Bleeding] Ignore Block Physics in Chunk population. Fixes BUKKIT-4923
Suppressing physics updates during Chunk population prevents infinite recursion due to custom Block Populators editing border blocks on chunks.
This commit is contained in:
parent
c7b4514ad3
commit
0aa187f151
@ -237,8 +237,13 @@ public class ChunkProviderServer implements IChunkProvider {
|
||||
|
||||
org.bukkit.World world = this.world.getWorld();
|
||||
if (world != null) {
|
||||
for (org.bukkit.generator.BlockPopulator populator : world.getPopulators()) {
|
||||
populator.populate(world, random, chunk.bukkitChunk);
|
||||
this.world.populating = true;
|
||||
try {
|
||||
for (org.bukkit.generator.BlockPopulator populator : world.getPopulators()) {
|
||||
populator.populate(world, random, chunk.bukkitChunk);
|
||||
}
|
||||
} finally {
|
||||
this.world.populating = false;
|
||||
}
|
||||
}
|
||||
BlockSand.instaFall = false;
|
||||
|
@ -70,6 +70,7 @@ public abstract class World implements IBlockAccess {
|
||||
public boolean callingPlaceEvent = false;
|
||||
public long ticksPerAnimalSpawns;
|
||||
public long ticksPerMonsterSpawns;
|
||||
public boolean populating;
|
||||
// CraftBukkit end
|
||||
private ArrayList M;
|
||||
private boolean N;
|
||||
@ -398,6 +399,11 @@ public abstract class World implements IBlockAccess {
|
||||
}
|
||||
|
||||
public void update(int i, int j, int k, Block block) {
|
||||
// CraftBukkit start
|
||||
if (this.populating) {
|
||||
return;
|
||||
}
|
||||
// CraftBukkit end
|
||||
this.applyPhysics(i, j, k, block);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user