Interface IChunkLoader

All Known Implementing Classes:
AnvilLoader

public interface IChunkLoader
Interface implemented to change the way chunks are loaded/saved.

See AnvilLoader for the default implementation used in InstanceContainer.

  • Method Details

    • noop

      @NotNull static @NotNull IChunkLoader noop()
    • loadInstance

      default void loadInstance(@NotNull @NotNull Instance instance)
      Loads instance data from the loader.
      Parameters:
      instance - the instance to retrieve the data from
    • loadChunk

      @NotNull @NotNull CompletableFuture<@Nullable Chunk> loadChunk(@NotNull @NotNull Instance instance, int chunkX, int chunkZ)
      Loads a Chunk, all blocks should be set since the Generator is not applied.
      Parameters:
      instance - the Instance where the Chunk belong
      chunkX - the chunk X
      chunkZ - the chunk Z
      Returns:
      a CompletableFuture containing the chunk, or null if not present
    • saveInstance

      @NotNull default @NotNull CompletableFuture<Void> saveInstance(@NotNull @NotNull Instance instance)
    • saveChunk

      @NotNull @NotNull CompletableFuture<Void> saveChunk(@NotNull @NotNull Chunk chunk)
      Saves a Chunk with an optional callback for when it is done.
      Parameters:
      chunk - the Chunk to save
      Returns:
      a CompletableFuture executed when the Chunk is done saving, should be called even if the saving failed (you can throw an exception).
    • saveChunks

      @NotNull default @NotNull CompletableFuture<Void> saveChunks(@NotNull @NotNull Collection<Chunk> chunks)
      Saves multiple chunks with an optional callback for when it is done.

      Implementations need to check supportsParallelSaving() to support the feature if possible.

      Parameters:
      chunks - the chunks to save
      Returns:
      a CompletableFuture executed when the Chunk is done saving, should be called even if the saving failed (you can throw an exception).
    • supportsParallelSaving

      default boolean supportsParallelSaving()
      Does this IChunkLoader allow for multi-threaded saving of Chunk?
      Returns:
      true if the chunk loader supports parallel saving
    • supportsParallelLoading

      default boolean supportsParallelLoading()
      Does this IChunkLoader allow for multi-threaded loading of Chunk?
      Returns:
      true if the chunk loader supports parallel loading
    • unloadChunk

      default void unloadChunk(Chunk chunk)
      Called when a chunk is unloaded, so that this chunk loader can unload any resource it is holding. Note: Minestom currently has no way to determine whether the chunk comes from this loader, so you may get unload requests for chunks not created by the loader.
      Parameters:
      chunk - the chunk to unload