mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
Multiverse Support
This commit is contained in:
parent
ea5dd69719
commit
4a98fb6c9d
@ -43,6 +43,7 @@ public class Iris extends MortarPlugin
|
||||
public static WandManager wand;
|
||||
public static StructureManager struct;
|
||||
public static IrisBoardManager board;
|
||||
public static MultiverseCoreLink linkMultiverseCore;
|
||||
private static IrisLock lock = new IrisLock("Iris");
|
||||
|
||||
@Permission
|
||||
@ -84,10 +85,11 @@ public class Iris extends MortarPlugin
|
||||
struct = new StructureManager();
|
||||
proj = new ProjectManager();
|
||||
board = new IrisBoardManager();
|
||||
linkMultiverseCore = new MultiverseCoreLink();
|
||||
J.a(() -> IO.delete(getTemp()));
|
||||
super.onEnable();
|
||||
}
|
||||
|
||||
|
||||
public static File getTemp()
|
||||
{
|
||||
return instance.getDataFolder("cache", "temp");
|
||||
|
111
src/main/java/com/volmit/iris/MultiverseCoreLink.java
Normal file
111
src/main/java/com/volmit/iris/MultiverseCoreLink.java
Normal file
@ -0,0 +1,111 @@
|
||||
package com.volmit.iris;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.World.Environment;
|
||||
import org.bukkit.WorldType;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import com.volmit.iris.object.IrisDimension;
|
||||
|
||||
public class MultiverseCoreLink
|
||||
{
|
||||
public MultiverseCoreLink()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public boolean supported()
|
||||
{
|
||||
return getMultiverse() != null;
|
||||
}
|
||||
|
||||
public boolean addWorld(String worldName, IrisDimension dim, String seed)
|
||||
{
|
||||
if(!supported())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Plugin p = getMultiverse();
|
||||
Object mvWorldManager = p.getClass().getDeclaredMethod("getMVWorldManager").invoke(p);
|
||||
Method m = mvWorldManager.getClass().getDeclaredMethod("addWorld",
|
||||
|
||||
String.class, Environment.class, String.class, WorldType.class, Boolean.class, String.class, boolean.class);
|
||||
boolean b = (boolean) m.invoke(mvWorldManager, worldName, dim.getEnvironment(), seed, WorldType.NORMAL, dim.isVanillaStructures(), "Iris", false);
|
||||
saveConfig();
|
||||
return b;
|
||||
}
|
||||
|
||||
catch(Throwable 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)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void removeFromConfig(World world)
|
||||
{
|
||||
if(!supported())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
getList().remove(world.getName());
|
||||
saveConfig();
|
||||
}
|
||||
|
||||
public void saveConfig()
|
||||
{
|
||||
try
|
||||
{
|
||||
Plugin p = getMultiverse();
|
||||
Object mvWorldManager = p.getClass().getDeclaredMethod("getMVWorldManager").invoke(p);
|
||||
mvWorldManager.getClass().getDeclaredMethod("saveWorldsConfig").invoke(mvWorldManager);
|
||||
}
|
||||
|
||||
catch(Throwable e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public Plugin getMultiverse()
|
||||
{
|
||||
Plugin p = Bukkit.getPluginManager().getPlugin("Multiverse-Core");
|
||||
|
||||
if(p == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
}
|
@ -358,6 +358,8 @@ public class ProjectManager
|
||||
});
|
||||
|
||||
World world = Bukkit.createWorld(new WorldCreator("iris/" + UUID.randomUUID()).seed(1337).generator(gx).generateStructures(false).type(WorldType.NORMAL).environment(d.getEnvironment()));
|
||||
Iris.linkMultiverseCore.removeFromConfig(world);
|
||||
|
||||
done.set(true);
|
||||
sender.sendMessage("Generating 100%");
|
||||
|
||||
@ -385,6 +387,7 @@ public class ProjectManager
|
||||
{
|
||||
currentProject.close();
|
||||
File folder = currentProject.getWorld().getWorldFolder();
|
||||
Iris.linkMultiverseCore.removeFromConfig(currentProject.getWorld());
|
||||
Bukkit.unloadWorld(currentProject.getWorld(), false);
|
||||
currentProject = null;
|
||||
Iris.globaldata.dump();
|
||||
|
@ -38,7 +38,6 @@ public class CommandIrisCreate extends MortarCommand
|
||||
String type = "overworld";
|
||||
long seed = 1337;
|
||||
int pregen = 0;
|
||||
boolean zip = false;
|
||||
File folder = new File(worldName);
|
||||
|
||||
if(folder.exists())
|
||||
@ -52,11 +51,6 @@ public class CommandIrisCreate extends MortarCommand
|
||||
|
||||
for(String i : args)
|
||||
{
|
||||
if(i.equals("-zip"))
|
||||
{
|
||||
zip = true;
|
||||
}
|
||||
|
||||
type = i.startsWith("type=") ? i.split("\\Q=\\E")[1] : type;
|
||||
seed = i.startsWith("seed=") ? Long.valueOf(i.split("\\Q=\\E")[1]) : seed;
|
||||
pregen = i.startsWith("pregen=") ? Integer.parseInt(i.split("\\Q=\\E")[1]) : pregen;
|
||||
@ -161,7 +155,8 @@ public class CommandIrisCreate extends MortarCommand
|
||||
});
|
||||
}
|
||||
|
||||
boolean zipp = zip;
|
||||
IrisDimension dimm = dim;
|
||||
long seedd = seed;
|
||||
|
||||
J.a(() ->
|
||||
{
|
||||
@ -185,11 +180,15 @@ public class CommandIrisCreate extends MortarCommand
|
||||
return;
|
||||
}
|
||||
|
||||
if(zipp)
|
||||
if(Iris.linkMultiverseCore.supported())
|
||||
{
|
||||
sender.sendMessage("Zipping up world");
|
||||
ZipUtil.pack(folder, new File("" + folder.getName() + ".zip"), 9);
|
||||
sender.sendMessage("Zipped to " + folder.getName() + ".zip");
|
||||
Iris.linkMultiverseCore.addWorld(worldName, dimm, seedd + "");
|
||||
sender.sendMessage("Added " + worldName + " to MultiverseCore.");
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
sender.sendMessage("No MVC?");
|
||||
}
|
||||
|
||||
sender.sendMessage("All Done!");
|
||||
|
Loading…
x
Reference in New Issue
Block a user