Prep for async prepare

This commit is contained in:
Daniel Mills 2021-06-11 16:53:13 -04:00
parent 1421869094
commit 4445121023

View File

@ -134,84 +134,86 @@ public class IrisProject
.seed(1337) .seed(1337)
.name(wfp) .name(wfp)
.studioMode() .studioMode()
.asyncPrepare()
.create(); .create();
IrisAccess gx = ((IrisAccess)c.generator()); IrisAccess gx = ((IrisAccess)c.generator());
sender.sendMessage("Generating with " + Iris.getThreadCount() + " threads per chunk"); sender.sendMessage("Generating with " + Iris.getThreadCount() + " threads per chunk");
O<Boolean> done = new O<>(); O<Boolean> done = new O<>();
done.set(false); done.set(false);
activeProvider = gx; activeProvider = gx;
J.a(() -> J.a(() ->
{ {
double last = 0; double last = 0;
int req = 300; int req = 300;
double lpc = 0; double lpc = 0;
boolean fc; boolean fc;
while(!done.get()) while(!done.get())
{ {
boolean derp = false; boolean derp = false;
assert gx != null; assert gx != null;
double v = (double) gx.getGenerated() / (double) req; double v = (double) gx.getGenerated() / (double) req;
fc = lpc != v; fc = lpc != v;
lpc = v; lpc = v;
if(last > v || v > 1) if(last > v || v > 1)
{ {
derp = true; derp = true;
v = last; v = last;
} }
else else
{ {
last = v; last = v;
} }
if(fc) if(fc)
{ {
sender.sendMessage(C.WHITE + "Generating " + Form.pc(v) + (derp ? (C.GRAY + " (Waiting on Server...)") : (C.GRAY + " (" + (req - gx.getGenerated()) + " Left)"))); sender.sendMessage(C.WHITE + "Generating " + Form.pc(v) + (derp ? (C.GRAY + " (Waiting on Server...)") : (C.GRAY + " (" + (req - gx.getGenerated()) + " Left)")));
} }
if (sender.isPlayer()){ if (sender.isPlayer()){
sender.player().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(C.BLUE + "Creating studio world. Please wait...")); sender.player().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(C.BLUE + "Creating studio world. Please wait..."));
} }
J.sleep(1500); J.sleep(1500);
if(gx.isFailing()) if(gx.isFailing())
{ {
sender.sendMessage("Generation Failed!"); sender.sendMessage("Generation Failed!");
return; return;
} }
} }
}); });
//@builder //@builder
World world = c.createWorld(); World world = c.createWorld();
Iris.linkMultiverseCore.removeFromConfig(world); Iris.linkMultiverseCore.removeFromConfig(world);
done.set(true); done.set(true);
sender.sendMessage(C.WHITE + "Generating Complete!"); sender.sendMessage(C.WHITE + "Generating Complete!");
if(sender.isPlayer()) if(sender.isPlayer())
{ {
assert world != null; assert world != null;
sender.player().teleport(world.getSpawnLocation()); sender.player().teleport(world.getSpawnLocation());
} }
Bukkit.getScheduler().scheduleSyncDelayedTask(Iris.instance, () -> Bukkit.getScheduler().scheduleSyncDelayedTask(Iris.instance, () ->
{ {
sender.sendMessage("Hotloading Active! Change any files and watch your changes appear as you load new chunks!"); sender.sendMessage("Hotloading Active! Change any files and watch your changes appear as you load new chunks!");
if(sender.isPlayer()) if(sender.isPlayer())
{ {
sender.player().setGameMode(GameMode.SPECTATOR); sender.player().setGameMode(GameMode.SPECTATOR);
} }
onDone.run();
}, 0);
onDone.run();
}, 0);
} }
public void close() public void close()