From 72ed0b81460fad83e15c1fb777c760b74a7d4370 Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Wed, 30 Apr 2025 18:18:43 +0700 Subject: [PATCH] feat: implemented ChunkPreloader --- .../msb3/api/util/ChunkPreloader.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 api/src/main/java/ru/dragonestia/msb3/api/util/ChunkPreloader.java 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(); + } + } + } +}