diff --git a/api/src/main/java/ru/dragonestia/msb3/api/util/ChunkPreloader.java b/api/src/main/java/ru/dragonestia/msb3/api/util/ChunkPreloader.java new file mode 100644 index 0000000..4e85bb3 --- /dev/null +++ b/api/src/main/java/ru/dragonestia/msb3/api/util/ChunkPreloader.java @@ -0,0 +1,21 @@ +package ru.dragonestia.msb3.api.util; + +import lombok.experimental.UtilityClass; +import net.minestom.server.instance.InstanceContainer; + +@UtilityClass +public class ChunkPreloader { + + public void preload(InstanceContainer instance, int startChunkX, int startChunkZ, int endChunkX, int endChunkZ) { + record Point(int x, int z) {} + + var min = new Point(Math.min(startChunkX, endChunkX), Math.min(startChunkZ, endChunkZ)); + var max = new Point(Math.max(startChunkX, endChunkX), Math.max(startChunkZ, endChunkZ)); + + for (int chunkX = min.x; chunkX <= max.x; chunkX++) { + for (int chunkZ = min.z; chunkZ <= max.z; chunkZ++) { + instance.loadChunk(chunkX, chunkZ).join(); + } + } + } +}