diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionAddon.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionAddon.java new file mode 100644 index 000000000..4a33d8e57 --- /dev/null +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionAddon.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.addons.biome.extrusion; + +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; +import com.dfsek.terra.addons.manifest.api.AddonInitializer; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.inject.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.util.reflection.TypeKey; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +import java.util.function.Supplier; + + +public class BiomeExtrusionAddon implements AddonInitializer { + public static final TypeKey>> EXTRUSION_REGISTRY_KEY = new TypeKey<>() { + }; + + @Inject + private Platform platform; + + @Inject + private BaseAddon addon; + + @Override + public void initialize() { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(addon, ConfigPackPreLoadEvent.class) + .then(event -> { + + }) + .failThrough(); + } +} diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java new file mode 100644 index 000000000..2f9a897df --- /dev/null +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.addons.biome.extrusion; + +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + + +public class BiomeExtrusionProvider implements BiomeProvider { + private final BiomeProvider delegate; + private final Set biomes; + + public BiomeExtrusionProvider(BiomeProvider delegate) { + this.delegate = delegate; + this.biomes = delegate.stream().collect(Collectors.toSet()); + } + + @Override + public Biome getBiome(int x, int y, int z, long seed) { + return delegate.getBiome(x, y, z, seed); + } + + @Override + public Iterable getBiomes() { + return biomes; + } +} diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/Extrusion.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/Extrusion.java new file mode 100644 index 000000000..cb9783d66 --- /dev/null +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/Extrusion.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.addons.biome.extrusion.api; + +import com.dfsek.terra.api.world.biome.Biome; + + +public interface Extrusion { + Biome extrude(Biome original, int x, int y, int z, long seed); + + Iterable getBiomes(); +} diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SamplerExtrusion.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SamplerExtrusion.java new file mode 100644 index 000000000..0975265de --- /dev/null +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SamplerExtrusion.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.addons.biome.extrusion.extrusions; + +import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.world.biome.Biome; + +import java.security.cert.Extension; + + +/** + * Extrusion which operates using a noise sampler + */ +public abstract class SamplerExtrusion implements Extrusion { + protected NoiseSampler sampler; + + @Override + public Biome extrude(Biome original, int x, int y, int z, long seed) { + return null; + } +} diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SetExtrusion.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SetExtrusion.java new file mode 100644 index 000000000..fae6a7b98 --- /dev/null +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SetExtrusion.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.addons.biome.extrusion.extrusions; + +/** + * Sets biomes at locations based on a sampler. + */ +public class SetExtrusion { +} diff --git a/common/addons/biome-provider-extrusion/src/main/resources/terra.addon.yml b/common/addons/biome-provider-extrusion/src/main/resources/terra.addon.yml new file mode 100644 index 000000000..ea0dd68c1 --- /dev/null +++ b/common/addons/biome-provider-extrusion/src/main/resources/terra.addon.yml @@ -0,0 +1,12 @@ +schema-version: 1 +contributors: + - Terra contributors +id: biome-provider-extrusion +version: @VERSION@ +entrypoints: + - "com.dfsek.terra.addons.biome.extrusion.BiomeExtrusionAddon" +website: + issues: https://github.com/PolyhedralDev/Terra/issues + source: https://github.com/PolyhedralDev/Terra + docs: https://terra.polydev.org +license: MIT License \ No newline at end of file