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

View File

@ -2,4 +2,5 @@ version = version("1.0.0")
dependencies {
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:biome-query-api"))
}

View File

@ -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.ReplaceableBiome;
import com.dfsek.terra.addons.biome.query.api.BiomeQueries;
import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.util.Range;
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
@ -22,19 +23,21 @@ public class ReplaceExtrusion implements Extrusion {
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) {
this.sampler = sampler;
this.range = range;
this.biomes = biomes;
this.tag = tag;
this.hasTag = BiomeQueries.has(tag);
}
@Override
public Biome extrude(Biome original, int x, int y, int z, long seed) {
if(!original.getTags().contains(tag)) return original;
return range.ifInRange(y, () -> biomes.get(sampler, x, y, z, seed).get(original), original);
if(hasTag.test(original)) {
return range.ifInRange(y, () -> biomes.get(sampler, x, y, z, seed).get(original), original);
}
return original;
}
@Override

View File

@ -9,4 +9,6 @@ website:
issues: https://github.com/PolyhedralDev/Terra/issues
source: https://github.com/PolyhedralDev/Terra
docs: https://terra.polydev.org
license: MIT License
license: MIT License
depends:
biome-query-api: "1.+"