mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-28 22:47:41 +02:00
Moved chunk creation out of chunk loaders
This commit is contained in:
parent
1ddef81372
commit
ef8c275c4d
@ -3,6 +3,6 @@ package net.minestom.server.instance;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public interface IChunkLoader {
|
public interface IChunkLoader {
|
||||||
void loadOrCreateChunk(Instance instance, int chunkX, int chunkZ, Consumer<Chunk> callback);
|
boolean loadChunk(Instance instance, int chunkX, int chunkZ, Consumer<Chunk> callback);
|
||||||
void saveChunk(Chunk chunk, Runnable callback);
|
void saveChunk(Chunk chunk, Runnable callback);
|
||||||
}
|
}
|
||||||
|
@ -391,11 +391,16 @@ public class InstanceContainer extends Instance {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void retrieveChunk(int chunkX, int chunkZ, Consumer<Chunk> callback) {
|
protected void retrieveChunk(int chunkX, int chunkZ, Consumer<Chunk> callback) {
|
||||||
chunkLoader.loadOrCreateChunk(this, chunkX, chunkZ, chunk -> {
|
boolean loaded = chunkLoader.loadChunk(this, chunkX, chunkZ, chunk -> {
|
||||||
cacheChunk(chunk);
|
cacheChunk(chunk);
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.accept(chunk);
|
callback.accept(chunk);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if(!loaded) {
|
||||||
|
// Not found, create a new chunk
|
||||||
|
createChunk(chunkX, chunkZ, callback);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -39,15 +39,15 @@ public class MinestomBasicChunkLoader implements IChunkLoader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadOrCreateChunk(Instance instance, int chunkX, int chunkZ, Consumer<Chunk> callback) {
|
public boolean loadChunk(Instance instance, int chunkX, int chunkZ, Consumer<Chunk> callback) {
|
||||||
byte[] bytes = storageFolder == null ? null : storageFolder.get(getChunkKey(chunkX, chunkZ));
|
byte[] bytes = storageFolder == null ? null : storageFolder.get(getChunkKey(chunkX, chunkZ));
|
||||||
|
|
||||||
if (bytes == null) {
|
if (bytes == null) {
|
||||||
// Not found, create a new chunk
|
return false;
|
||||||
instance.createChunk(chunkX, chunkZ, callback);
|
|
||||||
} else {
|
} else {
|
||||||
// Found, load from result bytes
|
// Found, load from result bytes
|
||||||
ChunkReader.readChunk(bytes, instance, chunkX, chunkZ, callback);
|
ChunkReader.readChunk(bytes, instance, chunkX, chunkZ, callback);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user