Headless generation

This commit is contained in:
Daniel Mills 2021-07-18 19:49:54 -04:00
parent 254b5c963b
commit 51f3334711
2 changed files with 43 additions and 0 deletions

View File

@ -20,6 +20,7 @@ package com.volmit.iris.engine.headless;
import com.volmit.iris.engine.data.mca.NBTWorld;
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
import com.volmit.iris.engine.parallel.MultiBurst;
import lombok.Data;
@Data
@ -27,12 +28,36 @@ public class HeadlessGenerator {
private final HeadlessWorld world;
private final EngineCompositeGenerator generator;
private final NBTWorld writer;
private final MultiBurst burst;
public HeadlessGenerator(HeadlessWorld world)
{
this.world = world;
burst = new MultiBurst("Iris Headless Generator", 9, Runtime.getRuntime().availableProcessors());
generator = new EngineCompositeGenerator(world.getDimension().getLoadKey(), true);
generator.initialize(world.getWorld());
writer = new NBTWorld(world.getWorld().worldFolder());
}
public void generateChunk(int x, int z)
{
generator.directWriteChunk(world.getWorld(), x, z, writer);
}
public void generateRegion(int x, int z)
{
generator.directWriteMCA(world.getWorld(), x, z, writer, burst);
}
public void save()
{
writer.save();
}
public void close()
{
burst.shutdownAndAwait();
generator.close();
writer.close();
}
}

View File

@ -95,4 +95,22 @@ public class MultiBurst {
public void shutdown() {
service.shutdown();
}
public void shutdownAndAwait() {
service.shutdown();
try
{
while(!service.awaitTermination(10, TimeUnit.SECONDS))
{
Iris.info("Still waiting to shutdown burster...");
}
}
catch(Throwable e)
{
e.printStackTrace();
Iris.reportError(e);
}
}
}