From 3f994c18ff927dff59eb1f86425f36fa1ea02be3 Mon Sep 17 00:00:00 2001 From: RePixelatedMC Date: Mon, 14 Oct 2024 12:24:10 +0200 Subject: [PATCH] sync --- build.gradle | 2 +- .../java/com/volmit/iris/engine/IrisEngine.java | 14 ++++++++------ .../volmit/iris/engine/object/IrisDimension.java | 3 +-- .../com/volmit/iris/engine/object/IrisMerger.java | 13 ++++++++----- .../iris/engine/platform/BukkitChunkGenerator.java | 6 +----- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/build.gradle b/build.gradle index 015ab9b4d..f812696dd 100644 --- a/build.gradle +++ b/build.gradle @@ -44,7 +44,7 @@ registerCustomOutputTask('Strange', 'D://Servers/1.17 Test Server/plugins') registerCustomOutputTask('Vatuu', 'D://Minecraft/Servers/1.19.4/plugins') registerCustomOutputTask('CrazyDev22', 'C://Users/Julian/Desktop/server/plugins') registerCustomOutputTask('Pixel', 'D://Iris Dimension Engine/1.20.4 - Development/plugins') -registerCustomOutputTask('PixelFury', 'C://Users/RePixelatedMC/Iris/1.21 - Render/plugins') +registerCustomOutputTask('PixelFury', 'C://Users/RePixelatedMC/Iris/1.21 - Development-v3/plugins') // ========================== UNIX ============================== registerCustomOutputTaskUnix('CyberpwnLT', '/Users/danielmills/development/server/plugins') registerCustomOutputTaskUnix('PsychoLT', '/Users/brianfopiano/Developer/RemoteGit/Server/plugins') 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 522abc6c0..550d298e4 100644 --- a/core/src/main/java/com/volmit/iris/engine/IrisEngine.java +++ b/core/src/main/java/com/volmit/iris/engine/IrisEngine.java @@ -64,7 +64,6 @@ import org.bukkit.command.CommandSender; import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; -import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.util.HashSet; @@ -134,7 +133,8 @@ public class IrisEngine implements Engine { context = new IrisContext(this); cleaning = new AtomicBoolean(false); context.touch(); - merger = new IrisMerger(); + merger = getDimension().getMerger(); + updateMemoryWorld(); getData().setEngine(this); getData().loadPrefetch(this); Iris.info("Initializing Engine: " + target.getWorld().name() + "/" + target.getDimension().getLoadKey() + " (" + target.getDimension().getDimensionHeight() + " height) Seed: " + getSeedManager().getSeed()); @@ -200,15 +200,16 @@ public class IrisEngine implements Engine { mode = getDimension().getMode().getType().create(this); } - private void setupMemoryWorld() { + private void updateMemoryWorld() { try { + merger = getDimension().getMerger(); if (!getDimension().isEnableExperimentalMerger()) return; if (getMerger().getGenerator().isBlank()) return; NamespacedKey dk = NamespacedKey.minecraft("memory_current_creator"); - PersistentDataContainer per = null; + PersistentDataContainer per; if (memoryWorld != null) { per = memoryWorld.getBukkit().getPersistentDataContainer(); - if (Objects.equals(per.get(dk, PersistentDataType.STRING), memoryWorld.getBukkit().getGenerator().toString())) + if (Objects.equals(per.get(dk, PersistentDataType.STRING), getMerger().getGenerator())) return; if (memoryWorld != null) memoryWorld.close(); @@ -219,7 +220,7 @@ public class IrisEngine implements Engine { 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()); + per.set(dk, PersistentDataType.STRING, getMerger().getGenerator()); } catch (Exception e) { e.printStackTrace(); } @@ -274,6 +275,7 @@ public class IrisEngine implements Engine { getData().clearLists(); getTarget().setDimension(getData().getDimensionLoader().load(getDimension().getLoadKey())); prehotload(); + updateMemoryWorld(); setupEngine(); J.a(() -> { synchronized (ServerConfigurator.class) { diff --git a/core/src/main/java/com/volmit/iris/engine/object/IrisDimension.java b/core/src/main/java/com/volmit/iris/engine/object/IrisDimension.java index 82201d0d5..0a65ec7e0 100644 --- a/core/src/main/java/com/volmit/iris/engine/object/IrisDimension.java +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisDimension.java @@ -144,9 +144,8 @@ public class IrisDimension extends IrisRegistrant { @RegistryListResource(IrisJigsawStructure.class) @Desc("If defined, Iris will place the given jigsaw structure where minecraft should place the overworld stronghold.") private String stronghold; - @ArrayType(max = 1, type = IrisMerger.class) @Desc("Iris merger [Experimental] ( Deprecated for v3 )") - private IrisMerger merger; + private IrisMerger merger = new IrisMerger(); @Desc("Cheap temp solution till v4 arrives [ Enables the experimental merger ] Requires studio restart to take effect!") private boolean EnableExperimentalMerger = true; @Desc("If set to true, Iris will remove chunks to allow visualizing cross sections of chunks easily") diff --git a/core/src/main/java/com/volmit/iris/engine/object/IrisMerger.java b/core/src/main/java/com/volmit/iris/engine/object/IrisMerger.java index 25aa69049..156631eb9 100644 --- a/core/src/main/java/com/volmit/iris/engine/object/IrisMerger.java +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisMerger.java @@ -28,8 +28,8 @@ import org.bukkit.generator.ChunkGenerator; @Data public class IrisMerger { - private RollingSequence mergeDuration; - private Engine engine; + private transient RollingSequence mergeDuration = new RollingSequence(20); + private transient Engine engine; @Desc("Selected Generator") private String generator; @@ -48,8 +48,11 @@ public class IrisMerger { */ @Deprecated public void generateVanillaUnderground(int x, int z, Engine engine) { - if (engine.getMemoryWorld() == null || engine.getWorld() == null) - throw new NullPointerException(); + if (engine.getMemoryWorld() == null) + throw new IllegalStateException("MemoryWorld is null. Ensure that it has been initialized."); + if (engine.getWorld() == null) + throw new IllegalStateException("World is null. Ensure that the world has been properly loaded."); + PrecisionStopwatch p = PrecisionStopwatch.start(); Hunk vh = memoryWorldToHunk(engine.getMemoryWorld().getChunkData(x, z), engine); int totalHeight = engine.getMemoryWorld().getBukkit().getMaxHeight() - engine.getMemoryWorld().getBukkit().getMinHeight(); @@ -60,7 +63,7 @@ public class IrisMerger { for (int zz = 0; zz < 16; zz++) { for (int y = 0; y < totalHeight; y++) { //int height = engine.getHeight(x * 16 + xx, z * 16 + zz, true) - 10; - int height = (int) Math.ceil(context.getHeight().get(xx,zz)); + int height = (int) Math.ceil(context.getHeight().get(xx,zz) - depth); if (y < height) { BlockData blockData = vh.get(xx, y, zz); if (blockData != null) { diff --git a/core/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java b/core/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java index 3e71ff95a..a2182449b 100644 --- a/core/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java +++ b/core/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java @@ -366,12 +366,8 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun getEngine().generate(x << 4, z << 4, blocks, biomes, false); blocks.apply(); biomes.apply(); - J.s(() -> { - //generateVanillaUnderground(x,z, blocks); - }); } - Iris.info("dev"); Iris.debug("Generated " + x + " " + z); } catch (Throwable e) { Iris.error("======================================"); @@ -389,7 +385,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun @EventHandler private void onChunkGeneration(ChunkLoadEvent event) { - if(!event.isNewChunk() || !engine.getWorld().realWorld().equals(event.getWorld()) || !engine.getDimension().isEnableExperimentalMerger() || engine.getMemoryWorld() != null) return; + if(!event.isNewChunk() || !engine.getWorld().realWorld().equals(event.getWorld()) || !engine.getDimension().isEnableExperimentalMerger() || engine.getMemoryWorld() == null) return; engine.getMerger().generateVanillaUnderground(event.getChunk().getX(), event.getChunk().getZ(), engine); }