3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-11-16 04:50:05 +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.
Dieser Commit ist enthalten in:
t00thpick1 2013-12-08 21:50:18 -05:00 committet von feildmaster
Ursprung c7b4514ad3
Commit 0aa187f151
2 geänderte Dateien mit 13 neuen und 2 gelöschten Zeilen

Datei anzeigen

@ -237,9 +237,14 @@ public class ChunkProviderServer implements IChunkProvider {
org.bukkit.World world = this.world.getWorld();
if (world != null) {
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;
this.world.getServer().getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(chunk.bukkitChunk));

Datei anzeigen

@ -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);
}