summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/net/minecraft/server/ChunkProviderServer.java9
-rw-r--r--src/main/java/net/minecraft/server/World.java6
2 files changed, 13 insertions, 2 deletions
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index a702fe82..2f842c3c 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -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;
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index f60368bf..f850a0f1 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -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);
}