2020-06-30 18:07:47 +02:00
|
|
|
package net.minestom.server.instance;
|
|
|
|
|
2020-09-19 18:35:00 +02:00
|
|
|
import net.minestom.server.utils.chunk.ChunkCallback;
|
2020-06-30 18:07:47 +02:00
|
|
|
|
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}
|
|
|
|
*/
|
2020-06-30 18:07:47 +02:00
|
|
|
public interface IChunkLoader {
|
2020-07-21 18:48:15 +02:00
|
|
|
|
|
|
|
/**
|
2020-09-02 10:30:03 +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
|
2020-09-27 20:48:12 +02:00
|
|
|
* @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
|
|
|
|
*/
|
2020-09-19 18:35:00 +02:00
|
|
|
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
|
2020-09-27 20:48:12 +02:00
|
|
|
* @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
|
|
|
*/
|
2020-06-30 18:07:47 +02:00
|
|
|
void saveChunk(Chunk chunk, Runnable callback);
|
2020-07-07 13:41:55 +02:00
|
|
|
|
|
|
|
/**
|
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
|
2020-07-07 13:41:55 +02:00
|
|
|
*/
|
|
|
|
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
|
2020-07-07 13:41:55 +02:00
|
|
|
*/
|
|
|
|
default boolean supportsParallelLoading() {
|
|
|
|
return false;
|
|
|
|
}
|
2020-06-30 18:07:47 +02:00
|
|
|
}
|