9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-30 20:39:21 +00:00

Carving Biomes

This commit is contained in:
Daniel Mills
2020-09-12 00:17:12 -04:00
parent 30e1d9552c
commit 9272765f3c
8 changed files with 153 additions and 50 deletions

View File

@@ -304,12 +304,12 @@ public abstract class ParallaxTerrainProvider extends TopographicTerrainProvider
private int placeObjects(RNG random, IrisRegion r, IrisBiome b, int i, int j, int g)
{
for(IrisObjectPlacement k : b.getObjects())
for(IrisObjectPlacement k : b.getSurfaceObjects())
{
placeObject(k, i, j, random.nextParallelRNG((34 * ((i * 30) + (j * 30) + g++) * i * j) + i - j + 3566522));
}
for(IrisObjectPlacement k : r.getObjects())
for(IrisObjectPlacement k : r.getSurfaceObjects())
{
placeObject(k, i, j, random.nextParallelRNG((34 * ((i * 30) + (j * 30) + g++) * i * j) + i - j + 3569222));
}
@@ -341,12 +341,12 @@ public abstract class ParallaxTerrainProvider extends TopographicTerrainProvider
private int placeCarveObjects(RNG random, IrisRegion r, IrisBiome b, int i, int j, int g, CarveResult c)
{
for(IrisObjectPlacement k : b.getObjects())
for(IrisObjectPlacement k : b.getCarvingObjects())
{
placeCarveObject(k, i, j, random.nextParallelRNG((34 * ((i * 30) + (j * 30) + g++) * i * j) + i - j + 3569221 + g), c);
}
for(IrisObjectPlacement k : r.getObjects())
for(IrisObjectPlacement k : r.getCarvingObjects())
{
placeCarveObject(k, i, j, random.nextParallelRNG((34 * ((i * 30) + (j * 30) + g++) * i * j) + i - j + 3561222 + g), c);
}

View File

@@ -141,7 +141,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
boolean carvable = getGlCarve().couldCarveBelow(rx, height, rz);
IrisRegion region = sampleRegion(rx, rz);
IrisBiome biome = sampleTrueBiome(rx, rz, noise);
IrisBiome landBiome = null;
IrisBiome carveBiome = null;
Biome onlyBiome = Iris.biome3d ? null : biome.getGroundBiome(getMasterRandom(), rz, getDimension().getFluidHeight(), rx);
if(biome == null)
@@ -185,12 +185,12 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
{
if(biomeMap != null)
{
if(landBiome == null)
if(carveBiome == null)
{
landBiome = getGlBiome().generateData(InferredType.LAND, wx, wz, rx, rz, region);
carveBiome = biome.getRealCarvingBiome(getData());
}
sliver.set(k, landBiome.getDerivative());
sliver.set(k, carveBiome.getDerivative());
}
sliver.set(k, CAVE_AIR);
@@ -245,14 +245,14 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
// Set Surface Material for cavern layer surfaces
else if(carvable && cavernHeights.isNotEmpty() && lastCavernHeight - k >= 0 && lastCavernHeight - k < 5)
{
if(landBiome == null)
if(carveBiome == null)
{
landBiome = getGlBiome().generateData(InferredType.LAND, wx, wz, rx, rz, region);
carveBiome = biome.getRealCarvingBiome(getData());
}
if(cavernLayers == null)
{
cavernLayers = landBiome.generateLayers(rx, rz, getMasterRandom(), 5, height - getFluidHeight());
cavernLayers = carveBiome.generateLayers(rx, rz, getMasterRandom(), 5, height - getFluidHeight());
}
block = cavernLayers.hasIndex(lastCavernHeight - k) ? cavernLayers.get(lastCavernHeight - k) : cavernLayers.get(0);
@@ -277,12 +277,12 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
// Decorate Cavern surfaces, but not the true surface
if((carvable && cavernSurface) && !(k == Math.max(height, fluidHeight) && block.getMaterial().isSolid() && k < 255 && k >= fluidHeight))
{
if(landBiome == null)
if(carveBiome == null)
{
landBiome = getGlBiome().generateData(InferredType.LAND, wx, wz, rx, rz, region);
carveBiome = biome.getRealCarvingBiome(getData());
}
decorateLand(landBiome, sliver, wx, k, wz, rx, rz, block);
decorateLand(carveBiome, sliver, wx, k, wz, rx, rz, block);
}
}

View File

@@ -30,6 +30,7 @@ public class GenLayerBiome extends GenLayer
private BiomeDataProvider landProvider;
private BiomeDataProvider shoreProvider;
private BiomeDataProvider caveProvider;
private BiomeDataProvider carveProvider;
private BiomeDataProvider riverProvider;
private BiomeDataProvider lakeProvider;
private DimensionalTerrainProvider iris;