use biome query API in ReplaceExtrusion

This commit is contained in:
dfsek
2022-06-19 00:34:03 -07:00
parent abca785b1e
commit 41fc28e1e9
3 changed files with 11 additions and 5 deletions
@@ -2,4 +2,5 @@ version = version("1.0.0")
dependencies { dependencies {
compileOnlyApi(project(":common:addons:manifest-addon-loader")) compileOnlyApi(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:biome-query-api"))
} }
@@ -2,6 +2,7 @@ package com.dfsek.terra.addons.biome.extrusion.extrusions;
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome; import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome;
import com.dfsek.terra.addons.biome.query.api.BiomeQueries;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.Range;
import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.collection.ProbabilityCollection;
@@ -22,20 +23,22 @@ public class ReplaceExtrusion implements Extrusion {
private final ProbabilityCollection<ReplaceableBiome> biomes; private final ProbabilityCollection<ReplaceableBiome> biomes;
private final String tag; private final Predicate<Biome> hasTag;
public ReplaceExtrusion(NoiseSampler sampler, Range range, ProbabilityCollection<ReplaceableBiome> biomes, String tag) { public ReplaceExtrusion(NoiseSampler sampler, Range range, ProbabilityCollection<ReplaceableBiome> biomes, String tag) {
this.sampler = sampler; this.sampler = sampler;
this.range = range; this.range = range;
this.biomes = biomes; this.biomes = biomes;
this.tag = tag; this.hasTag = BiomeQueries.has(tag);
} }
@Override @Override
public Biome extrude(Biome original, int x, int y, int z, long seed) { public Biome extrude(Biome original, int x, int y, int z, long seed) {
if(!original.getTags().contains(tag)) return original; if(hasTag.test(original)) {
return range.ifInRange(y, () -> biomes.get(sampler, x, y, z, seed).get(original), original); return range.ifInRange(y, () -> biomes.get(sampler, x, y, z, seed).get(original), original);
} }
return original;
}
@Override @Override
public Collection<Biome> getBiomes() { public Collection<Biome> getBiomes() {
@@ -10,3 +10,5 @@ website:
source: https://github.com/PolyhedralDev/Terra source: https://github.com/PolyhedralDev/Terra
docs: https://terra.polydev.org docs: https://terra.polydev.org
license: MIT License license: MIT License
depends:
biome-query-api: "1.+"