mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-18 06:40:55 +00:00
add replace extrusion
This commit is contained in:
+4
-2
@@ -6,6 +6,7 @@ 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.extrusion.config.BiomeExtrusionTemplate;
|
import com.dfsek.terra.addons.biome.extrusion.config.BiomeExtrusionTemplate;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.config.ReplaceableBiomeLoader;
|
import com.dfsek.terra.addons.biome.extrusion.config.ReplaceableBiomeLoader;
|
||||||
|
import com.dfsek.terra.addons.biome.extrusion.config.extrusions.ReplaceExtrusionTemplate;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.config.extrusions.SetExtrusionTemplate;
|
import com.dfsek.terra.addons.biome.extrusion.config.extrusions.SetExtrusionTemplate;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.extrusions.SetExtrusion;
|
import com.dfsek.terra.addons.biome.extrusion.extrusions.SetExtrusion;
|
||||||
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
|
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
|
||||||
@@ -49,9 +50,10 @@ public class BiomeExtrusionAddon implements AddonInitializer {
|
|||||||
providerRegistry.register(addon.key("EXTRUSION"), BiomeExtrusionTemplate::new);
|
providerRegistry.register(addon.key("EXTRUSION"), BiomeExtrusionTemplate::new);
|
||||||
})
|
})
|
||||||
.then(event -> {
|
.then(event -> {
|
||||||
CheckedRegistry<Supplier<ObjectTemplate<Extrusion>>> sourceRegistry = event.getPack().getOrCreateRegistry(
|
CheckedRegistry<Supplier<ObjectTemplate<Extrusion>>> extrusionRegistry = event.getPack().getOrCreateRegistry(
|
||||||
EXTRUSION_REGISTRY_KEY);
|
EXTRUSION_REGISTRY_KEY);
|
||||||
sourceRegistry.register(addon.key("SET"), SetExtrusionTemplate::new);
|
extrusionRegistry.register(addon.key("SET"), SetExtrusionTemplate::new);
|
||||||
|
extrusionRegistry.register(addon.key("REPLACE"), ReplaceExtrusionTemplate::new);
|
||||||
})
|
})
|
||||||
.failThrough();
|
.failThrough();
|
||||||
|
|
||||||
|
|||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
package com.dfsek.terra.addons.biome.extrusion.config.extrusions;
|
||||||
|
|
||||||
|
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
||||||
|
|
||||||
|
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.extrusions.ReplaceExtrusion;
|
||||||
|
import com.dfsek.terra.addons.biome.extrusion.extrusions.SetExtrusion;
|
||||||
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
|
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
||||||
|
|
||||||
|
|
||||||
|
public class ReplaceExtrusionTemplate extends SamplerExtrusionTemplate {
|
||||||
|
@Value("to")
|
||||||
|
private @Meta ProbabilityCollection<@Meta ReplaceableBiome> biomes;
|
||||||
|
|
||||||
|
@Value("from")
|
||||||
|
private @Meta String fromTag;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Extrusion get() {
|
||||||
|
return new ReplaceExtrusion(sampler, range, biomes, fromTag);
|
||||||
|
}
|
||||||
|
}
|
||||||
+3
-2
@@ -4,14 +4,15 @@ import com.dfsek.tectonic.api.config.template.annotations.Value;
|
|||||||
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
||||||
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
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;
|
||||||
|
|
||||||
|
|
||||||
public abstract class SamplerExtrusionTemplate implements ObjectTemplate<Extrusion> {
|
public abstract class SamplerExtrusionTemplate implements ObjectTemplate<Extrusion> {
|
||||||
@Value("sampler")
|
@Value("sampler")
|
||||||
protected NoiseSampler sampler;
|
protected @Meta NoiseSampler sampler;
|
||||||
|
|
||||||
@Value("range")
|
@Value("range")
|
||||||
protected Range range;
|
protected @Meta Range range;
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -5,12 +5,13 @@ import com.dfsek.tectonic.api.config.template.annotations.Value;
|
|||||||
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.extrusion.extrusions.SetExtrusion;
|
import com.dfsek.terra.addons.biome.extrusion.extrusions.SetExtrusion;
|
||||||
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
||||||
|
|
||||||
|
|
||||||
public class SetExtrusionTemplate extends SamplerExtrusionTemplate {
|
public class SetExtrusionTemplate extends SamplerExtrusionTemplate {
|
||||||
@Value("biomes")
|
@Value("to")
|
||||||
private ProbabilityCollection<ReplaceableBiome> biomes;
|
private @Meta ProbabilityCollection<@Meta ReplaceableBiome> biomes;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Extrusion get() {
|
public Extrusion get() {
|
||||||
|
|||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
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.api.noise.NoiseSampler;
|
||||||
|
import com.dfsek.terra.api.util.Range;
|
||||||
|
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
||||||
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets biomes at locations based on a sampler.
|
||||||
|
*/
|
||||||
|
public class ReplaceExtrusion implements Extrusion {
|
||||||
|
private final NoiseSampler sampler;
|
||||||
|
|
||||||
|
private final Range range;
|
||||||
|
|
||||||
|
private final ProbabilityCollection<ReplaceableBiome> biomes;
|
||||||
|
|
||||||
|
private final String tag;
|
||||||
|
|
||||||
|
public ReplaceExtrusion(NoiseSampler sampler, Range range, ProbabilityCollection<ReplaceableBiome> biomes, String tag) {
|
||||||
|
this.sampler = sampler;
|
||||||
|
this.range = range;
|
||||||
|
this.biomes = biomes;
|
||||||
|
this.tag = 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<Biome> getBiomes() {
|
||||||
|
return biomes
|
||||||
|
.getContents()
|
||||||
|
.stream()
|
||||||
|
.filter(Predicate.not(ReplaceableBiome::isSelf))
|
||||||
|
.map(ReplaceableBiome::get)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user