Change layer class method signatures

This commit is contained in:
Astrash
2022-07-18 11:59:25 +10:00
parent 237b897146
commit 7baace047b
11 changed files with 41 additions and 39 deletions
@@ -1,8 +1,9 @@
package com.dfsek.terra.addons.chunkgenerator.api; package com.dfsek.terra.addons.chunkgenerator.api;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.info.WorldProperties;
public interface LayerPredicate { public interface LayerPredicate {
boolean test(long seed, Biome biome, int x, int y, int z); boolean test(int x, int y, int z, WorldProperties properties, BiomeProvider provider);
} }
@@ -1,7 +1,9 @@
package com.dfsek.terra.addons.chunkgenerator.api; package com.dfsek.terra.addons.chunkgenerator.api;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.info.WorldProperties;
public interface LayerResolver { public interface LayerResolver {
LayerPalette resolve(long seed, Biome biome, int x, int y, int z); LayerPalette resolve(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider);
} }
@@ -1,11 +1,9 @@
package com.dfsek.terra.addons.chunkgenerator.api; package com.dfsek.terra.addons.chunkgenerator.api;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.info.WorldProperties;
public interface LayerSampler { public interface LayerSampler {
double sample(long seed, Biome biome, int x, int y, int z); double sample(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider);
NoiseSampler getSampler();
} }
@@ -48,7 +48,7 @@ public class LayeredChunkGenerator implements ChunkGenerator {
Biome biome = biomeColumn.get(y); Biome biome = biomeColumn.get(y);
LayerPalette layerPalette = resolver.resolve(seed, biome, cx, y, cz); LayerPalette layerPalette = resolver.resolve(cx, y, cz, world, biomeProvider);
if (previousLayerPalette == layerPalette) { if (previousLayerPalette == layerPalette) {
paletteLevel++; paletteLevel++;
@@ -61,10 +61,8 @@ public class LayeredChunkGenerator implements ChunkGenerator {
} }
previousLayerPalette = layerPalette; previousLayerPalette = layerPalette;
Palette palette = layerPalette.get(seed, biome, cx, y, cz); chunk.setBlock(cx, y, cz, layerPalette.get(seed, biome, cx, y, cz)
.get(paletteLevel, cx, y, cz, seed));
chunk.setBlock(cx, y, cz, palette.get(paletteLevel, cx, y, cz, seed));
} }
} }
} }
@@ -77,7 +75,7 @@ public class LayeredChunkGenerator implements ChunkGenerator {
long seed = world.getSeed(); long seed = world.getSeed();
Biome biome = biomeProvider.getBiome(x, y, z, seed); Biome biome = biomeProvider.getBiome(x, y, z, seed);
int layer = 0; // Default to layer 0 for now int layer = 0; // Default to layer 0 for now
return resolver.resolve(seed, biome, x, y, z) return resolver.resolve(x, y, z, world, biomeProvider)
.get(seed, biome, x, y, z) .get(seed, biome, x, y, z)
.get(layer, x, y, z, seed); .get(layer, x, y, z, seed);
} }
@@ -86,7 +84,7 @@ public class LayeredChunkGenerator implements ChunkGenerator {
public Palette getPalette(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider) { public Palette getPalette(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider) {
long seed = world.getSeed(); long seed = world.getSeed();
Biome biome = biomeProvider.getBiome(x, y, z, seed); Biome biome = biomeProvider.getBiome(x, y, z, seed);
return resolver.resolve(seed, biome, x, y, z) return resolver.resolve(x, y, z, world, biomeProvider)
.get(seed, biome, x, y, z); .get(seed, biome, x, y, z);
} }
} }
@@ -1,7 +1,8 @@
package com.dfsek.terra.addons.chunkgenerator.layer.predicate; package com.dfsek.terra.addons.chunkgenerator.layer.predicate;
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate; import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.info.WorldProperties;
public class BelowLayerPredicate implements LayerPredicate { public class BelowLayerPredicate implements LayerPredicate {
@@ -13,7 +14,7 @@ public class BelowLayerPredicate implements LayerPredicate {
} }
@Override @Override
public boolean test(long seed, Biome biome, int x, int y, int z) { public boolean test(int x, int y, int z, WorldProperties properties, BiomeProvider biomeProvider) {
return y < this.y; return y < this.y;
} }
} }
@@ -2,7 +2,8 @@ package com.dfsek.terra.addons.chunkgenerator.layer.predicate;
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate; import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.Range;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.info.WorldProperties;
public class RangeLayerPredicate implements LayerPredicate { public class RangeLayerPredicate implements LayerPredicate {
@@ -13,7 +14,7 @@ public class RangeLayerPredicate implements LayerPredicate {
this.range = range; this.range = range;
} }
@Override @Override
public boolean test(long seed, Biome biome, int x, int y, int z) { public boolean test(int x, int y, int z, WorldProperties world, BiomeProvider provider) {
return range.isInRange(y); return range.isInRange(y);
} }
} }
@@ -2,7 +2,8 @@ package com.dfsek.terra.addons.chunkgenerator.layer.predicate;
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate; import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
import com.dfsek.terra.addons.chunkgenerator.api.LayerSampler; import com.dfsek.terra.addons.chunkgenerator.api.LayerSampler;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.info.WorldProperties;
public class SamplerLayerPredicate implements LayerPredicate { public class SamplerLayerPredicate implements LayerPredicate {
@@ -20,8 +21,8 @@ public class SamplerLayerPredicate implements LayerPredicate {
} }
@Override @Override
public boolean test(long seed, Biome biome, int x, int y, int z) { public boolean test(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider) {
return operator.evaluate(sampler.sample(seed, biome, x, y, z), threshold); return operator.evaluate(sampler.sample(x, y, z, world, biomeProvider), threshold);
} }
public enum Operator { public enum Operator {
@@ -9,7 +9,8 @@ import java.util.List;
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate; import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
import com.dfsek.terra.addons.chunkgenerator.api.LayerSampler; import com.dfsek.terra.addons.chunkgenerator.api.LayerSampler;
import com.dfsek.terra.addons.chunkgenerator.layer.predicate.SamplerLayerPredicate.Operator; import com.dfsek.terra.addons.chunkgenerator.layer.predicate.SamplerLayerPredicate.Operator;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.info.WorldProperties;
public class SamplerListLayerPredicate implements LayerPredicate { public class SamplerListLayerPredicate implements LayerPredicate {
@@ -25,9 +26,9 @@ public class SamplerListLayerPredicate implements LayerPredicate {
} }
@Override @Override
public boolean test(long seed, Biome biome, int x, int y, int z) { public boolean test(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider) {
for (CoordinateTest test : tests) { for (CoordinateTest test : tests) {
if (operator.evaluate(sampler.sample(seed, biome, x + test.x, y + test.y, z + test.z), test.threshold)) return true; if (operator.evaluate(sampler.sample(x + test.x, y + test.y, z + test.z, world, biomeProvider), test.threshold)) return true;
} }
return false; return false;
} }
@@ -2,7 +2,9 @@ package com.dfsek.terra.addons.chunkgenerator.layer.resolve;
import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette; import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette;
import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver; import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.info.WorldProperties;
public class PaletteLayerResolver implements LayerResolver { public class PaletteLayerResolver implements LayerResolver {
@@ -13,7 +15,7 @@ public class PaletteLayerResolver implements LayerResolver {
} }
@Override @Override
public LayerPalette resolve(long seed, Biome biome, int x, int y, int z) { public LayerPalette resolve(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider) {
return palette; return palette;
} }
} }
@@ -3,7 +3,8 @@ package com.dfsek.terra.addons.chunkgenerator.layer.resolve;
import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette; import com.dfsek.terra.addons.chunkgenerator.api.LayerPalette;
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate; import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver; import com.dfsek.terra.addons.chunkgenerator.api.LayerResolver;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.info.WorldProperties;
public class PredicateLayerResolver implements LayerResolver { public class PredicateLayerResolver implements LayerResolver {
@@ -21,7 +22,7 @@ public class PredicateLayerResolver implements LayerResolver {
} }
@Override @Override
public LayerPalette resolve(long seed, Biome biome, int x, int y, int z) { public LayerPalette resolve(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider) {
return predicate.test(seed, biome, x, y, z) ? trueResolver.resolve(seed, biome, x, y, z) : falseResolver.resolve(seed, biome, x, y, z); return predicate.test(x, y, z, world, biomeProvider) ? trueResolver.resolve(x, y, z, world, biomeProvider) : falseResolver.resolve(x, y, z, world, biomeProvider);
} }
} }
@@ -2,7 +2,8 @@ package com.dfsek.terra.addons.chunkgenerator.layer.sampler;
import com.dfsek.terra.addons.chunkgenerator.api.LayerSampler; import com.dfsek.terra.addons.chunkgenerator.api.LayerSampler;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.info.WorldProperties;
public class SimpleLayerSampler implements LayerSampler { public class SimpleLayerSampler implements LayerSampler {
@@ -14,12 +15,7 @@ public class SimpleLayerSampler implements LayerSampler {
} }
@Override @Override
public double sample(long seed, Biome biome, int x, int y, int z) { public double sample(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider) {
return sampler.noise(seed, x, y, z); return sampler.noise(world.getSeed(), x, y, z);
}
@Override
public NoiseSampler getSampler() {
return sampler;
} }
} }