mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 10:12:53 +00:00
Support async creation
This commit is contained in:
parent
6e74761977
commit
73bd7991bb
@ -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<WorldCreator> 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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user