mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-12-31 04:46:40 +00:00
tweaks
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user