mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-19 10:43:14 +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 WandManager wand;
|
||||||
public static StructureManager struct;
|
public static StructureManager struct;
|
||||||
public static IrisBoardManager board;
|
public static IrisBoardManager board;
|
||||||
|
public static MultiverseCoreLink linkMultiverseCore;
|
||||||
private static IrisLock lock = new IrisLock("Iris");
|
private static IrisLock lock = new IrisLock("Iris");
|
||||||
|
|
||||||
@Permission
|
@Permission
|
||||||
@ -84,6 +85,7 @@ public class Iris extends MortarPlugin
|
|||||||
struct = new StructureManager();
|
struct = new StructureManager();
|
||||||
proj = new ProjectManager();
|
proj = new ProjectManager();
|
||||||
board = new IrisBoardManager();
|
board = new IrisBoardManager();
|
||||||
|
linkMultiverseCore = new MultiverseCoreLink();
|
||||||
J.a(() -> IO.delete(getTemp()));
|
J.a(() -> IO.delete(getTemp()));
|
||||||
super.onEnable();
|
super.onEnable();
|
||||||
}
|
}
|
||||||
|
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()));
|
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);
|
done.set(true);
|
||||||
sender.sendMessage("Generating 100%");
|
sender.sendMessage("Generating 100%");
|
||||||
|
|
||||||
@ -385,6 +387,7 @@ public class ProjectManager
|
|||||||
{
|
{
|
||||||
currentProject.close();
|
currentProject.close();
|
||||||
File folder = currentProject.getWorld().getWorldFolder();
|
File folder = currentProject.getWorld().getWorldFolder();
|
||||||
|
Iris.linkMultiverseCore.removeFromConfig(currentProject.getWorld());
|
||||||
Bukkit.unloadWorld(currentProject.getWorld(), false);
|
Bukkit.unloadWorld(currentProject.getWorld(), false);
|
||||||
currentProject = null;
|
currentProject = null;
|
||||||
Iris.globaldata.dump();
|
Iris.globaldata.dump();
|
||||||
|
@ -38,7 +38,6 @@ public class CommandIrisCreate extends MortarCommand
|
|||||||
String type = "overworld";
|
String type = "overworld";
|
||||||
long seed = 1337;
|
long seed = 1337;
|
||||||
int pregen = 0;
|
int pregen = 0;
|
||||||
boolean zip = false;
|
|
||||||
File folder = new File(worldName);
|
File folder = new File(worldName);
|
||||||
|
|
||||||
if(folder.exists())
|
if(folder.exists())
|
||||||
@ -52,11 +51,6 @@ public class CommandIrisCreate extends MortarCommand
|
|||||||
|
|
||||||
for(String i : args)
|
for(String i : args)
|
||||||
{
|
{
|
||||||
if(i.equals("-zip"))
|
|
||||||
{
|
|
||||||
zip = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
type = i.startsWith("type=") ? i.split("\\Q=\\E")[1] : type;
|
type = i.startsWith("type=") ? i.split("\\Q=\\E")[1] : type;
|
||||||
seed = i.startsWith("seed=") ? Long.valueOf(i.split("\\Q=\\E")[1]) : seed;
|
seed = i.startsWith("seed=") ? Long.valueOf(i.split("\\Q=\\E")[1]) : seed;
|
||||||
pregen = i.startsWith("pregen=") ? Integer.parseInt(i.split("\\Q=\\E")[1]) : pregen;
|
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(() ->
|
J.a(() ->
|
||||||
{
|
{
|
||||||
@ -185,11 +180,15 @@ public class CommandIrisCreate extends MortarCommand
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(zipp)
|
if(Iris.linkMultiverseCore.supported())
|
||||||
{
|
{
|
||||||
sender.sendMessage("Zipping up world");
|
Iris.linkMultiverseCore.addWorld(worldName, dimm, seedd + "");
|
||||||
ZipUtil.pack(folder, new File("" + folder.getName() + ".zip"), 9);
|
sender.sendMessage("Added " + worldName + " to MultiverseCore.");
|
||||||
sender.sendMessage("Zipped to " + folder.getName() + ".zip");
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sender.sendMessage("No MVC?");
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage("All Done!");
|
sender.sendMessage("All Done!");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user