From 9b910b26a981e5ca979c55d4f0e9d5511586e90b Mon Sep 17 00:00:00 2001 From: DanLT Date: Thu, 24 Jun 2021 08:32:13 -0800 Subject: [PATCH] Support Objects in Regions --- build.gradle | 2 +- .../engine/EngineParallaxManager.java | 27 ++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index bdc00df7d..a80df46c1 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group 'com.volmit.iris' -version '1.4.3' +version '1.4.4' def apiVersion = '1.17' def name = 'Iris' def main = 'com.volmit.iris.Iris' diff --git a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java index 6d95f9296..2c844cc2d 100644 --- a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java +++ b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java @@ -290,7 +290,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer { IrisRegion region = getComplex().getRegionStream().get(xx+8, zz+8); IrisBiome biome = getComplex().getTrueBiomeStream().get(xx+8, zz+8); after.addAll(generateParallaxJigsaw(rng, x, z, biome, region)); - generateParallaxSurface(rng, x, z, biome, true); + generateParallaxSurface(rng, x, z, biome, region, true); generateParallaxMutations(rng, x, z, true); return after; } @@ -307,7 +307,8 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer { getParallaxAccess().setParallaxGenerated(x, z); RNG rng = new RNG(Cache.key(x, z)).nextParallelRNG(getEngine().getTarget().getWorld().getSeed()); IrisBiome biome = getComplex().getTrueBiomeStream().get(xx+8, zz+8); - generateParallaxSurface(rng, x, z, biome, false); + IrisRegion region = getComplex().getRegionStream().get(xx+8,zz+8); + generateParallaxSurface(rng, x, z, biome, region,false); generateParallaxMutations(rng, x, z, false); } @@ -427,7 +428,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer { return placeAfter; } - default void generateParallaxSurface(RNG rng, int x, int z, IrisBiome biome, boolean vacuum) { + default void generateParallaxSurface(RNG rng, int x, int z, IrisBiome biome, IrisRegion region, boolean vacuum) { for (IrisObjectPlacement i : biome.getSurfaceObjects()) { if(i.isVacuum() != vacuum) @@ -447,6 +448,26 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer { } } } + + for (IrisObjectPlacement i : region.getSurfaceObjects()) + { + if(i.isVacuum() != vacuum) + { + continue; + } + + if(rng.chance(i.getChance() + rng.d(-0.005, 0.005)) && rng.chance(getComplex().getObjectChanceStream().get(x<<4, z<<4))) + { + try { + place(rng, x << 4, z << 4, i); + } catch(Throwable e) { + Iris.error("Failed to place objects in the following biome: " + biome.getName()); + Iris.error("Object(s) " + i.getPlace().toString(", ") + " (" + e.getClass().getSimpleName() + ")."); + Iris.error("Are these objects missing?"); + e.printStackTrace(); + } + } + } } default void generateParallaxMutations(RNG rng, int x, int z, boolean vacuum) {