mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 10:12:53 +00:00
Fix anchoring point on lava carving
This commit is contained in:
parent
93936a7498
commit
3d0eca9432
@ -47,6 +47,7 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
|
||||
private final RNG rng;
|
||||
private final BlockData AIR = Material.CAVE_AIR.createBlockData();
|
||||
private final BlockData WATER = Material.WATER.createBlockData();
|
||||
private final BlockData LAVA = Material.LAVA.createBlockData();
|
||||
|
||||
public IrisCarveModifier(Engine engine) {
|
||||
super(engine, "Carve");
|
||||
@ -102,7 +103,10 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
|
||||
|
||||
if (c.isWater()) {
|
||||
output.set(rx, yy, rz, WATER);
|
||||
} else {
|
||||
} else if(c.isLava()) {
|
||||
output.set(rx, yy, rz, LAVA);
|
||||
}
|
||||
else {
|
||||
output.set(rx, yy, rz, AIR);
|
||||
}
|
||||
};
|
||||
|
@ -78,7 +78,7 @@ public class IrisCave extends IrisRegistrant {
|
||||
KList<IrisPosition> points = getWorm().generate(rng, engine.getData(), writer, verticalRange, x, y, z, (at) -> {});
|
||||
int highestWater = Math.max(waterHint, -1);
|
||||
int lowestPoint = Integer.MAX_VALUE;
|
||||
|
||||
|
||||
if (highestWater == -1) {
|
||||
for (IrisPosition i : points) {
|
||||
double yy = i.getY() + girth;
|
||||
@ -106,12 +106,12 @@ public class IrisCave extends IrisRegistrant {
|
||||
}
|
||||
|
||||
MatterCavern c = new MatterCavern(true, customBiome, (byte) 0);
|
||||
MatterCavern w = h >= 0 ? new MatterCavern(true, customBiome, (byte) 1) : null;
|
||||
MatterCavern l = lavaLevel >= 0 ? new MatterCavern(true, customBiome, (byte) 2) : null;
|
||||
int flp = lowestPoint;
|
||||
MatterCavern w = new MatterCavern(true, customBiome, (byte) 1);
|
||||
MatterCavern l = new MatterCavern(true, customBiome, (byte) 2);
|
||||
int flp = lowestPoint - worm.getGirth().getMid();
|
||||
writer.setLineConsumer(points,
|
||||
girth, true,
|
||||
(xf, yf, zf) -> (lavaLevel + flp >= yf) ? l : (yf <= h ? w : c));
|
||||
(xf, yf, zf) -> (lavaLevel + flp >= yf && lavaLevel >= 0) ? l : (yf <= h ? w : c));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -55,7 +55,7 @@ public class IrisElipsoid implements IRare {
|
||||
writer.setElipsoid(x, y, z,
|
||||
xRadius.get(rng, z, y, engine.getData()),
|
||||
yRadius.get(rng, x, z, engine.getData()),
|
||||
zRadius.get(rng, y, x, engine.getData()), true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), false)));
|
||||
zRadius.get(rng, y, x, engine.getData()), true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), 0)));
|
||||
}
|
||||
|
||||
public double maxSize() {
|
||||
|
@ -46,7 +46,7 @@ public class IrisPyramid implements IRare {
|
||||
private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>();
|
||||
|
||||
public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z) {
|
||||
writer.setPyramid(x, y, z, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), false)),
|
||||
writer.setPyramid(x, y, z, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), 0)),
|
||||
(int) baseWidth.get(rng, z, y, engine.getData()), true);
|
||||
}
|
||||
|
||||
|
@ -132,7 +132,7 @@ public class IrisRavine extends IrisRegistrant {
|
||||
}
|
||||
|
||||
MatterCavern c = new MatterCavern(true, customBiome, (byte) (water ? 1 : 0));
|
||||
MatterCavern l = lavaLevel >= 0 ? new MatterCavern(true, customBiome, (byte) 2) : null;
|
||||
MatterCavern l = new MatterCavern(true, customBiome, (byte) 2);
|
||||
|
||||
if (pos.size() < nodeThreshold) {
|
||||
return;
|
||||
@ -158,7 +158,7 @@ public class IrisRavine extends IrisRegistrant {
|
||||
break;
|
||||
}
|
||||
|
||||
writer.setElipsoid(p.getX(), i, p.getZ(), v, ribThickness, v, true, (lavaLevel + lowestPoint) >= i ? l : c);
|
||||
writer.setElipsoid(p.getX(), i, p.getZ(), v, ribThickness, v, true, ((lavaLevel + (lowestPoint - depthStyle.getMid())) >= i) && lavaLevel >= 0 ? l : c);
|
||||
}
|
||||
}
|
||||
|
||||
@ -174,7 +174,7 @@ public class IrisRavine extends IrisRegistrant {
|
||||
break;
|
||||
}
|
||||
|
||||
writer.setElipsoid(p.getX(), i, p.getZ(), v, ribThickness, v, true, (lavaLevel + lowestPoint) >= i ? l : c);
|
||||
writer.setElipsoid(p.getX(), i, p.getZ(), v, ribThickness, v, true, ((lavaLevel + (lowestPoint - depthStyle.getMid())) >= i) && lavaLevel >= 0 ? l : c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -66,4 +66,8 @@ public class IrisShapedGeneratorStyle {
|
||||
public boolean isFlat() {
|
||||
return min == max || getGenerator().isFlat();
|
||||
}
|
||||
|
||||
public int getMid() {
|
||||
return (getMax() + getMin()) / 2;
|
||||
}
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ public class IrisSphere implements IRare {
|
||||
private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>();
|
||||
|
||||
public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z) {
|
||||
writer.setSphere(x, y, z, radius.get(rng, z, y, engine.getData()), true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), false)));
|
||||
writer.setSphere(x, y, z, radius.get(rng, z, y, engine.getData()), true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome(), 0)));
|
||||
}
|
||||
|
||||
public double maxSize() {
|
||||
|
@ -65,4 +65,8 @@ public class IrisStyledRange {
|
||||
public boolean isFlat() {
|
||||
return getMax() == getMin() || style.isFlat();
|
||||
}
|
||||
|
||||
public int getMid() {
|
||||
return (int) ((getMax() + getMin()) / 2);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user