Prevent Blocks from getting lost when a chunk reloads
This commit is contained in:
@@ -28,6 +28,7 @@ public class CraftWorld implements World {
|
||||
private final Environment environment;
|
||||
private final CraftServer server;
|
||||
private final ChunkProviderServer provider;
|
||||
private HashMap<Integer,CraftChunk> unloadedChunks = new HashMap<Integer, CraftChunk>();
|
||||
|
||||
private static final Random rand = new Random();
|
||||
|
||||
@@ -45,6 +46,15 @@ public class CraftWorld implements World {
|
||||
server.addWorld(this);
|
||||
}
|
||||
|
||||
public void preserveChunk( CraftChunk chunk ) {
|
||||
chunk.breakLink();
|
||||
unloadedChunks.put( chunk.getX() << 16 + chunk.getZ(), chunk );
|
||||
}
|
||||
|
||||
public CraftChunk popPreservedChunk( int x, int z ) {
|
||||
return unloadedChunks.remove( x << 16 + z );
|
||||
}
|
||||
|
||||
public Block getBlockAt(int x, int y, int z) {
|
||||
return getChunkAt(x >> 4, z >> 4).getBlock(x & 0xF, y & 0x7F, z & 0xF);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user