diff --git a/src/main/java/net/minestom/server/instance/IChunkLoader.java b/src/main/java/net/minestom/server/instance/IChunkLoader.java index 2ec558b10..d147a4401 100644 --- a/src/main/java/net/minestom/server/instance/IChunkLoader.java +++ b/src/main/java/net/minestom/server/instance/IChunkLoader.java @@ -3,6 +3,6 @@ package net.minestom.server.instance; import java.util.function.Consumer; public interface IChunkLoader { - void loadOrCreateChunk(Instance instance, int chunkX, int chunkZ, Consumer callback); + boolean loadChunk(Instance instance, int chunkX, int chunkZ, Consumer callback); void saveChunk(Chunk chunk, Runnable callback); } diff --git a/src/main/java/net/minestom/server/instance/InstanceContainer.java b/src/main/java/net/minestom/server/instance/InstanceContainer.java index b4e2d9cae..42dc45d2b 100644 --- a/src/main/java/net/minestom/server/instance/InstanceContainer.java +++ b/src/main/java/net/minestom/server/instance/InstanceContainer.java @@ -391,11 +391,16 @@ public class InstanceContainer extends Instance { @Override protected void retrieveChunk(int chunkX, int chunkZ, Consumer callback) { - chunkLoader.loadOrCreateChunk(this, chunkX, chunkZ, chunk -> { + boolean loaded = chunkLoader.loadChunk(this, chunkX, chunkZ, chunk -> { cacheChunk(chunk); if (callback != null) callback.accept(chunk); }); + + if(!loaded) { + // Not found, create a new chunk + createChunk(chunkX, chunkZ, callback); + } } @Override diff --git a/src/main/java/net/minestom/server/instance/MinestomBasicChunkLoader.java b/src/main/java/net/minestom/server/instance/MinestomBasicChunkLoader.java index 18a7f4de9..38de6df0d 100644 --- a/src/main/java/net/minestom/server/instance/MinestomBasicChunkLoader.java +++ b/src/main/java/net/minestom/server/instance/MinestomBasicChunkLoader.java @@ -39,15 +39,15 @@ public class MinestomBasicChunkLoader implements IChunkLoader { } @Override - public void loadOrCreateChunk(Instance instance, int chunkX, int chunkZ, Consumer callback) { + public boolean loadChunk(Instance instance, int chunkX, int chunkZ, Consumer callback) { byte[] bytes = storageFolder == null ? null : storageFolder.get(getChunkKey(chunkX, chunkZ)); if (bytes == null) { - // Not found, create a new chunk - instance.createChunk(chunkX, chunkZ, callback); + return false; } else { // Found, load from result bytes ChunkReader.readChunk(bytes, instance, chunkX, chunkZ, callback); + return true; } }