mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
Support async creation
This commit is contained in:
parent
6e74761977
commit
73bd7991bb
@ -1,19 +1,28 @@
|
|||||||
package com.volmit.iris.scaffold;
|
package com.volmit.iris.scaffold;
|
||||||
|
|
||||||
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.manager.IrisDataManager;
|
import com.volmit.iris.manager.IrisDataManager;
|
||||||
import com.volmit.iris.object.IrisDimension;
|
import com.volmit.iris.object.IrisDimension;
|
||||||
import com.volmit.iris.scaffold.engine.EngineCompositeGenerator;
|
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;
|
||||||
import org.bukkit.World.Environment;
|
import org.bukkit.World.Environment;
|
||||||
import org.bukkit.WorldCreator;
|
import org.bukkit.WorldCreator;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class IrisWorldCreator
|
public class IrisWorldCreator
|
||||||
{
|
{
|
||||||
private String name;
|
private String name;
|
||||||
private boolean studio = false;
|
private boolean studio = false;
|
||||||
private String dimensionName = null;
|
private String dimensionName = null;
|
||||||
private long seed = 1337;
|
private long seed = 1337;
|
||||||
|
private boolean asyncPrepare = false;
|
||||||
|
|
||||||
public IrisWorldCreator()
|
public IrisWorldCreator()
|
||||||
{
|
{
|
||||||
@ -50,6 +59,12 @@ public class IrisWorldCreator
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IrisWorldCreator asyncPrepare()
|
||||||
|
{
|
||||||
|
this.asyncPrepare = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public IrisWorldCreator productionMode()
|
public IrisWorldCreator productionMode()
|
||||||
{
|
{
|
||||||
this.studio = false;
|
this.studio = false;
|
||||||
@ -58,7 +73,7 @@ public class IrisWorldCreator
|
|||||||
|
|
||||||
public WorldCreator create()
|
public WorldCreator create()
|
||||||
{
|
{
|
||||||
ChunkGenerator g = new EngineCompositeGenerator(dimensionName, !studio);
|
EngineCompositeGenerator g = new EngineCompositeGenerator(dimensionName, !studio);
|
||||||
|
|
||||||
return new WorldCreator(name)
|
return new WorldCreator(name)
|
||||||
.environment(findEnvironment())
|
.environment(findEnvironment())
|
||||||
@ -66,6 +81,24 @@ public class IrisWorldCreator
|
|||||||
.generator(g).seed(seed);
|
.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() {
|
private World.Environment findEnvironment() {
|
||||||
IrisDimension dim = IrisDataManager.loadAnyDimension(dimensionName);
|
IrisDimension dim = IrisDataManager.loadAnyDimension(dimensionName);
|
||||||
if(dim == null || dim.getEnvironment() == null)
|
if(dim == null || dim.getEnvironment() == null)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user