From c2b9b0ba0e80ec7f9a3b409fe836f252006df259 Mon Sep 17 00:00:00 2001 From: CrazyDev22 Date: Tue, 9 Apr 2024 16:52:14 +0200 Subject: [PATCH] add smartVanillaHeight --- core/src/main/java/com/volmit/iris/Iris.java | 2 +- .../com/volmit/iris/core/commands/CommandIris.java | 2 +- .../com/volmit/iris/core/tools/IrisCreator.java | 2 ++ .../volmit/iris/core/tools/IrisWorldCreator.java | 8 +++++++- .../volmit/iris/engine/object/IrisDimension.java | 2 ++ .../iris/engine/platform/BukkitChunkGenerator.java | 14 +++++++++++++- 6 files changed, 26 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/volmit/iris/Iris.java b/core/src/main/java/com/volmit/iris/Iris.java index e32c8239d..9fec3b7e8 100644 --- a/core/src/main/java/com/volmit/iris/Iris.java +++ b/core/src/main/java/com/volmit/iris/Iris.java @@ -739,7 +739,7 @@ public class Iris extends VolmitPlugin implements Listener { service(StudioSVC.class).installIntoWorld(getSender(), dim.getLoadKey(), w.worldFolder()); } - return new BukkitChunkGenerator(w, false, ff, dim.getLoadKey()); + return new BukkitChunkGenerator(w, false, ff, dim.getLoadKey(), false); } public void splash() { diff --git a/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java b/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java index bf7b05b48..16a110bf1 100644 --- a/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java +++ b/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java @@ -622,6 +622,6 @@ public class CommandIris implements DecreeExecutor { ff.mkdirs(); service(StudioSVC.class).installIntoWorld(sender, dim.getLoadKey(), ff.getParentFile()); } - return new BukkitChunkGenerator(w, false, ff, dim.getLoadKey()); + return new BukkitChunkGenerator(w, false, ff, dim.getLoadKey(), false); } } diff --git a/core/src/main/java/com/volmit/iris/core/tools/IrisCreator.java b/core/src/main/java/com/volmit/iris/core/tools/IrisCreator.java index 3e90aced1..e67908d0f 100644 --- a/core/src/main/java/com/volmit/iris/core/tools/IrisCreator.java +++ b/core/src/main/java/com/volmit/iris/core/tools/IrisCreator.java @@ -86,6 +86,7 @@ public class IrisCreator { * Benchmark mode */ private boolean benchmark = false; + private boolean smartVanillaHeight = false; public static boolean removeFromBukkitYml(String name) throws IOException { YamlConfiguration yml = YamlConfiguration.loadConfiguration(BUKKIT_YML); @@ -149,6 +150,7 @@ public class IrisCreator { .name(name) .seed(seed) .studio(studio) + .smartVanillaHeight(smartVanillaHeight) .create(); ServerConfigurator.installDataPacks(false); diff --git a/core/src/main/java/com/volmit/iris/core/tools/IrisWorldCreator.java b/core/src/main/java/com/volmit/iris/core/tools/IrisWorldCreator.java index cd6c17a91..b815d3809 100644 --- a/core/src/main/java/com/volmit/iris/core/tools/IrisWorldCreator.java +++ b/core/src/main/java/com/volmit/iris/core/tools/IrisWorldCreator.java @@ -32,6 +32,7 @@ public class IrisWorldCreator { private String name; private boolean studio = false; private String dimensionName = null; + private boolean smartVanillaHeight = false; private long seed = 1337; public IrisWorldCreator() { @@ -63,6 +64,11 @@ public class IrisWorldCreator { return this; } + public IrisWorldCreator smartVanillaHeight(boolean smartVanillaHeight) { + this.smartVanillaHeight = smartVanillaHeight; + return this; + } + public WorldCreator create() { IrisDimension dim = IrisData.loadAnyDimension(dimensionName); @@ -76,7 +82,7 @@ public class IrisWorldCreator { .build(); ChunkGenerator g = new BukkitChunkGenerator(w, studio, studio ? dim.getLoader().getDataFolder() : - new File(w.worldFolder(), "iris/pack"), dimensionName); + new File(w.worldFolder(), "iris/pack"), dimensionName, smartVanillaHeight); return new WorldCreator(name) 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 488171296..e23d0d4dd 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 @@ -231,6 +231,8 @@ public class IrisDimension extends IrisRegistrant { private IrisRange dimensionHeightEnd = new IrisRange(-64, 320); @Desc("Define the min and max Y bounds of this dimension. Please keep in mind that Iris internally generates from 0 to (max - min). \n\nFor example at -64 to 320, Iris is internally generating to 0 to 384, then on outputting chunks, it shifts it down by the min height (64 blocks). The default is -64 to 320. \n\nThe fluid height is placed at (fluid height + min height). So a fluid height of 63 would actually show up in the world at 1.") private IrisRange dimensionHeightNether = new IrisRange(-64, 320); + @Desc("Enable smart vanilla height") + private boolean smartVanillaHeight = false; @RegistryListResource(IrisBiome.class) @Desc("Keep this either undefined or empty. Setting any biome name into this will force iris to only generate the specified biome. Great for testing.") private String focus = ""; 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 50206b6d1..ce0bebd74 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 @@ -58,6 +58,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; +import java.io.FileWriter; +import java.io.IOException; import java.lang.reflect.Field; import java.util.List; import java.util.Random; @@ -82,6 +84,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun private final AtomicBoolean setup; private final boolean studio; private final AtomicInteger a = new AtomicInteger(0); + private final boolean smartVanillaHeight; private Engine engine; private Looper hotloader; private StudioMode lastMode; @@ -91,7 +94,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun private boolean initialized = false; - public BukkitChunkGenerator(IrisWorld world, boolean studio, File dataLocation, String dimensionKey) { + public BukkitChunkGenerator(IrisWorld world, boolean studio, File dataLocation, String dimensionKey, boolean smartVanillaHeight) { setup = new AtomicBoolean(false); studioGenerator = null; dummyBiomeProvider = new DummyBiomeProvider(); @@ -103,6 +106,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun this.dataLocation = dataLocation; this.dimensionKey = dimensionKey; this.folder = new ReactiveFolder(dataLocation, (_a, _b, _c) -> hotload()); + this.smartVanillaHeight = smartVanillaHeight; Bukkit.getServer().getPluginManager().registerEvents(this, Iris.instance); } @@ -181,6 +185,14 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun throw new RuntimeException("Missing Dimension: " + dimensionKey); } } + if (smartVanillaHeight) { + dimension.setSmartVanillaHeight(true); + try (FileWriter writer = new FileWriter(data.getDimensionLoader().fileFor(dimension))) { + writer.write(data.getGson().toJson(dimension)); + } catch (IOException e) { + e.printStackTrace(); + } + } lastMode = StudioMode.NORMAL; engine = new IrisEngine(new EngineTarget(world, dimension, data), studio);