From 0497045388556027290a50c13445a38f9540cb99 Mon Sep 17 00:00:00 2001 From: RePixelatedMC Date: Tue, 13 Feb 2024 08:51:48 +0100 Subject: [PATCH] - Fixed /Iris height when ran in console - Added Dynamic worldHeight --- .../com/volmit/iris/core/IrisSettings.java | 3 +- .../volmit/iris/core/ServerConfigurator.java | 27 +++++++++++++- .../iris/core/commands/CommandIris.java | 37 +++++++------------ .../iris/engine/object/IrisDimension.java | 7 +++- .../com/volmit/iris/util/plugin/Command.java | 3 ++ 5 files changed, 50 insertions(+), 27 deletions(-) diff --git a/core/src/main/java/com/volmit/iris/core/IrisSettings.java b/core/src/main/java/com/volmit/iris/core/IrisSettings.java index ea17736ab..335207de5 100644 --- a/core/src/main/java/com/volmit/iris/core/IrisSettings.java +++ b/core/src/main/java/com/volmit/iris/core/IrisSettings.java @@ -24,6 +24,7 @@ import com.volmit.iris.util.io.IO; import com.volmit.iris.util.json.JSONException; import com.volmit.iris.util.json.JSONObject; import com.volmit.iris.util.plugin.VolmitSender; +import com.volmit.iris.util.scheduling.ChronoLatch; import lombok.Data; import java.io.File; @@ -135,7 +136,7 @@ public class IrisSettings { @Data public static class IrisSettingsPerformance { - public boolean trimMantleInStudio = false; + public boolean trimMantleInStudio = false; public int mantleKeepAlive = 30; public int cacheSize = 4_096; public int resourceLoaderCacheSize = 1_024; diff --git a/core/src/main/java/com/volmit/iris/core/ServerConfigurator.java b/core/src/main/java/com/volmit/iris/core/ServerConfigurator.java index 98a5fc7be..936b8e26a 100644 --- a/core/src/main/java/com/volmit/iris/core/ServerConfigurator.java +++ b/core/src/main/java/com/volmit/iris/core/ServerConfigurator.java @@ -24,6 +24,7 @@ import com.volmit.iris.core.nms.INMS; import com.volmit.iris.engine.object.IrisBiome; import com.volmit.iris.engine.object.IrisBiomeCustom; import com.volmit.iris.engine.object.IrisDimension; +import com.volmit.iris.engine.object.IrisRange; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.format.C; @@ -94,6 +95,30 @@ public class ServerConfigurator { public static void installDataPacks(boolean fullInstall) { Iris.info("Checking Data Packs..."); File packs = new File("plugins/Iris/packs"); + double ultimateMaxHeight = 0; + double ultimateMinHeight = 0; + if (packs.exists() && packs.isDirectory()) { + for (File pack : packs.listFiles()) { + IrisData data = IrisData.get(pack); + if (pack.isDirectory()) { + File dimensionsFolder = new File(pack, "dimensions"); + if (dimensionsFolder.exists() && dimensionsFolder.isDirectory()) { + for (File file : dimensionsFolder.listFiles()) { + if (file.isFile() && file.getName().endsWith(".json")) { + Iris.info("Found JSON File: " + file.getName() + " in " + dimensionsFolder.getPath()); + IrisDimension dim = data.getDimensionLoader().load(file.getName().split("\\Q.\\E")[0]); + if (ultimateMaxHeight < dim.getDimensionHeight().getMax()) { + ultimateMaxHeight = dim.getDimensionHeight().getMax(); + } + if (ultimateMinHeight > dim.getDimensionHeight().getMin()) { + ultimateMinHeight = dim.getDimensionHeight().getMin(); + } + } + } + } + } + } + } if (packs.exists()) { for (File i : packs.listFiles()) { @@ -113,7 +138,7 @@ public class ServerConfigurator { Iris.verbose(" Checking Dimension " + dim.getLoadFile().getPath()); for (File dpack : getDatapacksFolder()) { - dim.installDataPack(() -> data, dpack); + dim.installDataPack(() -> data, dpack, ultimateMaxHeight, ultimateMinHeight); } } } 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 3601b3f11..699aa2616 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 @@ -59,6 +59,7 @@ import static com.volmit.iris.core.service.EditSVC.deletingWorld; import static com.volmit.iris.core.tools.IrisBenchmarking.inProgress; import static com.volmit.iris.core.safeguard.IrisSafeguard.unstablemode; import static com.volmit.iris.core.safeguard.ServerBootSFG.incompatibilities; +import static org.bukkit.Bukkit.getServer; @Decree(name = "iris", aliases = {"ir", "irs"}, description = "Basic Command") public class CommandIris implements DecreeExecutor { @@ -184,7 +185,7 @@ public class CommandIris implements DecreeExecutor { } /* - /todo Fix PREGEN + /todo @Decree(description = "Benchmark a pack", origin = DecreeOrigin.CONSOLE) public void packbenchmark( @Param(description = "Dimension to benchmark") @@ -196,28 +197,16 @@ public class CommandIris implements DecreeExecutor { IrisPackBenchmarking.runBenchmark(); } */ - /* /todo Different approach this feels useless atm - @Decree(description = "Check for instabilities", origin = DecreeOrigin.CONSOLE) - public void fixunstable() throws InterruptedException { - if (unstablemode){ - sender().sendMessage(C.RED + "Incompatibilities are posted in console.."); - - Iris.info(C.RED + "Your server is experiencing an incompatibility with the Iris plugin."); - Iris.info(C.RED + "Please rectify this problem to avoid further complications."); - Iris.info(C.RED + "----------------------------------------------------------------"); - Iris.info(C.RED + "Command ran: /iris fixunstable"); - UtilsSFG.printIncompatibleWarnings(); - Iris.info(C.RED + "----------------------------------------------------------------"); - } else { - Iris.info(C.BLUE + "Iris is running stable.."); - sender().sendMessage("Iris is running stable.."); - } - } */ - @Decree(description = "Print world height information", origin = DecreeOrigin.PLAYER) public void height() { - sender().sendMessage(C.GREEN + "" + sender().player().getWorld().getMinHeight() + " to " + sender().player().getWorld().getMaxHeight()); - sender().sendMessage(C.GREEN + "Total Height: " + (sender().player().getWorld().getMaxHeight() - sender().player().getWorld().getMinHeight())); + if (sender() instanceof Player) { + sender().sendMessage(C.GREEN + "" + sender().player().getWorld().getMinHeight() + " to " + sender().player().getWorld().getMaxHeight()); + sender().sendMessage(C.GREEN + "Total Height: " + (sender().player().getWorld().getMaxHeight() - sender().player().getWorld().getMinHeight())); + } else { + World mainWorld = getServer().getWorlds().get(0); + Iris.info(C.GREEN + "" + mainWorld.getMinHeight() + " to " + mainWorld.getMaxHeight()); + Iris.info(C.GREEN + "Total Height: " + (mainWorld.getMaxHeight() - mainWorld.getMinHeight())); + } } @Decree(description = "QOL command to open a overworld studio world.", sync = true) @@ -234,7 +223,7 @@ public class CommandIris implements DecreeExecutor { boolean delete ) { if (!IrisToolbelt.isIrisWorld(world)) { - sender().sendMessage(C.RED + "This is not an Iris world. Iris worlds: " + String.join(", ", Bukkit.getServer().getWorlds().stream().filter(IrisToolbelt::isIrisWorld).map(World::getName).toList())); + sender().sendMessage(C.RED + "This is not an Iris world. Iris worlds: " + String.join(", ", getServer().getWorlds().stream().filter(IrisToolbelt::isIrisWorld).map(World::getName).toList())); return; } sender().sendMessage(C.GREEN + "Removing world: " + world.getName()); @@ -417,7 +406,7 @@ public class CommandIris implements DecreeExecutor { World world ) { if (!IrisToolbelt.isIrisWorld(world)) { - sender().sendMessage(C.RED + "This is not an Iris world. Iris worlds: " + String.join(", ", Bukkit.getServer().getWorlds().stream().filter(IrisToolbelt::isIrisWorld).map(World::getName).toList())); + sender().sendMessage(C.RED + "This is not an Iris world. Iris worlds: " + String.join(", ", getServer().getWorlds().stream().filter(IrisToolbelt::isIrisWorld).map(World::getName).toList())); return; } sender().sendMessage(C.GREEN + "Unloading world: " + world.getName()); @@ -492,7 +481,7 @@ public class CommandIris implements DecreeExecutor { World world ) { if (!IrisToolbelt.isIrisWorld(world)) { - sender().sendMessage(C.RED + "This is not an Iris world. Iris worlds: " + String.join(", ", Bukkit.getServer().getWorlds().stream().filter(IrisToolbelt::isIrisWorld).map(World::getName).toList())); + sender().sendMessage(C.RED + "This is not an Iris world. Iris worlds: " + String.join(", ", getServer().getWorlds().stream().filter(IrisToolbelt::isIrisWorld).map(World::getName).toList())); return; } sender().sendMessage(C.GREEN + "Evacuating world" + world.getName()); 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 bb1cf5cf1..488171296 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 @@ -22,9 +22,11 @@ import com.volmit.iris.Iris; import com.volmit.iris.core.loader.IrisData; import com.volmit.iris.core.loader.IrisRegistrant; import com.volmit.iris.engine.data.cache.AtomicCache; +import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.object.annotations.*; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.data.DataProvider; +import com.volmit.iris.util.data.Dimension; import com.volmit.iris.util.io.IO; import com.volmit.iris.util.json.JSONObject; import com.volmit.iris.util.math.Position2; @@ -40,6 +42,7 @@ import org.bukkit.Material; import org.bukkit.World.Environment; import org.bukkit.block.data.BlockData; +import java.io.DataInput; import java.io.File; import java.io.IOException; @@ -439,7 +442,7 @@ public class IrisDimension extends IrisRegistrant { return landBiomeStyle; } - public boolean installDataPack(DataProvider data, File datapacks) { + public boolean installDataPack(DataProvider data, File datapacks, double ultimateMaxHeight, double ultimateMinHeight) { boolean write = false; boolean changed = false; @@ -470,6 +473,8 @@ public class IrisDimension extends IrisRegistrant { if (!dimensionHeight.equals(new IrisRange(-64, 320)) && this.name.equalsIgnoreCase("overworld")) { Iris.verbose(" Installing Data Pack Dimension Types: \"minecraft:overworld\", \"minecraft:the_nether\", \"minecraft:the_end\""); + dimensionHeight.setMax(ultimateMaxHeight); + dimensionHeight.setMin(ultimateMinHeight); changed = writeDimensionType(changed, datapacks); } diff --git a/core/src/main/java/com/volmit/iris/util/plugin/Command.java b/core/src/main/java/com/volmit/iris/util/plugin/Command.java index bd9cd546c..c223c84b4 100644 --- a/core/src/main/java/com/volmit/iris/util/plugin/Command.java +++ b/core/src/main/java/com/volmit/iris/util/plugin/Command.java @@ -18,6 +18,8 @@ package com.volmit.iris.util.plugin; +import com.volmit.iris.util.format.C; + import java.lang.annotation.Retention; import java.lang.annotation.Target; @@ -28,4 +30,5 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Target(FIELD) public @interface Command { String value() default ""; + }