slant palette things

This commit is contained in:
dfsek
2021-07-15 17:57:54 -07:00
parent 319df9e638
commit 2cd71cdcd3
12 changed files with 126 additions and 43 deletions
@@ -2,7 +2,6 @@ package com.dfsek.terra.addons.biome;
import com.dfsek.terra.addons.biome.holder.PaletteHolder;
import com.dfsek.terra.addons.biome.holder.PaletteHolderLoader;
import com.dfsek.terra.addons.biome.slant.SlantHolder;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.addon.TerraAddon;
import com.dfsek.terra.api.addon.annotations.Addon;
@@ -26,7 +25,6 @@ public class BiomeConfigAddon extends TerraAddon implements EventListener {
public void onPackLoad(ConfigPackPreLoadEvent event) {
event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5);
event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader())
.applyLoader(SlantHolder.class, (t, o, l) -> null);
event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader());
}
}
@@ -8,18 +8,15 @@ import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ValidatedConfigTemplate;
import com.dfsek.tectonic.exception.ValidationException;
import com.dfsek.terra.addons.biome.holder.PaletteHolder;
import com.dfsek.terra.addons.biome.slant.SlantHolder;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.block.BlockType;
import com.dfsek.terra.api.config.AbstractableTemplate;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.structure.ConfiguredStructure;
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.biome.Biome;
import com.dfsek.terra.api.world.generator.Palette;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -51,10 +48,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl
@Value("palette")
private PaletteHolder palette;
@Value("slant")
@Default
private SlantHolder slant = null;
@Value("vanilla")
private ProbabilityCollection<Biome> vanilla;
@@ -161,10 +154,6 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl
return interpolateElevation;
}
public SlantHolder getSlant() {
return slant;
}
public double getSlabThreshold() {
return slabThreshold;
}
@@ -12,7 +12,7 @@ import java.util.Set;
* Class representing a config-defined biome
*/
public class UserDefinedBiome implements TerraBiome {
private final WorldGenerator gen;
private final UserDefinedGenerator gen;
private final ProbabilityCollection<Biome> vanilla;
private final String id;
private final BiomeTemplate config;
@@ -20,7 +20,7 @@ public class UserDefinedBiome implements TerraBiome {
private final Set<String> tags;
public UserDefinedBiome(ProbabilityCollection<Biome> vanilla, WorldGenerator gen, BiomeTemplate config) {
public UserDefinedBiome(ProbabilityCollection<Biome> vanilla, UserDefinedGenerator gen, BiomeTemplate config) {
this.vanilla = vanilla;
this.gen = gen;
this.id = config.getID();
@@ -24,7 +24,7 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder {
synchronized(biomeMap) {
return biomeMap.computeIfAbsent(seed,
s -> {
WorldGenerator generator = new WorldGenerator(template.getPalette(), template.getSlant(), template.getNoiseEquation().apply(seed), template.getElevationEquation().apply(seed), template.getCarvingEquation().apply(seed), template.getBiomeNoise().apply(seed), template.getElevationWeight(),
UserDefinedGenerator generator = new UserDefinedGenerator(template.getPalette(), template.getNoiseEquation().apply(seed), template.getElevationEquation().apply(seed), template.getCarvingEquation().apply(seed), template.getBiomeNoise().apply(seed), template.getElevationWeight(),
template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight());
return new UserDefinedBiome(template.getVanilla(), generator, template);
}
@@ -1,14 +1,12 @@
package com.dfsek.terra.addons.biome;
import com.dfsek.terra.addons.biome.holder.PaletteHolder;
import com.dfsek.terra.addons.biome.slant.SlantHolder;
import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.world.biome.Generator;
import com.dfsek.terra.api.world.biome.PaletteSettings;
public class WorldGenerator implements Generator {
public class UserDefinedGenerator implements Generator {
private final PaletteSettings paletteSettings;
private final SlantHolder slantPalettes;
private final NoiseSampler noise;
private final NoiseSampler elevation;
@@ -20,9 +18,8 @@ public class WorldGenerator implements Generator {
private final int blendStep;
private final double blendWeight;
public WorldGenerator(PaletteHolder palettes, SlantHolder slantPalettes, NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) {
public UserDefinedGenerator(PaletteHolder palettes, NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, double elevationWeight, int blendDistance, int blendStep, double blendWeight) {
this.paletteSettings = new PaletteSettingsImpl(palettes);
this.slantPalettes = slantPalettes;
this.noise = noise;
this.elevation = elevation;
this.carving = carving;
@@ -1,23 +0,0 @@
package com.dfsek.terra.addons.biome.slant;
import com.dfsek.terra.addons.biome.holder.PaletteHolder;
import java.util.TreeMap;
public class SlantHolder {
private final TreeMap<Double, PaletteHolder> layers;
private final double minSlope;
public SlantHolder(TreeMap<Double, PaletteHolder> layers, double minSlope) {
this.layers = layers;
this.minSlope = minSlope;
}
public PaletteHolder getPalette(double slope) {
return layers.floorEntry(slope).getValue();
}
public double getMinSlope() {
return minSlope;
}
}