fix world reset chunk repop (just noticed world gerneration is not actually seed-accurate)
This commit is contained in:
parent
0c6ea439eb
commit
59ecf5c6c1
1 changed files with 29 additions and 12 deletions
|
@ -1256,7 +1256,7 @@ public final class WorldServer extends AWorldServer {
|
|||
this.chunks.add(id, chunk);
|
||||
this.loaded.add(chunk);
|
||||
chunk.onChunkLoad();
|
||||
this.popChunk(x, z, false);
|
||||
this.popChunk(x, z);
|
||||
}
|
||||
|
||||
return chunk;
|
||||
|
@ -1386,7 +1386,7 @@ public final class WorldServer extends AWorldServer {
|
|||
// }
|
||||
// }
|
||||
|
||||
private void popChunk(int x, int z, boolean force) {
|
||||
private void popChunk(int x, int z) {
|
||||
boolean n = this.chunkExists(x, z - 1);
|
||||
boolean e = this.chunkExists(x + 1, z);
|
||||
boolean s = this.chunkExists(x, z + 1);
|
||||
|
@ -1398,15 +1398,6 @@ public final class WorldServer extends AWorldServer {
|
|||
if(e && s && se) {
|
||||
this.populate(x, z);
|
||||
}
|
||||
else if(force) {
|
||||
if(!e)
|
||||
this.loadChunk(x + 1, z);
|
||||
if(!s)
|
||||
this.loadChunk(x, z + 1);
|
||||
if(!se)
|
||||
this.loadChunk(x + 1, z + 1);
|
||||
this.populate(x, z);
|
||||
}
|
||||
if(w && s && sw) {
|
||||
this.populate(x - 1, z);
|
||||
}
|
||||
|
@ -1572,6 +1563,14 @@ public final class WorldServer extends AWorldServer {
|
|||
this.initGenerator(exterminated);
|
||||
this.reloadChunks();
|
||||
}
|
||||
|
||||
private void insertChunk(int x, int z) {
|
||||
ChunkServer chunk = this.generate(x, z);
|
||||
this.chunks.add(LongHashMap.packInt(x, z), chunk);
|
||||
this.loaded.add(chunk);
|
||||
chunk.onChunkLoad();
|
||||
this.popChunk(x, z);
|
||||
}
|
||||
|
||||
private void reloadChunks() {
|
||||
for(Long v : this.dropped) {
|
||||
|
@ -1599,7 +1598,25 @@ public final class WorldServer extends AWorldServer {
|
|||
loaded.clear();
|
||||
loaded.addAll(this.loaded);
|
||||
for(ChunkServer chunk : loaded) {
|
||||
this.popChunk(chunk.xPos, chunk.zPos, true);
|
||||
int x = chunk.xPos;
|
||||
int z = chunk.zPos;
|
||||
if(!this.chunkExists(x, z - 1))
|
||||
this.insertChunk(x, z - 1);
|
||||
if(!this.chunkExists(x + 1, z))
|
||||
this.insertChunk(x + 1, z);
|
||||
if(!this.chunkExists(x, z + 1))
|
||||
this.insertChunk(x, z + 1);
|
||||
if(!this.chunkExists(x - 1, z))
|
||||
this.insertChunk(x - 1, z);
|
||||
if(!this.chunkExists(x - 1, z - 1))
|
||||
this.insertChunk(x - 1, z - 1);
|
||||
if(!this.chunkExists(x + 1, z + 1))
|
||||
this.insertChunk(x + 1, z + 1);
|
||||
if(!this.chunkExists(x - 1, z + 1))
|
||||
this.insertChunk(x - 1, z + 1);
|
||||
if(!this.chunkExists(x + 1, z - 1))
|
||||
this.insertChunk(x + 1, z - 1);
|
||||
this.popChunk(x, z);
|
||||
chunk.update(false);
|
||||
}
|
||||
this.entities.removeAll(this.unloaded);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue