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

View File

@@ -1,8 +1,9 @@
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 {
boolean test(long seed, Biome biome, int x, int y, int z);
boolean test(int x, int y, int z, WorldProperties properties, BiomeProvider provider);
}

View File

@@ -1,7 +1,9 @@
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 {
LayerPalette resolve(long seed, Biome biome, int x, int y, int z);
LayerPalette resolve(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider);
}

View File

@@ -1,11 +1,9 @@
package com.dfsek.terra.addons.chunkgenerator.api;
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 interface LayerSampler {
double sample(long seed, Biome biome, int x, int y, int z);
NoiseSampler getSampler();
double sample(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider);
}

View File

@@ -48,7 +48,7 @@ public class LayeredChunkGenerator implements ChunkGenerator {
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) {
paletteLevel++;
@@ -60,11 +60,9 @@ public class LayeredChunkGenerator implements ChunkGenerator {
paletteLevel = 0;
}
previousLayerPalette = layerPalette;
Palette palette = layerPalette.get(seed, biome, cx, y, cz);
chunk.setBlock(cx, y, cz, palette.get(paletteLevel, cx, y, cz, seed));
chunk.setBlock(cx, y, cz, layerPalette.get(seed, biome, cx, y, cz)
.get(paletteLevel, cx, y, cz, seed));
}
}
}
@@ -77,7 +75,7 @@ public class LayeredChunkGenerator implements ChunkGenerator {
long seed = world.getSeed();
Biome biome = biomeProvider.getBiome(x, y, z, seed);
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(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) {
long seed = world.getSeed();
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);
}
}

View File

@@ -1,7 +1,8 @@
package com.dfsek.terra.addons.chunkgenerator.layer.predicate;
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 {
@@ -13,7 +14,7 @@ public class BelowLayerPredicate implements LayerPredicate {
}
@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;
}
}

View File

@@ -2,7 +2,8 @@ package com.dfsek.terra.addons.chunkgenerator.layer.predicate;
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
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 {
@@ -13,7 +14,7 @@ public class RangeLayerPredicate implements LayerPredicate {
this.range = range;
}
@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);
}
}

View File

@@ -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.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 {
@@ -20,8 +21,8 @@ public class SamplerLayerPredicate implements LayerPredicate {
}
@Override
public boolean test(long seed, Biome biome, int x, int y, int z) {
return operator.evaluate(sampler.sample(seed, biome, x, y, z), threshold);
public boolean test(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider) {
return operator.evaluate(sampler.sample(x, y, z, world, biomeProvider), threshold);
}
public enum Operator {

View File

@@ -9,7 +9,8 @@ import java.util.List;
import com.dfsek.terra.addons.chunkgenerator.api.LayerPredicate;
import com.dfsek.terra.addons.chunkgenerator.api.LayerSampler;
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 {
@@ -25,9 +26,9 @@ public class SamplerListLayerPredicate implements LayerPredicate {
}
@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) {
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;
}

View File

@@ -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.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 {
@@ -13,7 +15,7 @@ public class PaletteLayerResolver implements LayerResolver {
}
@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;
}
}

View File

@@ -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.LayerPredicate;
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 {
@@ -21,7 +22,7 @@ public class PredicateLayerResolver implements LayerResolver {
}
@Override
public LayerPalette resolve(long seed, Biome biome, int x, int y, int z) {
return predicate.test(seed, biome, x, y, z) ? trueResolver.resolve(seed, biome, x, y, z) : falseResolver.resolve(seed, biome, x, y, z);
public LayerPalette resolve(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider) {
return predicate.test(x, y, z, world, biomeProvider) ? trueResolver.resolve(x, y, z, world, biomeProvider) : falseResolver.resolve(x, y, z, world, biomeProvider);
}
}

View File

@@ -2,7 +2,8 @@ package com.dfsek.terra.addons.chunkgenerator.layer.sampler;
import com.dfsek.terra.addons.chunkgenerator.api.LayerSampler;
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 {
@@ -14,12 +15,7 @@ public class SimpleLayerSampler implements LayerSampler {
}
@Override
public double sample(long seed, Biome biome, int x, int y, int z) {
return sampler.noise(seed, x, y, z);
}
@Override
public NoiseSampler getSampler() {
return sampler;
public double sample(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider) {
return sampler.noise(world.getSeed(), x, y, z);
}
}