summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThinkofdeath <thinkofdeath@spigotmc.org>2016-03-06 23:49:28 +0000
committerThinkofdeath <thinkofdeath@spigotmc.org>2016-03-06 23:50:19 +0000
commit0cd671108591fd6f16696379280b235fdbb7dca8 (patch)
treeef4ee0fefcfa1dec002ab1b9e6455927f3b8379b
parenta06e5cf8e82240893db66171331da647a3252c53 (diff)
downloadcraftbukkit-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.patch8
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftWorld.java19
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);