Minestom/src/main/java/net/minestom/server/instance/IChunkLoader.java

50 lines
1.6 KiB
Java
Raw Normal View History

package net.minestom.server.instance;
import net.minestom.server.utils.chunk.ChunkCallback;
2020-07-21 18:48:15 +02:00
/**
* Interface implemented to change the way chunks are loaded/saved
* see {@link MinestomBasicChunkLoader} for the default implementation used in {@link InstanceContainer}
*/
public interface IChunkLoader {
2020-07-21 18:48:15 +02:00
/**
* Load a specific chunk, all blocks should be set since the {@link ChunkGenerator} is not applied
2020-07-21 18:48:15 +02:00
*
* @param instance the instance where the chunk belong
* @param chunkX the chunk X
* @param chunkZ the chunk Z
* @param callback the callback executed when the chunk is done loading,
* never called if something went wrong
2020-07-21 18:48:15 +02:00
* @return true if the chunk loaded successfully, false otherwise
*/
boolean loadChunk(Instance instance, int chunkX, int chunkZ, ChunkCallback callback);
2020-07-21 18:48:15 +02:00
/**
* Save a specific chunk with a callback for when it is done
*
* @param chunk the chunk to save
* @param callback the callback executed when the chunk is done saving,
* should be called even if the saving failed (you can throw an exception)
2020-07-21 18:48:15 +02:00
*/
void saveChunk(Chunk chunk, Runnable callback);
/**
2020-07-21 18:48:15 +02:00
* Does this ChunkLoader allow for multi-threaded saving of chunks?
*
2020-08-07 09:14:50 +02:00
* @return true if the chunk loader supports parallel saving
*/
default boolean supportsParallelSaving() {
return false;
}
/**
2020-07-21 18:48:15 +02:00
* Does this ChunkLoader allow for multi-threaded loading of chunks?
*
2020-08-07 09:14:50 +02:00
* @return true if the chunk loader supports parallel loading
*/
default boolean supportsParallelLoading() {
return false;
}
}