mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
Headless generation
This commit is contained in:
parent
254b5c963b
commit
51f3334711
@ -20,6 +20,7 @@ package com.volmit.iris.engine.headless;
|
|||||||
|
|
||||||
import com.volmit.iris.engine.data.mca.NBTWorld;
|
import com.volmit.iris.engine.data.mca.NBTWorld;
|
||||||
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
|
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
|
||||||
|
import com.volmit.iris.engine.parallel.MultiBurst;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ -27,12 +28,36 @@ public class HeadlessGenerator {
|
|||||||
private final HeadlessWorld world;
|
private final HeadlessWorld world;
|
||||||
private final EngineCompositeGenerator generator;
|
private final EngineCompositeGenerator generator;
|
||||||
private final NBTWorld writer;
|
private final NBTWorld writer;
|
||||||
|
private final MultiBurst burst;
|
||||||
|
|
||||||
public HeadlessGenerator(HeadlessWorld world)
|
public HeadlessGenerator(HeadlessWorld world)
|
||||||
{
|
{
|
||||||
this.world = world;
|
this.world = world;
|
||||||
|
burst = new MultiBurst("Iris Headless Generator", 9, Runtime.getRuntime().availableProcessors());
|
||||||
generator = new EngineCompositeGenerator(world.getDimension().getLoadKey(), true);
|
generator = new EngineCompositeGenerator(world.getDimension().getLoadKey(), true);
|
||||||
generator.initialize(world.getWorld());
|
generator.initialize(world.getWorld());
|
||||||
writer = new NBTWorld(world.getWorld().worldFolder());
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,4 +95,22 @@ public class MultiBurst {
|
|||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
service.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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user