mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-04-12 02:36:05 +00:00
Carving Objects
This commit is contained in:
@@ -3,6 +3,7 @@ package com.volmit.iris.gen.layer;
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import com.volmit.iris.gen.DimensionalTerrainProvider;
|
||||
import com.volmit.iris.gen.TopographicTerrainProvider;
|
||||
import com.volmit.iris.noise.CNG;
|
||||
import com.volmit.iris.object.InferredType;
|
||||
import com.volmit.iris.object.IrisBiome;
|
||||
@@ -33,7 +34,7 @@ public class GenLayerBiome extends GenLayer
|
||||
private BiomeDataProvider lakeProvider;
|
||||
private DimensionalTerrainProvider iris;
|
||||
|
||||
public GenLayerBiome(@NonNull DimensionalTerrainProvider iris, @NonNull RNG rng)
|
||||
public GenLayerBiome(@NonNull TopographicTerrainProvider iris, @NonNull RNG rng)
|
||||
{
|
||||
super(iris, rng);
|
||||
this.iris = iris;
|
||||
|
||||
@@ -1,17 +1,28 @@
|
||||
package com.volmit.iris.gen.layer;
|
||||
|
||||
import com.volmit.iris.gen.DimensionalTerrainProvider;
|
||||
import com.volmit.iris.gen.TopographicTerrainProvider;
|
||||
import com.volmit.iris.object.IrisCarveLayer;
|
||||
import com.volmit.iris.util.CarveResult;
|
||||
import com.volmit.iris.util.GenLayer;
|
||||
import com.volmit.iris.util.KList;
|
||||
import com.volmit.iris.util.RNG;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
public class GenLayerCarve extends GenLayer
|
||||
{
|
||||
private static final KList<CarveResult> EMPTY_LIST = new KList<>();
|
||||
|
||||
@Getter
|
||||
private boolean couldCarve;
|
||||
|
||||
@Getter
|
||||
private int minimum;
|
||||
|
||||
@Getter
|
||||
private int maximum;
|
||||
|
||||
public GenLayerCarve(DimensionalTerrainProvider iris, RNG rng)
|
||||
public GenLayerCarve(TopographicTerrainProvider iris, RNG rng)
|
||||
{
|
||||
super(iris, rng);
|
||||
|
||||
@@ -36,6 +47,46 @@ public class GenLayerCarve extends GenLayer
|
||||
return couldCarve && y <= maximum;
|
||||
}
|
||||
|
||||
public KList<CarveResult> getCarveLayers(int x, int z)
|
||||
{
|
||||
if(!couldCarve)
|
||||
{
|
||||
return EMPTY_LIST;
|
||||
}
|
||||
|
||||
KList<CarveResult> surfaces = new KList<>();
|
||||
int terrainHeight = (int) Math.round(iris.getTerrainHeight(x, z));
|
||||
boolean carving = false;
|
||||
int lastCarve = terrainHeight + 1;
|
||||
|
||||
for(int i = Math.min(maximum, terrainHeight); i >= Math.max(minimum, 0); i--)
|
||||
{
|
||||
if(i <= 0 || i > 255)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean nowCarving = isCarved(x, i, z);
|
||||
|
||||
if(carving && !nowCarving)
|
||||
{
|
||||
if(lastCarve - i > 2 && !(i < terrainHeight && lastCarve - i > terrainHeight))
|
||||
{
|
||||
surfaces.add(new CarveResult(i, lastCarve - i));
|
||||
}
|
||||
}
|
||||
|
||||
if(nowCarving && !carving)
|
||||
{
|
||||
lastCarve = i;
|
||||
}
|
||||
|
||||
carving = nowCarving;
|
||||
}
|
||||
|
||||
return surfaces;
|
||||
}
|
||||
|
||||
public int getSurfaceCarve(int x, int y, int z)
|
||||
{
|
||||
if(couldCarveBelow(x, y, z))
|
||||
|
||||
@@ -5,8 +5,8 @@ import java.util.function.Function;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
|
||||
import com.volmit.iris.gen.DimensionalTerrainProvider;
|
||||
import com.volmit.iris.gen.IrisTerrainProvider;
|
||||
import com.volmit.iris.gen.TopographicTerrainProvider;
|
||||
import com.volmit.iris.gen.atomics.AtomicSliver;
|
||||
import com.volmit.iris.noise.FastNoiseDouble;
|
||||
import com.volmit.iris.noise.FastNoiseDouble.CellularDistanceFunction;
|
||||
@@ -27,7 +27,7 @@ public class GenLayerCave extends GenLayer
|
||||
private static final KList<CaveResult> EMPTY = new KList<>();
|
||||
private FastNoiseDouble gg;
|
||||
|
||||
public GenLayerCave(DimensionalTerrainProvider iris, RNG rng)
|
||||
public GenLayerCave(TopographicTerrainProvider iris, RNG rng)
|
||||
{
|
||||
// @NoArgsConstructor
|
||||
super(iris, rng);
|
||||
|
||||
@@ -8,7 +8,7 @@ import java.awt.image.BufferedImage;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.gen.DimensionalTerrainProvider;
|
||||
import com.volmit.iris.gen.TopographicTerrainProvider;
|
||||
import com.volmit.iris.gen.atomics.AtomicCache;
|
||||
import com.volmit.iris.object.IrisMaterialPalette;
|
||||
import com.volmit.iris.object.IrisObject;
|
||||
@@ -22,7 +22,7 @@ public class GenLayerText extends GenLayer
|
||||
|
||||
private AtomicCache<IrisObject> debug = new AtomicCache<>();
|
||||
|
||||
public GenLayerText(DimensionalTerrainProvider iris, RNG rng)
|
||||
public GenLayerText(TopographicTerrainProvider iris, RNG rng)
|
||||
{
|
||||
super(iris, rng);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user