mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-03 08:26:11 +00:00
fix worm ignoring the breakSurface option
This commit is contained in:
parent
ad720f4aa2
commit
7f6d65a13e
@ -66,14 +66,12 @@ public class IrisCave extends IrisRegistrant {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z) {
|
public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z) {
|
||||||
generate(writer, rng, engine, x, y, z, 0, -1);
|
generate(writer, rng, engine, x, y, z, 0, -1, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z, int recursion, int waterHint) {
|
public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z, int recursion, int waterHint, boolean breakSurface) {
|
||||||
|
|
||||||
double girth = getWorm().getGirth().get(rng, x, z, engine.getData());
|
double girth = getWorm().getGirth().get(rng, x, z, engine.getData());
|
||||||
KList<IrisPosition> points = getWorm().generate(rng, engine.getData(), writer, verticalRange, x, y, z, (at) -> {
|
KList<IrisPosition> points = getWorm().generate(rng, engine.getData(), writer, verticalRange, x, y, z, breakSurface, girth + 9);
|
||||||
});
|
|
||||||
int highestWater = Math.max(waterHint, -1);
|
int highestWater = Math.max(waterHint, -1);
|
||||||
|
|
||||||
if (highestWater == -1) {
|
if (highestWater == -1) {
|
||||||
|
@ -96,7 +96,7 @@ public class IrisCavePlacer implements IRare {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
cave.generate(mantle, rng, engine, x + rng.nextInt(15), y, z + rng.nextInt(15), recursion, waterHint);
|
cave.generate(mantle, rng, engine, x + rng.nextInt(15), y, z + rng.nextInt(15), recursion, waterHint, breakSurface);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
fail.set(true);
|
fail.set(true);
|
||||||
|
@ -97,8 +97,7 @@ public class IrisRavine extends IrisRegistrant {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z, int recursion, int waterHint) {
|
public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z, int recursion, int waterHint) {
|
||||||
KList<IrisPosition> pos = getWorm().generate(rng, engine.getData(), writer, null, x, y, z, (at) -> {
|
KList<IrisPosition> pos = getWorm().generate(rng, engine.getData(), writer, null, x, y, z, true, 0);
|
||||||
});
|
|
||||||
CNG dg = depthStyle.getGenerator().createNoCache(rng, engine.getData());
|
CNG dg = depthStyle.getGenerator().createNoCache(rng, engine.getData());
|
||||||
CNG bw = baseWidthStyle.getGenerator().createNoCache(rng, engine.getData());
|
CNG bw = baseWidthStyle.getGenerator().createNoCache(rng, engine.getData());
|
||||||
int highestWater = Math.max(waterHint, -1);
|
int highestWater = Math.max(waterHint, -1);
|
||||||
|
@ -62,7 +62,7 @@ public class IrisWorm {
|
|||||||
private IrisStyledRange girth = new IrisStyledRange().setMin(3).setMax(5)
|
private IrisStyledRange girth = new IrisStyledRange().setMin(3).setMax(5)
|
||||||
.setStyle(new IrisGeneratorStyle(NoiseStyle.PERLIN));
|
.setStyle(new IrisGeneratorStyle(NoiseStyle.PERLIN));
|
||||||
|
|
||||||
public KList<IrisPosition> generate(RNG rng, IrisData data, MantleWriter writer, IrisRange verticalRange, int x, int y, int z, Consumer<IrisPosition> fork) {
|
public KList<IrisPosition> generate(RNG rng, IrisData data, MantleWriter writer, IrisRange verticalRange, int x, int y, int z, boolean breakSurface, double distance) {
|
||||||
int itr = maxIterations;
|
int itr = maxIterations;
|
||||||
double jx, jy, jz;
|
double jx, jy, jz;
|
||||||
double cx = x;
|
double cx = x;
|
||||||
@ -77,7 +77,6 @@ public class IrisWorm {
|
|||||||
|
|
||||||
while (itr-- > 0) {
|
while (itr-- > 0) {
|
||||||
IrisPosition current = new IrisPosition(Math.round(cx), Math.round(cy), Math.round(cz));
|
IrisPosition current = new IrisPosition(Math.round(cx), Math.round(cy), Math.round(cz));
|
||||||
fork.accept(current);
|
|
||||||
pos.add(current);
|
pos.add(current);
|
||||||
|
|
||||||
if (check != null) {
|
if (check != null) {
|
||||||
@ -92,6 +91,10 @@ public class IrisWorm {
|
|||||||
cz += jz;
|
cz += jz;
|
||||||
IrisPosition next = new IrisPosition(Math.round(cx), Math.round(cy), Math.round(cz));
|
IrisPosition next = new IrisPosition(Math.round(cx), Math.round(cy), Math.round(cz));
|
||||||
|
|
||||||
|
if (!breakSurface && writer.getEngineMantle().getHighest(next.getX(), next.getZ(), true) <= next.getY() + distance) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (verticalRange != null && !verticalRange.contains(next.getY())) {
|
if (verticalRange != null && !verticalRange.contains(next.getY())) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user