diff --git a/src/main/java/com/volmit/iris/scaffold/IrisWorldCreator.java b/src/main/java/com/volmit/iris/scaffold/IrisWorldCreator.java index aac7f1566..44cdc47b2 100644 --- a/src/main/java/com/volmit/iris/scaffold/IrisWorldCreator.java +++ b/src/main/java/com/volmit/iris/scaffold/IrisWorldCreator.java @@ -1,19 +1,28 @@ package com.volmit.iris.scaffold; +import com.volmit.iris.Iris; import com.volmit.iris.manager.IrisDataManager; import com.volmit.iris.object.IrisDimension; import com.volmit.iris.scaffold.engine.EngineCompositeGenerator; +import com.volmit.iris.util.Form; +import com.volmit.iris.util.J; +import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.World.Environment; import org.bukkit.WorldCreator; +import org.bukkit.entity.Player; import org.bukkit.generator.ChunkGenerator; +import java.util.function.Consumer; +import java.util.function.Supplier; + public class IrisWorldCreator { private String name; private boolean studio = false; private String dimensionName = null; private long seed = 1337; + private boolean asyncPrepare = false; public IrisWorldCreator() { @@ -50,6 +59,12 @@ public class IrisWorldCreator return this; } + public IrisWorldCreator asyncPrepare() + { + this.asyncPrepare = true; + return this; + } + public IrisWorldCreator productionMode() { this.studio = false; @@ -58,7 +73,7 @@ public class IrisWorldCreator public WorldCreator create() { - ChunkGenerator g = new EngineCompositeGenerator(dimensionName, !studio); + EngineCompositeGenerator g = new EngineCompositeGenerator(dimensionName, !studio); return new WorldCreator(name) .environment(findEnvironment()) @@ -66,6 +81,24 @@ public class IrisWorldCreator .generator(g).seed(seed); } + public void createAsync(Consumer result) + { + EngineCompositeGenerator g = new EngineCompositeGenerator(dimensionName, !studio); + Environment env = findEnvironment(); + g.prepareSpawnAsync(seed, name, env, 16, (progresss) -> { + for(Player i : Bukkit.getOnlinePlayers()) + { + i.sendMessage("Async Prepare 32x32: " + Form.pc(progresss, 2)); + } + + }, () -> { + J.s(() -> result.accept(new WorldCreator(name) + .environment(env) + .generateStructures(true) + .generator(g).seed(seed))); + }); + } + private World.Environment findEnvironment() { IrisDimension dim = IrisDataManager.loadAnyDimension(dimensionName); if(dim == null || dim.getEnvironment() == null)