From 6b2ba74237164e9ac0eae224d1eda1e9af90139f Mon Sep 17 00:00:00 2001 From: RePixelatedMC <107539181+RePixelatedMC@users.noreply.github.com> Date: Wed, 22 May 2024 13:28:56 +0200 Subject: [PATCH] Iris lets the user ingame know when unstable. --- .../com/volmit/iris/core/IrisSettings.java | 8 +++++- .../iris/core/commands/CommandDeveloper.java | 3 ++- .../iris/core/commands/CommandIris.java | 19 +------------ .../iris/core/safeguard/IrisSafeguard.java | 6 ++++- .../volmit/iris/core/safeguard/ModesSFG.java | 2 +- .../iris/core/safeguard/PerformanceSFG.java | 8 ------ .../safeguard/handler/onCommandWarning.java | 27 +++++++++++++++++++ .../iris/core/tools/IrisPackBenchmarking.java | 5 ++-- 8 files changed, 46 insertions(+), 32 deletions(-) delete mode 100644 core/src/main/java/com/volmit/iris/core/safeguard/PerformanceSFG.java create mode 100644 core/src/main/java/com/volmit/iris/core/safeguard/handler/onCommandWarning.java 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 a736407a4..de38220fb 100644 --- a/core/src/main/java/com/volmit/iris/core/IrisSettings.java +++ b/core/src/main/java/com/volmit/iris/core/IrisSettings.java @@ -34,6 +34,7 @@ import java.io.IOException; @Data public class IrisSettings { public static IrisSettings settings; + private IrisSafeGuard safeguard = new IrisSafeGuard(); private IrisSettingsGeneral general = new IrisSettingsGeneral(); private IrisSettingsWorld world = new IrisSettingsWorld(); private IrisSettingsGUI gui = new IrisSettingsGUI(); @@ -103,6 +104,12 @@ public class IrisSettings { } } + @Data + public static class IrisSafeGuard { + public boolean ignoreBootMode = false; + public boolean userUnstableWarning = true; + } + @Data public static class IrisSettingsAutoconfiguration { public boolean configureSpigotTimeoutTime = true; @@ -147,7 +154,6 @@ public class IrisSettings { @Data public static class IrisSettingsGeneral { - public boolean ignoreBootMode = false; public boolean commandSounds = true; public boolean debug = false; public boolean disableNMS = false; diff --git a/core/src/main/java/com/volmit/iris/core/commands/CommandDeveloper.java b/core/src/main/java/com/volmit/iris/core/commands/CommandDeveloper.java index 6dac2f2fa..7f6a0786f 100644 --- a/core/src/main/java/com/volmit/iris/core/commands/CommandDeveloper.java +++ b/core/src/main/java/com/volmit/iris/core/commands/CommandDeveloper.java @@ -153,13 +153,14 @@ public class CommandDeveloper implements DecreeExecutor { public void packBenchmark( @Param(description = "The pack to bench", aliases = {"pack"}) IrisDimension dimension, - @Param(description = "Headless", defaultValue = "false") + @Param(description = "Headless", defaultValue = "true") boolean headless, @Param(description = "GUI", defaultValue = "false") boolean gui ) { Iris.info("test"); IrisPackBenchmarking benchmark = new IrisPackBenchmarking(dimension, 1, headless, gui); + benchmark.runBenchmark(); } 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 7b7a24ea7..364761424 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 @@ -98,24 +98,7 @@ public class CommandIris implements DecreeExecutor { @Param(description = "If it should convert the dimension to match the vanilla height system.", defaultValue = "false") boolean vanillaheight ) { - if(sender() instanceof Player) { - if (incompatibilities.get("Multiverse-Core")) { - sender().sendMessage(C.RED + "Your server has an incompatibility that may corrupt all worlds on the server if not handled properly."); - sender().sendMessage(C.RED + "it is strongly advised for you to take action. see log for full detail"); - sender().sendMessage(C.RED + "----------------------------------------------------------------"); - sender().sendMessage(C.RED + "Command ran: /iris create"); - sender().sendMessage(C.RED + UtilsSFG.MSGIncompatibleWarnings()); - sender().sendMessage(C.RED + "----------------------------------------------------------------"); - } - if (IrisSafeguard.instance.unstablemode && !incompatibilities.get("Multiverse-Core")) { - sender().sendMessage(C.RED + "Your server is experiencing an incompatibility with the Iris plugin."); - sender().sendMessage(C.RED + "Please rectify this problem to avoid further complications."); - sender().sendMessage(C.RED + "----------------------------------------------------------------"); - sender().sendMessage(C.RED + "Command ran: /iris create"); - sender().sendMessage(C.RED + UtilsSFG.MSGIncompatibleWarnings()); - sender().sendMessage(C.RED + "----------------------------------------------------------------"); - } - } + if (name.equals("iris")) { sender().sendMessage(C.RED + "You cannot use the world name \"iris\" for creating worlds as Iris uses this directory for studio worlds."); sender().sendMessage(C.RED + "May we suggest the name \"IrisWorld\" instead?"); diff --git a/core/src/main/java/com/volmit/iris/core/safeguard/IrisSafeguard.java b/core/src/main/java/com/volmit/iris/core/safeguard/IrisSafeguard.java index 88f773778..14a1a66bc 100644 --- a/core/src/main/java/com/volmit/iris/core/safeguard/IrisSafeguard.java +++ b/core/src/main/java/com/volmit/iris/core/safeguard/IrisSafeguard.java @@ -3,11 +3,14 @@ package com.volmit.iris.core.safeguard; import com.volmit.iris.Iris; import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.nms.INMS; +import com.volmit.iris.core.safeguard.handler.onCommandWarning; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.format.C; import com.volmit.iris.util.format.Form; import com.volmit.iris.util.misc.getHardware; +import static org.bukkit.Bukkit.getServer; + public class IrisSafeguard { public static IrisSafeguard instance; public boolean acceptUnstable = false; @@ -20,7 +23,8 @@ public class IrisSafeguard { } public void IrisSafeguardSystem() { - acceptUnstable = IrisSettings.get().getGeneral().ignoreBootMode; + acceptUnstable = IrisSettings.get().getSafeguard().ignoreBootMode; + getServer().getPluginManager().registerEvents(new onCommandWarning(), Iris.instance); Iris.info("Enabled Iris SafeGuard"); ServerBootSFG.BootCheck(); } diff --git a/core/src/main/java/com/volmit/iris/core/safeguard/ModesSFG.java b/core/src/main/java/com/volmit/iris/core/safeguard/ModesSFG.java index 5feb5868c..127d560f8 100644 --- a/core/src/main/java/com/volmit/iris/core/safeguard/ModesSFG.java +++ b/core/src/main/java/com/volmit/iris/core/safeguard/ModesSFG.java @@ -46,7 +46,7 @@ public class ModesSFG { Iris.info(C.DARK_RED + "ATTENTION: " + C.RED + "While running Iris in unstable mode, you won't be eligible for support."); Iris.info(C.DARK_RED + "CAUSE: " + C.RED + UtilsSFG.MSGIncompatibleWarnings()); - if (IrisSettings.get().getGeneral().ignoreBootMode) { + if (IrisSettings.get().getSafeguard().ignoreBootMode) { Iris.info(C.DARK_RED + "Boot Unstable is set to true, continuing with the startup process."); } else { Iris.info(C.DARK_RED + "Go to plugins/iris/settings.json and set ignoreBootMode to true if you wish to proceed."); diff --git a/core/src/main/java/com/volmit/iris/core/safeguard/PerformanceSFG.java b/core/src/main/java/com/volmit/iris/core/safeguard/PerformanceSFG.java deleted file mode 100644 index 90aab8cf5..000000000 --- a/core/src/main/java/com/volmit/iris/core/safeguard/PerformanceSFG.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.volmit.iris.core.safeguard; - -public class PerformanceSFG { - public static void calculatePerformance() { - - - } -} diff --git a/core/src/main/java/com/volmit/iris/core/safeguard/handler/onCommandWarning.java b/core/src/main/java/com/volmit/iris/core/safeguard/handler/onCommandWarning.java new file mode 100644 index 000000000..95d74328a --- /dev/null +++ b/core/src/main/java/com/volmit/iris/core/safeguard/handler/onCommandWarning.java @@ -0,0 +1,27 @@ +package com.volmit.iris.core.safeguard.handler; + +import com.volmit.iris.core.IrisSettings; +import com.volmit.iris.core.safeguard.IrisSafeguard; +import com.volmit.iris.util.format.C; +import com.volmit.iris.util.plugin.VolmitSender; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +public class onCommandWarning implements Listener { + @EventHandler + public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { + if (IrisSettings.get().getSafeguard().userUnstableWarning && IrisSafeguard.instance.unstablemode) { + String command = event.getMessage(); + Player player = event.getPlayer(); + if (command.startsWith("/iris")) { + VolmitSender sender = new VolmitSender(player); + boolean perm = sender.hasPermission("iris.all") || sender.isOp(); + if (perm) { + sender.sendMessage(C.DARK_GRAY + "[" + C.RED + "!" + C.DARK_GRAY+ "]" + C.DARK_RED + "Iris is running unstably! Please resolve this."); + } + } + } + } +} diff --git a/core/src/main/java/com/volmit/iris/core/tools/IrisPackBenchmarking.java b/core/src/main/java/com/volmit/iris/core/tools/IrisPackBenchmarking.java index f473d1f4a..180109b70 100644 --- a/core/src/main/java/com/volmit/iris/core/tools/IrisPackBenchmarking.java +++ b/core/src/main/java/com/volmit/iris/core/tools/IrisPackBenchmarking.java @@ -56,10 +56,9 @@ public class IrisPackBenchmarking { this.radius = r; this.headless = headless; this.gui = gui; - runBenchmark(); } - private void runBenchmark() { + public void runBenchmark() { this.stopwatch = new PrecisionStopwatch(); ExecutorService service = Executors.newSingleThreadExecutor(); service.submit(() -> { @@ -138,6 +137,7 @@ public class IrisPackBenchmarking { private Engine createBenchmark(){ try { if (headless) { + Iris.info("Using headless benchmark!"); IrisWorld world = IrisWorld.builder() .name("benchmark") .minHeight(IrisDimension.getMinHeight()) @@ -154,6 +154,7 @@ public class IrisPackBenchmarking { var dim = data.getDimensionLoader().load(IrisDimension.getLoadKey()); return new IrisEngine(new EngineTarget(world, dim, data), false); } + Iris.info("Using Standard benchmark!"); return IrisToolbelt.access(IrisToolbelt.createWorld() .dimension(IrisDimension.getLoadKey()) .name("benchmark")