diff options
author | Thinkofdeath <thinkofdeath@spigotmc.org> | 2016-03-06 23:49:28 +0000 |
---|---|---|
committer | Thinkofdeath <thinkofdeath@spigotmc.org> | 2016-03-06 23:50:19 +0000 |
commit | 0cd671108591fd6f16696379280b235fdbb7dca8 (patch) | |
tree | ef4ee0fefcfa1dec002ab1b9e6455927f3b8379b | |
parent | a06e5cf8e82240893db66171331da647a3252c53 (diff) | |
download | craftbukkit-0cd671108591fd6f16696379280b235fdbb7dca8.tar craftbukkit-0cd671108591fd6f16696379280b235fdbb7dca8.tar.gz craftbukkit-0cd671108591fd6f16696379280b235fdbb7dca8.tar.lz craftbukkit-0cd671108591fd6f16696379280b235fdbb7dca8.tar.xz craftbukkit-0cd671108591fd6f16696379280b235fdbb7dca8.zip |
Fix regenerating chunks not updating visually
-rw-r--r-- | nms-patches/PlayerChunk.patch | 8 | ||||
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/CraftWorld.java | 19 |
2 files changed, 24 insertions, 3 deletions
diff --git a/nms-patches/PlayerChunk.patch b/nms-patches/PlayerChunk.patch index 47fee211..312df273 100644 --- a/nms-patches/PlayerChunk.patch +++ b/nms-patches/PlayerChunk.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/PlayerChunk.java +++ b/net/minecraft/server/PlayerChunk.java -@@ -4,16 +4,18 @@ +@@ -4,35 +4,48 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import java.util.ArrayList; @@ -19,8 +19,10 @@ + public final List<EntityPlayer> c = Lists.newArrayList(); // CraftBukkit - public private final ChunkCoordIntPair location; private final short[] dirtyBlocks = new short[64]; - private Chunk chunk; -@@ -22,17 +24,28 @@ +- private Chunk chunk; ++ public Chunk chunk; // CraftBukkit - public + private int dirtyCount; + private int h; private long i; private boolean done; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index f22885fe..4878ef83 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -195,6 +195,21 @@ public class CraftWorld implements World { world.getChunkProviderServer().unloadQueue.remove(x, z); world.getChunkProviderServer().chunks.remove(LongHash.toLong(x, z)); + // Update neighbor counts + for (int xx = -2; xx < 3; xx++) { + for (int zz = -2; zz < 3; zz++) { + if (xx == 0 && zz == 0) { + continue; + } + + net.minecraft.server.Chunk neighbor = world.getChunkProviderServer().getChunkIfLoaded(chunk.locX + x, chunk.locZ + z); + if (neighbor != null) { + neighbor.setNeighborUnloaded(-xx, -zz); + chunk.setNeighborUnloaded(xx, zz); + } + } + } + return true; } @@ -206,6 +221,10 @@ public class CraftWorld implements World { net.minecraft.server.Chunk chunk = null; chunk = world.getChunkProviderServer().chunkGenerator.getOrCreateChunk(x, z); + PlayerChunk playerChunk = world.getPlayerChunkMap().b/*PAIL: Rename*/(x, z); + if (playerChunk != null) { + playerChunk.chunk = chunk; + } chunkLoadPostProcess(chunk, x, z); |