mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-01 23:47:21 +00:00
update MultiverseCoreLink
This commit is contained in:
parent
97ddfd309b
commit
2c9606ec73
@ -36,6 +36,7 @@ compileJava {
|
|||||||
repositories {
|
repositories {
|
||||||
maven { url 'https://nexus.phoenixdevt.fr/repository/maven-public/'}
|
maven { url 'https://nexus.phoenixdevt.fr/repository/maven-public/'}
|
||||||
maven { url 'https://repo.auxilor.io/repository/maven-public/' }
|
maven { url 'https://repo.auxilor.io/repository/maven-public/' }
|
||||||
|
maven { url = "https://repo.onarandombox.com/content/groups/public/" }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -68,6 +69,7 @@ dependencies {
|
|||||||
compileOnly 'com.github.Ssomar-Developement:SCore:4.23.10.8'
|
compileOnly 'com.github.Ssomar-Developement:SCore:4.23.10.8'
|
||||||
compileOnly 'net.Indyuce:MMOItems-API:6.9.5-SNAPSHOT'
|
compileOnly 'net.Indyuce:MMOItems-API:6.9.5-SNAPSHOT'
|
||||||
compileOnly 'com.willfp:EcoItems:5.44.0'
|
compileOnly 'com.willfp:EcoItems:5.44.0'
|
||||||
|
compileOnly 'org.mvplugins.multiverse.core:multiverse-core:5.0.0-SNAPSHOT'
|
||||||
//implementation files('libs/CustomItems.jar')
|
//implementation files('libs/CustomItems.jar')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,14 +32,12 @@ import com.volmit.iris.core.nms.v1X.NMSBinding1X;
|
|||||||
import com.volmit.iris.core.pregenerator.LazyPregenerator;
|
import com.volmit.iris.core.pregenerator.LazyPregenerator;
|
||||||
import com.volmit.iris.core.service.StudioSVC;
|
import com.volmit.iris.core.service.StudioSVC;
|
||||||
import com.volmit.iris.core.tools.IrisToolbelt;
|
import com.volmit.iris.core.tools.IrisToolbelt;
|
||||||
import com.volmit.iris.core.tools.IrisWorldCreator;
|
|
||||||
import com.volmit.iris.engine.EnginePanic;
|
import com.volmit.iris.engine.EnginePanic;
|
||||||
import com.volmit.iris.engine.object.IrisCompat;
|
import com.volmit.iris.engine.object.IrisCompat;
|
||||||
import com.volmit.iris.engine.object.IrisContextInjector;
|
import com.volmit.iris.engine.object.IrisContextInjector;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.IrisDimension;
|
||||||
import com.volmit.iris.engine.object.IrisWorld;
|
import com.volmit.iris.engine.object.IrisWorld;
|
||||||
import com.volmit.iris.engine.platform.BukkitChunkGenerator;
|
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.IrisSafeguard;
|
||||||
import com.volmit.iris.core.safeguard.UtilsSFG;
|
import com.volmit.iris.core.safeguard.UtilsSFG;
|
||||||
import com.volmit.iris.engine.platform.PlatformChunkGenerator;
|
import com.volmit.iris.engine.platform.PlatformChunkGenerator;
|
||||||
@ -740,18 +738,6 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
@Override
|
@Override
|
||||||
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) {
|
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) {
|
||||||
Iris.debug("Default World Generator Called for " + worldName + " using ID: " + 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
IrisDimension dim;
|
IrisDimension dim;
|
||||||
if (id == null || id.isEmpty()) {
|
if (id == null || id.isEmpty()) {
|
||||||
dim = IrisData.loadAnyDimension(IrisSettings.get().getGenerator().getDefaultWorldType());
|
dim = IrisData.loadAnyDimension(IrisSettings.get().getGenerator().getDefaultWorldType());
|
||||||
|
@ -18,126 +18,60 @@
|
|||||||
|
|
||||||
package com.volmit.iris.core.link;
|
package com.volmit.iris.core.link;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import lombok.SneakyThrows;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
|
||||||
import com.volmit.iris.util.collection.KMap;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.WorldType;
|
import org.mvplugins.multiverse.core.MultiverseCoreApi;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.mvplugins.multiverse.core.world.MultiverseWorld;
|
||||||
|
import org.mvplugins.multiverse.core.world.WorldManager;
|
||||||
import java.lang.reflect.Field;
|
import org.mvplugins.multiverse.core.world.options.ImportWorldOptions;
|
||||||
import java.lang.reflect.Method;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class MultiverseCoreLink {
|
public class MultiverseCoreLink {
|
||||||
private final KMap<String, String> worldNameTypes = new KMap<>();
|
private final boolean active;
|
||||||
|
|
||||||
public MultiverseCoreLink() {
|
public MultiverseCoreLink() {
|
||||||
|
active = Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null;
|
||||||
}
|
|
||||||
|
|
||||||
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<String, ?> getList() {
|
|
||||||
try {
|
|
||||||
Plugin p = getMultiverse();
|
|
||||||
Object mvWorldManager = p.getClass().getDeclaredMethod("getMVWorldManager").invoke(p);
|
|
||||||
Field f = mvWorldManager.getClass().getDeclaredField("worldsFromTheConfig");
|
|
||||||
f.setAccessible(true);
|
|
||||||
return (Map<String, ?>) f.get(mvWorldManager);
|
|
||||||
} catch (Throwable e) {
|
|
||||||
Iris.reportError(e);
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeFromConfig(World world) {
|
public void removeFromConfig(World world) {
|
||||||
if (!isSupported()) {
|
removeFromConfig(world.getName());
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
getList().remove(world.getName());
|
|
||||||
saveConfig();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeFromConfig(String world) {
|
public void removeFromConfig(String world) {
|
||||||
if (!isSupported()) {
|
if (!active) return;
|
||||||
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);
|
manager.saveWorldsConfig();
|
||||||
saveConfig();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveConfig() {
|
private WorldManager worldManager() {
|
||||||
try {
|
var api = MultiverseCoreApi.get();
|
||||||
Plugin p = getMultiverse();
|
return api.getWorldManager();
|
||||||
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();
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,9 +45,7 @@ public class ServerBootSFG {
|
|||||||
Plugin[] plugins = pluginManager.getPlugins();
|
Plugin[] plugins = pluginManager.getPlugins();
|
||||||
|
|
||||||
incompatibilities.clear();
|
incompatibilities.clear();
|
||||||
incompatibilities.put("Multiverse-Core", false);
|
|
||||||
incompatibilities.put("dynmap", false);
|
incompatibilities.put("dynmap", false);
|
||||||
incompatibilities.put("TerraformGenerator", false);
|
|
||||||
incompatibilities.put("Stratos", false);
|
incompatibilities.put("Stratos", false);
|
||||||
|
|
||||||
String pluginName;
|
String pluginName;
|
||||||
|
@ -199,8 +199,10 @@ public class IrisCreator {
|
|||||||
world.get().setTime(6000);
|
world.get().setTime(6000);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else
|
} else {
|
||||||
addToBukkitYml();
|
addToBukkitYml();
|
||||||
|
J.s(() -> Iris.linkMultiverseCore.updateWorld(world.get(), dimension));
|
||||||
|
}
|
||||||
|
|
||||||
if (pregen != null) {
|
if (pregen != null) {
|
||||||
CompletableFuture<Boolean> ff = new CompletableFuture<>();
|
CompletableFuture<Boolean> ff = new CompletableFuture<>();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user