Fix regenerating chunks not updating visually

This commit is contained in:
Thinkofdeath 2016-03-06 23:49:28 +00:00
parent a06e5cf8e8
commit 0cd6711085
2 changed files with 24 additions and 3 deletions

View File

@ -1,6 +1,6 @@
--- a/net/minecraft/server/PlayerChunk.java --- a/net/minecraft/server/PlayerChunk.java
+++ b/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.Iterables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import java.util.ArrayList; import java.util.ArrayList;
@ -19,8 +19,10 @@
+ public final List<EntityPlayer> c = Lists.newArrayList(); // CraftBukkit - public + public final List<EntityPlayer> c = Lists.newArrayList(); // CraftBukkit - public
private final ChunkCoordIntPair location; private final ChunkCoordIntPair location;
private final short[] dirtyBlocks = new short[64]; private final short[] dirtyBlocks = new short[64];
private Chunk chunk; - private Chunk chunk;
@@ -22,17 +24,28 @@ + public Chunk chunk; // CraftBukkit - public
private int dirtyCount;
private int h;
private long i; private long i;
private boolean done; private boolean done;

View File

@ -195,6 +195,21 @@ public class CraftWorld implements World {
world.getChunkProviderServer().unloadQueue.remove(x, z); world.getChunkProviderServer().unloadQueue.remove(x, z);
world.getChunkProviderServer().chunks.remove(LongHash.toLong(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; return true;
} }
@ -206,6 +221,10 @@ public class CraftWorld implements World {
net.minecraft.server.Chunk chunk = null; net.minecraft.server.Chunk chunk = null;
chunk = world.getChunkProviderServer().chunkGenerator.getOrCreateChunk(x, z); 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); chunkLoadPostProcess(chunk, x, z);