9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-31 04:46:40 +00:00
This commit is contained in:
DanLT
2021-06-23 20:09:33 -08:00
parent fa201d21e2
commit a48400535f
5 changed files with 161 additions and 217 deletions

View File

@@ -1,20 +1,10 @@
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
{
@@ -22,7 +12,6 @@ public class IrisWorldCreator
private boolean studio = false;
private String dimensionName = null;
private long seed = 1337;
private boolean asyncPrepare = false;
public IrisWorldCreator()
{
@@ -59,12 +48,6 @@ public class IrisWorldCreator
return this;
}
public IrisWorldCreator asyncPrepare()
{
this.asyncPrepare = true;
return this;
}
public IrisWorldCreator productionMode()
{
this.studio = false;
@@ -81,24 +64,6 @@ 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)

View File

@@ -77,40 +77,6 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
});
}
public void prepareSpawnAsync(long seed, String worldName, World.Environment env, int radius, Consumer<Double> progress, Runnable onComplete)
{
// TODO: WARNING HEIGHT
prepareSpawnAsync(256, seed, worldName, env, radius, progress, onComplete);
}
public void prepareSpawnAsync(int worldHeight, long seed, String worldName, World.Environment env, int radius, Consumer<Double> progress, Runnable onComplete)
{
FakeWorld world = new FakeWorld(worldHeight, seed, new File(worldName), env);
world.setWorldName(worldName);
AtomicInteger generated = new AtomicInteger();
int total = (int) Math.pow(radius * 2, 2);
MultiBurst.burst.lazy(() -> {
progress.accept(0D);
BurstExecutor burst = MultiBurst.burst.burst(total);
new Spiraler(radius * 2, radius * 2, (x, z) -> burst.queue(() -> {
try {
precache(world, x, z);
generated.getAndIncrement();
}
catch(Throwable e)
{
e.printStackTrace();
}
})).drain();
burst.complete();
System.out.println("BURSTER FINISHED TOTAL IS " + total + " OF GENNED " + generated.get());
J.sleep(5000);
progress.accept(1D);
onComplete.run();
});
}
public void hotload()
{
if(isStudio())
@@ -318,7 +284,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
return dim;
}
private synchronized void initialize(World world) {
public synchronized void initialize(World world) {
if (initialized.get()) {
return;
}
@@ -353,6 +319,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
@NotNull
@Override
public ChunkData generateChunkData(@NotNull World world, @NotNull Random ignored, int x, int z, @NotNull BiomeGrid biome) {
long key = Cache.key(x, z);
TerrainChunk tc = TerrainChunk.create(world, biome);
generateChunkRawData(world, x, z, tc).run();
return tc.getRaw();
@@ -370,9 +337,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
for(int j = 0; j < 32; j++)
{
int jj = j;
e.queue(() -> {
directWriteChunk(w, ii + mcaox, jj + mcaoz, writer);
});
e.queue(() -> directWriteChunk(w, ii + mcaox, jj + mcaoz, writer));
}
}