Merge remote-tracking branch 'origin/ver/6.5.0' into dev/7.0-2

This commit is contained in:
Zoë Gidiere 2024-01-07 10:55:39 -07:00
commit da5d0c52f2
2 changed files with 33 additions and 3 deletions

View File

@ -13,6 +13,7 @@ import java.util.random.RandomGeneratorFactory;
import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures; import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures;
import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.Platform;
import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.properties.PropertyKey; import com.dfsek.terra.api.properties.PropertyKey;
import com.dfsek.terra.api.registry.key.StringIdentifiable; import com.dfsek.terra.api.registry.key.StringIdentifiable;
import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.Rotation;
@ -32,13 +33,20 @@ public class FeatureGenerationStage implements GenerationStage, StringIdentifiab
private final int resolution; private final int resolution;
private final PropertyKey<BiomeFeatures> biomeFeaturesKey; private final PropertyKey<BiomeFeatures> biomeFeaturesKey;
private final NoiseSampler blendSampler;
private final boolean doBlending;
private final double blendAmplitude;
public FeatureGenerationStage(Platform platform, String id, int resolution, PropertyKey<BiomeFeatures> biomeFeaturesKey) { public FeatureGenerationStage(Platform platform, String id, int resolution, PropertyKey<BiomeFeatures> biomeFeaturesKey,
NoiseSampler blendSampler, double blendAmplitude) {
this.platform = platform; this.platform = platform;
this.id = id; this.id = id;
this.profile = "feature_stage:" + id; this.profile = "feature_stage:" + id;
this.resolution = resolution; this.resolution = resolution;
this.biomeFeaturesKey = biomeFeaturesKey; this.biomeFeaturesKey = biomeFeaturesKey;
this.blendSampler = blendSampler;
this.doBlending = blendAmplitude != 0d;
this.blendAmplitude = blendAmplitude;
} }
@Override @Override
@ -53,7 +61,10 @@ public class FeatureGenerationStage implements GenerationStage, StringIdentifiab
int tx = cx + chunkX; int tx = cx + chunkX;
int tz = cz + chunkZ; int tz = cz + chunkZ;
world.getBiomeProvider() world.getBiomeProvider()
.getColumn(tx, tz, world) .getColumn(
tx + (doBlending ? (int) (blendSampler.noise(seed, tx, tz) * blendAmplitude) : 0),
tz + (doBlending ? (int) (blendSampler.noise(seed+1, tx, tz) * blendAmplitude) : 0),
world)
.forRanges(resolution, (min, max, biome) -> { .forRanges(resolution, (min, max, biome) -> {
for(int subChunkX = 0; subChunkX < resolution; subChunkX++) { for(int subChunkX = 0; subChunkX < resolution; subChunkX++) {
for(int subChunkZ = 0; subChunkZ < resolution; subChunkZ++) { for(int subChunkZ = 0; subChunkZ < resolution; subChunkZ++) {

View File

@ -8,6 +8,7 @@ import com.dfsek.tectonic.api.exception.ValidationException;
import com.dfsek.terra.addons.generation.feature.FeatureGenerationStage; import com.dfsek.terra.addons.generation.feature.FeatureGenerationStage;
import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.Platform;
import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.properties.PropertyKey; import com.dfsek.terra.api.properties.PropertyKey;
import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage;
@ -22,6 +23,24 @@ public class FeatureStageTemplate implements ObjectTemplate<GenerationStage>, Va
@Default @Default
private int resolution = 4; private int resolution = 4;
@Value("blend.sampler")
@Default
private NoiseSampler blendSampler = new NoiseSampler() {
@Override
public double noise(long seed, double x, double y) {
return 0;
}
@Override
public double noise(long seed, double x, double y, double z) {
return 0;
}
};
@Value("blend.amplitude")
@Default
private double blendAmplitude = 0d;
public FeatureStageTemplate(Platform platform, PropertyKey<BiomeFeatures> biomeFeaturesKey) { public FeatureStageTemplate(Platform platform, PropertyKey<BiomeFeatures> biomeFeaturesKey) {
this.platform = platform; this.platform = platform;
this.biomeFeaturesKey = biomeFeaturesKey; this.biomeFeaturesKey = biomeFeaturesKey;
@ -30,7 +49,7 @@ public class FeatureStageTemplate implements ObjectTemplate<GenerationStage>, Va
@Override @Override
public FeatureGenerationStage get() { public FeatureGenerationStage get() {
return new FeatureGenerationStage(platform, id, resolution, biomeFeaturesKey); return new FeatureGenerationStage(platform, id, resolution, biomeFeaturesKey, blendSampler, blendAmplitude);
} }
@Override @Override