From c9ed4519a8d94a1722836e0edb915a110fbe8d25 Mon Sep 17 00:00:00 2001 From: Julian Krings <47589149+CrazyDev05@users.noreply.github.com> Date: Sun, 6 Jul 2025 20:00:06 +0200 Subject: [PATCH] remove multiverse core incompatibility warning (#1212) --- build.gradle.kts | 1 + core/build.gradle.kts | 1 + core/src/main/java/com/volmit/iris/Iris.java | 13 -- .../iris/core/link/MultiverseCoreLink.java | 144 +++++------------- .../iris/core/safeguard/ServerBootSFG.java | 2 - .../volmit/iris/core/tools/IrisCreator.java | 4 +- 6 files changed, 44 insertions(+), 121 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 2fc7ed8b5..5681a8cf4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -194,6 +194,7 @@ allprojects { maven("https://hub.jeff-media.com/nexus/repository/jeff-media-public/") maven("https://repo.nexomc.com/releases/") maven("https://nexus.phoenixdevt.fr/repository/maven-public/") + maven("https://repo.onarandombox.com/content/groups/public/") } dependencies { diff --git a/core/build.gradle.kts b/core/build.gradle.kts index e2facc0dc..17158627f 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -59,6 +59,7 @@ dependencies { compileOnly("me.kryniowesegryderiusz:kgenerators-core:7.3") { isTransitive = false } + compileOnly("org.mvplugins.multiverse.core:multiverse-core:5.1.0") //implementation files("libs/CustomItems.jar") // Shaded diff --git a/core/src/main/java/com/volmit/iris/Iris.java b/core/src/main/java/com/volmit/iris/Iris.java index a47b6c617..7904a6f20 100644 --- a/core/src/main/java/com/volmit/iris/Iris.java +++ b/core/src/main/java/com/volmit/iris/Iris.java @@ -38,7 +38,6 @@ import com.volmit.iris.engine.object.IrisCompat; import com.volmit.iris.engine.object.IrisDimension; import com.volmit.iris.engine.object.IrisWorld; import com.volmit.iris.engine.platform.BukkitChunkGenerator; -import com.volmit.iris.engine.platform.DummyChunkGenerator; import com.volmit.iris.core.safeguard.IrisSafeguard; import com.volmit.iris.core.safeguard.UtilsSFG; import com.volmit.iris.engine.platform.PlatformChunkGenerator; @@ -756,18 +755,6 @@ public class Iris extends VolmitPlugin implements Listener { @Override public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) { Iris.debug("Default World Generator Called for " + worldName + " using ID: " + id); - if (worldName.equals("test")) { - try { - throw new RuntimeException(); - } catch (Throwable e) { - Iris.info(e.getStackTrace()[1].getClassName()); - if (e.getStackTrace()[1].getClassName().contains("com.onarandombox.MultiverseCore")) { - Iris.debug("MVC Test detected, Quick! Send them the dummy!"); - return new DummyChunkGenerator(); - } - } - } - if (id == null || id.isEmpty()) id = IrisSettings.get().getGenerator().getDefaultWorldType(); Iris.debug("Generator ID: " + id + " requested by bukkit/plugin"); IrisDimension dim = loadDimension(worldName, id); diff --git a/core/src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java b/core/src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java index c483ce756..920abeb5c 100644 --- a/core/src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java +++ b/core/src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java @@ -18,126 +18,60 @@ package com.volmit.iris.core.link; -import com.volmit.iris.Iris; -import com.volmit.iris.engine.object.IrisDimension; -import com.volmit.iris.util.collection.KMap; +import lombok.SneakyThrows; import org.bukkit.Bukkit; import org.bukkit.World; -import org.bukkit.WorldType; -import org.bukkit.plugin.Plugin; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Map; +import org.mvplugins.multiverse.core.MultiverseCoreApi; +import org.mvplugins.multiverse.core.world.MultiverseWorld; +import org.mvplugins.multiverse.core.world.WorldManager; +import org.mvplugins.multiverse.core.world.options.ImportWorldOptions; public class MultiverseCoreLink { - private final KMap worldNameTypes = new KMap<>(); + private final boolean active; public MultiverseCoreLink() { - - } - - public boolean addWorld(String worldName, IrisDimension dim, String seed) { - if (!isSupported()) { - return false; - } - - try { - Plugin p = getMultiverse(); - Object mvWorldManager = p.getClass().getDeclaredMethod("getMVWorldManager").invoke(p); - Method m = mvWorldManager.getClass().getDeclaredMethod("addWorld", - - String.class, World.Environment.class, String.class, WorldType.class, Boolean.class, String.class, boolean.class); - boolean b = (boolean) m.invoke(mvWorldManager, worldName, dim.getEnvironment(), seed, WorldType.NORMAL, false, "Iris", false); - saveConfig(); - return b; - } catch (Throwable e) { - Iris.reportError(e); - e.printStackTrace(); - } - - return false; - } - - @SuppressWarnings("unchecked") - public Map getList() { - try { - Plugin p = getMultiverse(); - Object mvWorldManager = p.getClass().getDeclaredMethod("getMVWorldManager").invoke(p); - Field f = mvWorldManager.getClass().getDeclaredField("worldsFromTheConfig"); - f.setAccessible(true); - return (Map) f.get(mvWorldManager); - } catch (Throwable e) { - Iris.reportError(e); - e.printStackTrace(); - } - - return null; + active = Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null; } public void removeFromConfig(World world) { - if (!isSupported()) { - return; - } - - getList().remove(world.getName()); - saveConfig(); + removeFromConfig(world.getName()); } public void removeFromConfig(String world) { - if (!isSupported()) { - return; + if (!active) return; + var manager = worldManager(); + manager.removeWorld(world).onSuccess(manager::saveWorldsConfig); + } + + @SneakyThrows + public void updateWorld(World bukkitWorld, String pack) { + if (!active) return; + var generator = "Iris:" + pack; + var manager = worldManager(); + var world = manager.getWorld(bukkitWorld).getOrElse(() -> { + var options = ImportWorldOptions.worldName(bukkitWorld.getName()) + .generator(generator) + .environment(bukkitWorld.getEnvironment()) + .useSpawnAdjust(false); + return manager.importWorld(options).get(); + }); + + world.setAutoLoad(false); + if (!generator.equals(world.getGenerator())) { + var field = MultiverseWorld.class.getDeclaredField("worldConfig"); + field.setAccessible(true); + + var config = field.get(world); + config.getClass() + .getDeclaredMethod("setGenerator", String.class) + .invoke(config, generator); } - getList().remove(world); - saveConfig(); + manager.saveWorldsConfig(); } - public void saveConfig() { - try { - Plugin p = getMultiverse(); - Object mvWorldManager = p.getClass().getDeclaredMethod("getMVWorldManager").invoke(p); - mvWorldManager.getClass().getDeclaredMethod("saveWorldsConfig").invoke(mvWorldManager); - } catch (Throwable e) { - Iris.reportError(e); - e.printStackTrace(); - } - } - - public void assignWorldType(String worldName, String type) { - worldNameTypes.put(worldName, type); - } - - public String getWorldNameType(String worldName, String defaultType) { - try { - String t = worldNameTypes.get(worldName); - return t == null ? defaultType : t; - } catch (Throwable e) { - Iris.reportError(e); - return defaultType; - } - } - - public boolean isSupported() { - return getMultiverse() != null; - } - - public Plugin getMultiverse() { - - return Bukkit.getPluginManager().getPlugin("Multiverse-Core"); - } - - public String envName(World.Environment environment) { - if (environment == null) { - return "normal"; - } - - return switch (environment) { - case NORMAL -> "normal"; - case NETHER -> "nether"; - case THE_END -> "end"; - default -> environment.toString().toLowerCase(); - }; - + private WorldManager worldManager() { + var api = MultiverseCoreApi.get(); + return api.getWorldManager(); } } diff --git a/core/src/main/java/com/volmit/iris/core/safeguard/ServerBootSFG.java b/core/src/main/java/com/volmit/iris/core/safeguard/ServerBootSFG.java index f3fbbd9dc..8ec35899f 100644 --- a/core/src/main/java/com/volmit/iris/core/safeguard/ServerBootSFG.java +++ b/core/src/main/java/com/volmit/iris/core/safeguard/ServerBootSFG.java @@ -49,9 +49,7 @@ public class ServerBootSFG { Plugin[] plugins = pluginManager.getPlugins(); incompatibilities.clear(); - incompatibilities.put("Multiverse-Core", false); incompatibilities.put("dynmap", false); - incompatibilities.put("TerraformGenerator", false); incompatibilities.put("Stratos", false); String pluginName; 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 ddcd5ff85..fac42b051 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 @@ -199,8 +199,10 @@ public class IrisCreator { world.get().setTime(6000); } }); - } else + } else { addToBukkitYml(); + J.s(() -> Iris.linkMultiverseCore.updateWorld(world.get(), dimension)); + } if (pregen != null) { CompletableFuture ff = new CompletableFuture<>();