From e4fd8542da4a1f81b8737e7d4529c1bc4a3ade99 Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Wed, 27 Nov 2024 02:12:07 +0700 Subject: [PATCH] refactor: updated default world module --- ...rldModule.java => DefaultWorldModule.java} | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) rename api/src/main/java/ru/dragonestia/msb3/api/module/{PreloadedWorldModule.java => DefaultWorldModule.java} (81%) diff --git a/api/src/main/java/ru/dragonestia/msb3/api/module/PreloadedWorldModule.java b/api/src/main/java/ru/dragonestia/msb3/api/module/DefaultWorldModule.java similarity index 81% rename from api/src/main/java/ru/dragonestia/msb3/api/module/PreloadedWorldModule.java rename to api/src/main/java/ru/dragonestia/msb3/api/module/DefaultWorldModule.java index f1b7c02..d379c23 100644 --- a/api/src/main/java/ru/dragonestia/msb3/api/module/PreloadedWorldModule.java +++ b/api/src/main/java/ru/dragonestia/msb3/api/module/DefaultWorldModule.java @@ -15,27 +15,33 @@ import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; -public class PreloadedWorldModule { +public class DefaultWorldModule { private static boolean used = false; - private PreloadedWorldModule() {} + private DefaultWorldModule() {} - public static void init(File worldDir, GameMode gameMode, Pos spawnPos) { - init(worldDir, gameMode, () -> spawnPos); + public static void init(File worldDir, GameMode gameMode, Pos spawnPos, boolean preloadAllChunks) { + init(worldDir, gameMode, () -> spawnPos, preloadAllChunks); } - public static synchronized void init(File worldDir, GameMode gameMode, Supplier spawnPosSupplier) { + public static synchronized void init(File worldDir, GameMode gameMode, Supplier spawnPosSupplier, boolean preloadAllChunks) { if (used) return; used = true; var loadingWorld = MinecraftServer.getInstanceManager().createInstanceContainer(); loadingWorld.eventNode().addListener(PlayerMoveEvent.class, event -> event.setCancelled(true)); - var factory = WorldFactory.preloadedAnvil(worldDir); - var worlds = new ConcurrentHashMap(); + WorldFactory factory; + if (preloadAllChunks) { + var obj = WorldFactory.preloadedAnvil(worldDir); + obj.load(); + factory = obj; + } else { + factory = WorldFactory.anvil(worldDir); + } - factory.load(); + var worlds = new ConcurrentHashMap(); MinecraftServer.getGlobalEventHandler().addListener(AsyncPlayerConfigurationEvent.class, event -> { var player = event.getPlayer();