Fix erosion NPE, add missing config

This commit is contained in:
dfsek
2020-12-03 22:31:03 -07:00
parent 27e31fef9f
commit 47b3278f96
8 changed files with 31 additions and 13 deletions

View File

@@ -81,5 +81,10 @@
<option name="name" value="MavenLocal" />
<option name="url" value="file:$MAVEN_REPOSITORY$/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven3" />
<option name="name" value="maven3" />
<option name="url" value="https://repo.codemc.org/repository/maven-releases" />
</remote-repository>
</component>
</project>

Binary file not shown.

View File

@@ -59,7 +59,7 @@ public class TerraBiomeGrid extends BiomeGrid {
failNum++;
return null;
}
if(erode.isEroded(xp, zp)) return b.getErode();
if(erode != null && erode.isEroded(xp, zp)) return b.getErode();
return b;
}

View File

@@ -25,8 +25,10 @@ public class GeneratorBuilder {
private boolean preventInterpolation;
private boolean interpolateElevation;
public WorldGenerator build(long seed) {
return gens.computeIfAbsent(seed, k -> new WorldGenerator(seed, noiseEquation, elevationEquation, varScope, noiseBuilderMap, palettes, slantPalettes, preventInterpolation));
return gens.computeIfAbsent(seed, k -> new WorldGenerator(seed, noiseEquation, elevationEquation, varScope, noiseBuilderMap, palettes, slantPalettes, preventInterpolation, interpolateElevation));
}
public String getNoiseEquation() {
@@ -84,4 +86,12 @@ public class GeneratorBuilder {
public void setPreventInterpolation(boolean preventInterpolation) {
this.preventInterpolation = preventInterpolation;
}
public void setInterpolateElevation(boolean interpolateElevation) {
this.interpolateElevation = interpolateElevation;
}
public boolean interpolateElevation() {
return interpolateElevation;
}
}

View File

@@ -24,6 +24,7 @@ public class BiomeFactory implements TerraFactory<BiomeTemplate, UserDefinedBiom
generatorBuilder.setPalettes(template.getPalette());
generatorBuilder.setSlantPalettes(template.getSlantPalette());
generatorBuilder.setVarScope(pack.getVarScope());
generatorBuilder.setInterpolateElevation(template.interpolateElevation());
return new UserDefinedBiome(template.getVanilla(), decorator, generatorBuilder, template, pack);

View File

@@ -5,7 +5,6 @@ import com.dfsek.tectonic.exception.ConfigException;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.terra.Debug;
import com.dfsek.terra.generation.config.NoiseBuilder;
import org.polydev.gaea.math.FastNoiseLite;
@@ -29,14 +28,10 @@ public class NoiseBuilderLoader implements TypeLoader<NoiseBuilder> {
public NoiseBuilder load(Type type, Object o, ConfigLoader configLoader) throws LoadException {
NoiseBuilder builder = new NoiseBuilder();
try {
Debug.info(o + "");
LOADER.load(builder, new Configuration((Map<String, Object>) o));
} catch(ConfigException e) {
throw new LoadException("Could not load noise", e);
}
Debug.info("FREQ: " + builder.getFrequency());
Debug.info("FRAC: " + builder.getFractalType());
Debug.info("OCT:" + builder.getOctaves());
return builder;
}
}

View File

@@ -111,6 +111,15 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf
@Default
private double slantThreshold = 0.1;
@Value("interpolate-elevation")
@Abstractable
@Default
private boolean interpolateElevation = true;
public boolean interpolateElevation() {
return interpolateElevation;
}
public double getSlantThreshold() {
return slantThreshold;
}

View File

@@ -32,10 +32,10 @@ public class WorldGenerator extends Generator {
private final Variable zVar;
private final Variable elevationXVar;
private final Variable elevationZVar;
private boolean elevationInterpolation = true;
private final boolean elevationInterpolation;
@SuppressWarnings({"rawtypes", "unchecked"})
public WorldGenerator(long seed, String equation, String elevateEquation, Scope vScope, Map<String, NoiseBuilder> noiseBuilders, PaletteHolder palettes, PaletteHolder slantPalettes, boolean preventSmooth) {
public WorldGenerator(long seed, String equation, String elevateEquation, Scope vScope, Map<String, NoiseBuilder> noiseBuilders, PaletteHolder palettes, PaletteHolder slantPalettes, boolean preventSmooth, boolean elevationInterpolation) {
Parser p = new Parser();
p.registerFunction("rand", new RandomFunction());
Parser ep = new Parser();
@@ -52,6 +52,8 @@ public class WorldGenerator extends Generator {
this.palettes = palettes;
this.slantPalettes = slantPalettes;
this.elevationInterpolation = elevationInterpolation;
for(Map.Entry<String, NoiseBuilder> e : noiseBuilders.entrySet()) {
switch(e.getValue().getDimensions()) {
case 2:
@@ -133,8 +135,4 @@ public class WorldGenerator extends Generator {
return elevationInterpolation;
}
public WorldGenerator setElevationInterpolation(boolean elevationInterpolation) {
this.elevationInterpolation = elevationInterpolation;
return this;
}
}