From 36b99ae4b019970629f980a433bd2b4b4e37759a Mon Sep 17 00:00:00 2001 From: RePixelatedMC <107539181+RePixelatedMC@users.noreply.github.com> Date: Sun, 13 Oct 2024 21:54:37 +0200 Subject: [PATCH] sync --- .../com/volmit/iris/engine/IrisEngine.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/com/volmit/iris/engine/IrisEngine.java b/core/src/main/java/com/volmit/iris/engine/IrisEngine.java index ad5b8c7fb..522abc6c0 100644 --- a/core/src/main/java/com/volmit/iris/engine/IrisEngine.java +++ b/core/src/main/java/com/volmit/iris/engine/IrisEngine.java @@ -61,6 +61,7 @@ import org.bukkit.WorldCreator; import org.bukkit.block.Biome; import org.bukkit.block.data.BlockData; import org.bukkit.command.CommandSender; +import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; import javax.annotation.Nullable; @@ -199,15 +200,26 @@ public class IrisEngine implements Engine { mode = getDimension().getMode().getType().create(this); } - private void setupMemoryWorld(@Nullable NamespacedKey key, WorldCreator creator) { + private void setupMemoryWorld() { try { + if (!getDimension().isEnableExperimentalMerger()) return; + if (getMerger().getGenerator().isBlank()) return; NamespacedKey dk = NamespacedKey.minecraft("memory_current_creator"); - var per = memoryWorld.getBukkit().getPersistentDataContainer(); - if (Objects.equals(per.get(dk, PersistentDataType.STRING), creator.toString())) return; - if (memoryWorld != null) - memoryWorld.close(); - memoryWorld = getDimension().isEnableExperimentalMerger() ? Failable.get(() -> key == null ? INMS.get().createMemoryWorld(creator) : INMS.get().createMemoryWorld(key, creator)) : null; // todo: experimental - per.set(dk, PersistentDataType.STRING, creator.toString()); + PersistentDataContainer per = null; + if (memoryWorld != null) { + per = memoryWorld.getBukkit().getPersistentDataContainer(); + if (Objects.equals(per.get(dk, PersistentDataType.STRING), memoryWorld.getBukkit().getGenerator().toString())) + return; + if (memoryWorld != null) + memoryWorld.close(); + } + memoryWorld = getMerger().isDatapackMode() ? Failable.get(() -> + getMerger().getGenerator() == null ? + INMS.get().createMemoryWorld(new WorldCreator("memoryworld")) : + INMS.get().createMemoryWorld(NamespacedKey.minecraft(getMerger().getGenerator()), new WorldCreator("memoryworld")) + ) : null; // todo: experimental + per = memoryWorld.getBukkit().getPersistentDataContainer(); + per.set(dk, PersistentDataType.STRING, memoryWorld.getBukkit().getGenerator().toString()); } catch (Exception e) { e.printStackTrace(); }