mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-06-17 22:32:04 +00:00
Engine tweaks for multi-stage ease of use
This commit is contained in:
@@ -93,12 +93,6 @@ public class IrisEngine implements Engine {
|
|||||||
private double maxBiomeLayerDensity;
|
private double maxBiomeLayerDensity;
|
||||||
private double maxBiomeDecoratorDensity;
|
private double maxBiomeDecoratorDensity;
|
||||||
private IrisComplex complex;
|
private IrisComplex complex;
|
||||||
private EngineActuator<BlockData> terrainActuator;
|
|
||||||
private EngineActuator<BlockData> decorantActuator;
|
|
||||||
private EngineActuator<Biome> biomeActuator;
|
|
||||||
private EngineModifier<BlockData> depositModifier;
|
|
||||||
private EngineModifier<BlockData> caveModifier;
|
|
||||||
private EngineModifier<BlockData> postModifier;
|
|
||||||
private final AtomicCache<IrisEngineData> engineData = new AtomicCache<>();
|
private final AtomicCache<IrisEngineData> engineData = new AtomicCache<>();
|
||||||
private final AtomicBoolean cleaning;
|
private final AtomicBoolean cleaning;
|
||||||
private final ChronoLatch cleanLatch;
|
private final ChronoLatch cleanLatch;
|
||||||
@@ -159,12 +153,8 @@ public class IrisEngine implements Engine {
|
|||||||
worldManager.close();
|
worldManager.close();
|
||||||
complex.close();
|
complex.close();
|
||||||
execution.close();
|
execution.close();
|
||||||
terrainActuator.close();
|
stages.forEach(EngineStage::close);
|
||||||
decorantActuator.close();
|
stages.clear();
|
||||||
biomeActuator.close();
|
|
||||||
depositModifier.close();
|
|
||||||
caveModifier.close();
|
|
||||||
postModifier.close();
|
|
||||||
effects.close();
|
effects.close();
|
||||||
J.a(() -> new IrisProject(getData().getDataFolder()).updateWorkspace());
|
J.a(() -> new IrisProject(getData().getDataFolder()).updateWorkspace());
|
||||||
}
|
}
|
||||||
@@ -176,12 +166,6 @@ public class IrisEngine implements Engine {
|
|||||||
worldManager = new IrisWorldManager(this);
|
worldManager = new IrisWorldManager(this);
|
||||||
complex = new IrisComplex(this);
|
complex = new IrisComplex(this);
|
||||||
execution = new IrisExecutionEnvironment(this);
|
execution = new IrisExecutionEnvironment(this);
|
||||||
terrainActuator = new IrisTerrainNormalActuator(this);
|
|
||||||
decorantActuator = new IrisDecorantActuator(this);
|
|
||||||
biomeActuator = new IrisBiomeActuator(this);
|
|
||||||
depositModifier = new IrisDepositModifier(this);
|
|
||||||
postModifier = new IrisPostModifier(this);
|
|
||||||
caveModifier = new IrisCarveModifier(this);
|
|
||||||
effects = new IrisEngineEffects(this);
|
effects = new IrisEngineEffects(this);
|
||||||
setupStages();
|
setupStages();
|
||||||
J.a(this::computeBiomeMaxes);
|
J.a(this::computeBiomeMaxes);
|
||||||
@@ -194,13 +178,20 @@ public class IrisEngine implements Engine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setupStages() {
|
private void setupStages() {
|
||||||
|
var terrain = new IrisTerrainNormalActuator(this);
|
||||||
|
var biome = new IrisBiomeActuator(this);
|
||||||
|
var decorant = new IrisDecorantActuator(this);
|
||||||
|
var cave = new IrisCarveModifier(this);
|
||||||
|
var post = new IrisPostModifier(this);
|
||||||
|
var deposit = new IrisDepositModifier(this);
|
||||||
|
|
||||||
registerStage((x, z, k, p, m) -> getMantle().generateMatter(x >> 4, z >> 4, m));
|
registerStage((x, z, k, p, m) -> getMantle().generateMatter(x >> 4, z >> 4, m));
|
||||||
registerStage((x, z, k, p, m) -> getTerrainActuator().actuate(x, z, k, m));
|
registerStage((x, z, k, p, m) -> terrain.actuate(x, z, k, m));
|
||||||
registerStage((x, z, k, p, m) -> getBiomeActuator().actuate(x, z, p, m));
|
registerStage((x, z, k, p, m) -> biome.actuate(x, z, p, m));
|
||||||
registerStage((x, z, k, p, m) -> getDecorantActuator().actuate(x, z, k, m));
|
registerStage((x, z, k, p, m) -> decorant.actuate(x, z, k, m));
|
||||||
registerStage((x, z, k, p, m) -> getCaveModifier().modify(x >> 4, z >> 4, k, m));
|
registerStage((x, z, k, p, m) -> cave.modify(x >> 4, z >> 4, k, m));
|
||||||
registerStage((x, z, k, p, m) -> getPostModifier().modify(x, z, k, m));
|
registerStage((x, z, k, p, m) -> post.modify(x, z, k, m));
|
||||||
registerStage((x, z, k, p, m) -> getDepositModifier().modify(x, z, k, m));
|
registerStage((x, z, k, p, m) -> deposit.modify(x, z, k, m));
|
||||||
registerStage((x, z, K, p, m) -> getMantle().insertMatter(x >> 4, z >> 4, BlockData.class, K, m));
|
registerStage((x, z, K, p, m) -> getMantle().insertMatter(x >> 4, z >> 4, BlockData.class, K, m));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -376,12 +367,8 @@ public class IrisEngine implements Engine {
|
|||||||
getWorldManager().close();
|
getWorldManager().close();
|
||||||
getTarget().close();
|
getTarget().close();
|
||||||
saveEngineData();
|
saveEngineData();
|
||||||
getTerrainActuator().close();
|
stages.forEach(EngineStage::close);
|
||||||
getDecorantActuator().close();
|
stages.clear();
|
||||||
getBiomeActuator().close();
|
|
||||||
getDepositModifier().close();
|
|
||||||
getPostModifier().close();
|
|
||||||
getCaveModifier().close();
|
|
||||||
getMantle().close();
|
getMantle().close();
|
||||||
getComplex().close();
|
getComplex().close();
|
||||||
getData().dump();
|
getData().dump();
|
||||||
|
|||||||
@@ -26,4 +26,11 @@ import org.bukkit.block.data.BlockData;
|
|||||||
public interface EngineStage {
|
public interface EngineStage {
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
void generate(int x, int z, Hunk<BlockData> blocks, Hunk<Biome> biomes, boolean multicore);
|
void generate(int x, int z, Hunk<BlockData> blocks, Hunk<Biome> biomes, boolean multicore);
|
||||||
|
|
||||||
|
default void close() {
|
||||||
|
if(this instanceof EngineComponent c)
|
||||||
|
{
|
||||||
|
c.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user