mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-26 21:52:50 +02:00
ChunkLoader can now indicate that they support parallel loading or saving
This commit is contained in:
parent
69654d05de
commit
dfdf93bfc4
@ -5,4 +5,20 @@ import java.util.function.Consumer;
|
||||
public interface IChunkLoader {
|
||||
boolean loadChunk(Instance instance, int chunkX, int chunkZ, Consumer<Chunk> callback);
|
||||
void saveChunk(Chunk chunk, Runnable callback);
|
||||
|
||||
/**
|
||||
* Does this ChunkLoader allow for multithreaded saving of chunks?
|
||||
* @return
|
||||
*/
|
||||
default boolean supportsParallelSaving() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Does this ChunkLoader allow for multithreaded loading of chunks?
|
||||
* @return
|
||||
*/
|
||||
default boolean supportsParallelLoading() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -374,6 +374,12 @@ public class InstanceContainer extends Instance {
|
||||
@Override
|
||||
public void saveChunksToStorageFolder(Runnable callback) {
|
||||
Check.notNull(getStorageFolder(), "You cannot save the instance if no StorageFolder has been defined");
|
||||
if(chunkLoader.supportsParallelSaving()) {
|
||||
getChunks().parallelStream().forEach(c -> {
|
||||
saveChunkToStorageFolder(c, null);
|
||||
});
|
||||
callback.run();
|
||||
} else {
|
||||
Iterator<Chunk> chunks = getChunks().iterator();
|
||||
while (chunks.hasNext()) {
|
||||
Chunk chunk = chunks.next();
|
||||
@ -381,6 +387,7 @@ public class InstanceContainer extends Instance {
|
||||
saveChunkToStorageFolder(chunk, isLast ? callback : null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockBatch createBlockBatch() {
|
||||
|
Loading…
Reference in New Issue
Block a user