Iris create now uses mv create

This commit is contained in:
Daniel Mills 2021-01-03 10:25:31 -05:00
parent 2915ef885e
commit fb07b280be

View File

@ -1,6 +1,7 @@
package com.volmit.iris.manager.command; package com.volmit.iris.manager.command;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.nms.INMS; import com.volmit.iris.nms.INMS;
import com.volmit.iris.object.IrisDimension; import com.volmit.iris.object.IrisDimension;
import com.volmit.iris.pregen.Pregenerator; import com.volmit.iris.pregen.Pregenerator;
@ -33,7 +34,7 @@ public class CommandIrisCreate extends MortarCommand
{ {
if(args.length < 1) if(args.length < 1)
{ {
sender.sendMessage("/iris create <NAME> [type=overworld] [seed=1337] [pregen=5000] [-zip]"); sender.sendMessage("/iris create <NAME> [type=overworld] [seed=1337] [pregen=5000]");
return true; return true;
} }
@ -41,16 +42,7 @@ public class CommandIrisCreate extends MortarCommand
String type = "overworld"; String type = "overworld";
long seed = 1337; long seed = 1337;
int pregen = 0; int pregen = 0;
File folder = new File(worldName); boolean multiverse = Iris.linkMultiverseCore.supported();
if(folder.exists())
{
sender.sendMessage("That world folder already exists!");
return true;
}
File iris = new File(folder, "iris");
iris.mkdirs();
for(String i : args) for(String i : args)
{ {
@ -59,42 +51,71 @@ public class CommandIrisCreate extends MortarCommand
pregen = i.startsWith("pregen=") ? Integer.parseInt(i.split("\\Q=\\E")[1]) : pregen; pregen = i.startsWith("pregen=") ? Integer.parseInt(i.split("\\Q=\\E")[1]) : pregen;
} }
IrisDimension dim = Iris.proj.installIntoWorld(sender, type, folder); Iris.linkMultiverseCore.assignWorldType(worldName, type);
World world = null;
WorldCreator wc = new IrisWorldCreator().dimension(dim).name(worldName) IrisDimension dim;
.productionMode().seed(seed).create(); File folder = new File(worldName);
sender.sendMessage("Generating with " + Iris.getThreadCount() + " threads per chunk"); if(multiverse)
O<Boolean> done = new O<Boolean>();
done.set(false);
J.a(() ->
{ {
double last = 0; dim = IrisDataManager.loadAnyDimension(type);
int req = 800; String command = "mv create " + worldName + " " + Iris.linkMultiverseCore.envName(dim.getEnvironment());
while(!done.get()) command += " -s " + seed;
command += " -g Iris";
sender.sendMessage("Delegating " + command);
Bukkit.dispatchCommand(sender, command);
world= Bukkit.getWorld(worldName);
}
else
{
if(folder.exists())
{ {
boolean derp = false; sender.sendMessage("That world folder already exists!");
double v = (double) ((IrisAccess) wc.generator()).getGenerated() / (double) req; return true;
if(last > v || v > 1)
{
derp = true;
v = last;
}
else
{
last = v;
}
sender.sendMessage("Generating " + Form.pc(v) + (derp ? " (Waiting on Server...)" : ""));
J.sleep(3000);
} }
});
World world = INMS.get().createWorld(wc, false); File iris = new File(folder, "iris");
iris.mkdirs();
dim = Iris.proj.installIntoWorld(sender, type, folder);
WorldCreator wc = new IrisWorldCreator().dimension(dim).name(worldName)
.productionMode().seed(seed).create();
sender.sendMessage("Generating with " + Iris.getThreadCount() + " threads per chunk");
O<Boolean> done = new O<Boolean>();
done.set(false);
J.a(() ->
{
double last = 0;
int req = 800;
while(!done.get())
{
boolean derp = false;
double v = (double) ((IrisAccess) wc.generator()).getGenerated() / (double) req;
if(last > v || v > 1)
{
derp = true;
v = last;
}
else
{
last = v;
}
sender.sendMessage("Generating " + Form.pc(v) + (derp ? " (Waiting on Server...)" : ""));
J.sleep(3000);
}
});
world = INMS.get().createWorld(wc, false);
done.set(true);
}
done.set(true);
sender.sendMessage(worldName + " Spawn Area generated."); sender.sendMessage(worldName + " Spawn Area generated.");
O<Boolean> b = new O<Boolean>(); O<Boolean> b = new O<Boolean>();
@ -104,7 +125,7 @@ public class CommandIrisCreate extends MortarCommand
{ {
b.set(false); b.set(false);
sender.sendMessage("Pregenerating " + worldName + " " + pregen + " x " + pregen); sender.sendMessage("Pregenerating " + worldName + " " + pregen + " x " + pregen);
sender.sendMessage("Expect Extreme server lag during this time. Use '/iris world pregen stop' to cancel"); sender.sendMessage("Expect server lag during this time. Use '/iris pregen stop' to cancel");
new Pregenerator(world, pregen, () -> new Pregenerator(world, pregen, () ->
{ {
@ -114,13 +135,7 @@ public class CommandIrisCreate extends MortarCommand
IrisDimension dimm = dim; IrisDimension dimm = dim;
long seedd = seed; long seedd = seed;
World ww = world;
if(Iris.linkMultiverseCore.supported())
{
Iris.linkMultiverseCore.addWorld(worldName, dimm, seedd + "");
sender.sendMessage("Added " + worldName + " to MultiverseCore.");
}
J.a(() -> J.a(() ->
{ {
while(!b.get()) while(!b.get())
@ -128,9 +143,10 @@ public class CommandIrisCreate extends MortarCommand
J.sleep(1000); J.sleep(1000);
} }
Bukkit.getScheduler().scheduleSyncDelayedTask(Iris.instance, () -> Bukkit.getScheduler().scheduleSyncDelayedTask(Iris.instance, () ->
{ {
world.save(); ww.save();
sender.sendMessage("All Done!"); sender.sendMessage("All Done!");
}); });
}); });
@ -141,6 +157,6 @@ public class CommandIrisCreate extends MortarCommand
@Override @Override
protected String getArgsUsage() protected String getArgsUsage()
{ {
return "<name> [type=overworld] [seed=1337] [pregen=5000] [-zip]"; return "<name> [type=overworld] [seed=1337] [pregen=5000]";
} }
} }