diff --git a/src/main/java/com/volmit/iris/v2/generator/IrisEngine.java b/src/main/java/com/volmit/iris/v2/generator/IrisEngine.java index 264d5d2be..a8cee5173 100644 --- a/src/main/java/com/volmit/iris/v2/generator/IrisEngine.java +++ b/src/main/java/com/volmit/iris/v2/generator/IrisEngine.java @@ -33,6 +33,7 @@ public class IrisEngine implements Engine @Override public void generate(int x, int z, Hunk blocks, Hunk biomes) { MultiBurst.burst.burst( + () -> getFramework().getEngineParallax().generateParallaxArea(x, z), () -> blocks.compute2D(getParallelism(), (xx,yy,zz, b) -> { getFramework().getTerrainActuator().actuate(x+xx, z+zz, b); getFramework().getDecorantActuator().actuate(x+xx, z+zz, b); @@ -41,5 +42,9 @@ public class IrisEngine implements Engine getFramework().getBiomeActuator().actuate(x+xx, z+zz, b); }) ); + + getFramework().getEngineParallax().insertParallax(x, z, blocks); + System.out.println("Regions: " + getParallax().getRegionCount() + ", Chunks: " + getParallax().getChunkCount()); + getParallax().cleanup(); } } diff --git a/src/main/java/com/volmit/iris/v2/generator/IrisEngineCompound.java b/src/main/java/com/volmit/iris/v2/generator/IrisEngineCompound.java index a360facb2..b741883a7 100644 --- a/src/main/java/com/volmit/iris/v2/generator/IrisEngineCompound.java +++ b/src/main/java/com/volmit/iris/v2/generator/IrisEngineCompound.java @@ -18,6 +18,8 @@ import org.bukkit.World; import org.bukkit.block.Biome; import org.bukkit.block.data.BlockData; import org.bukkit.craftbukkit.v1_16_R2.generator.CraftChunkData; +import org.bukkit.event.EventHandler; +import org.bukkit.event.world.WorldSaveEvent; import java.io.File; import java.util.concurrent.atomic.AtomicInteger; @@ -72,6 +74,17 @@ public class IrisEngineCompound implements EngineCompound { engines[i] = new IrisEngine(new EngineTarget(world, dimension, data.copy().preferFolder(rootDimension.getLoadKey()), (int)Math.floor(256D * (index.getWeight() / totalWeight)), index.isInverted(), threadDist)); } } + + Iris.instance.registerListener(this); + } + + @EventHandler + public void on(WorldSaveEvent e) + { + if(world != null &&e.getWorld().equals(world)) + { + save(); + } } private File getEngineMetadataFile() { diff --git a/src/main/java/com/volmit/iris/v2/generator/IrisEngineFramework.java b/src/main/java/com/volmit/iris/v2/generator/IrisEngineFramework.java index f03908c7e..5d3118563 100644 --- a/src/main/java/com/volmit/iris/v2/generator/IrisEngineFramework.java +++ b/src/main/java/com/volmit/iris/v2/generator/IrisEngineFramework.java @@ -1,22 +1,34 @@ package com.volmit.iris.v2.generator; +import com.volmit.iris.Iris; +import com.volmit.iris.manager.IrisDataManager; +import com.volmit.iris.object.IrisBiome; +import com.volmit.iris.object.IrisObjectPlacement; +import com.volmit.iris.util.B; +import com.volmit.iris.util.IObjectPlacer; +import com.volmit.iris.util.RNG; import com.volmit.iris.v2.generator.actuator.IrisBiomeActuator; import com.volmit.iris.v2.generator.actuator.IrisDecorantActuator; import com.volmit.iris.v2.generator.actuator.IrisTerrainActuator; import com.volmit.iris.v2.scaffold.engine.Engine; import com.volmit.iris.v2.scaffold.engine.EngineActuator; import com.volmit.iris.v2.scaffold.engine.EngineFramework; +import com.volmit.iris.v2.scaffold.engine.EngineParallax; import lombok.Getter; import org.bukkit.block.Biome; import org.bukkit.block.data.BlockData; public class IrisEngineFramework implements EngineFramework { + @Getter private final Engine engine; @Getter private final IrisComplex complex; + @Getter + final EngineParallax engineParallax; + @Getter private final EngineActuator terrainActuator; @@ -30,8 +42,9 @@ public class IrisEngineFramework implements EngineFramework { { this.engine = engine; this.complex = new IrisComplex(getEngine()); - terrainActuator = new IrisTerrainActuator(getEngine()); - decorantActuator = new IrisDecorantActuator(getEngine()); - biomeActuator = new IrisBiomeActuator(getEngine()); + this.engineParallax = new IrisEngineParallax(getEngine()); + this.terrainActuator = new IrisTerrainActuator(getEngine()); + this.decorantActuator = new IrisDecorantActuator(getEngine()); + this.biomeActuator = new IrisBiomeActuator(getEngine()); } } diff --git a/src/main/java/com/volmit/iris/v2/generator/IrisEngineParallax.java b/src/main/java/com/volmit/iris/v2/generator/IrisEngineParallax.java new file mode 100644 index 000000000..97cb820c1 --- /dev/null +++ b/src/main/java/com/volmit/iris/v2/generator/IrisEngineParallax.java @@ -0,0 +1,20 @@ +package com.volmit.iris.v2.generator; + +import com.volmit.iris.v2.scaffold.engine.Engine; +import com.volmit.iris.v2.scaffold.engine.EngineFramework; +import com.volmit.iris.v2.scaffold.engine.EngineParallax; +import lombok.Getter; + +public class IrisEngineParallax implements EngineParallax { + @Getter + private final Engine engine; + + @Getter + private final int parallaxSize; + + public IrisEngineParallax(Engine engine) + { + this.engine = engine; + parallaxSize = computeParallaxSize(); + } +}