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 index b5b774dc3..b7e1dbe9b 100644 --- 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 @@ -4,6 +4,7 @@ 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.ReplaceableBiome; +import com.dfsek.terra.addons.biome.extrusion.config.BiomeExtrusionTemplate; import com.dfsek.terra.addons.biome.extrusion.config.ReplaceableBiomeLoader; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; @@ -25,6 +26,9 @@ public class BiomeExtrusionAddon implements AddonInitializer { public static final TypeKey>> EXTRUSION_REGISTRY_KEY = new TypeKey<>() { }; + public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { + }; + @Inject private Platform platform; @@ -37,10 +41,13 @@ public class BiomeExtrusionAddon implements AddonInitializer { .getHandler(FunctionalEventHandler.class) .register(addon, ConfigPackPreLoadEvent.class) .then(event -> { - + CheckedRegistry>> providerRegistry = + event.getPack() + .getOrCreateRegistry(PROVIDER_REGISTRY_KEY); + providerRegistry.register(addon.key("PIPELINE"), BiomeExtrusionTemplate::new); }) .failThrough(); - + platform.getEventManager() .getHandler(FunctionalEventHandler.class) .register(addon, ConfigPackPostLoadEvent.class) 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 index 2f9a897df..af5b4965d 100644 --- 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 @@ -1,21 +1,25 @@ package com.dfsek.terra.addons.biome.extrusion; +import com.dfsek.terra.addons.biome.extrusion.api.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.List; 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; + private final List extrusions; + private final int resolution; - public BiomeExtrusionProvider(BiomeProvider delegate) { + public BiomeExtrusionProvider(BiomeProvider delegate, List extrusions, int resolution) { this.delegate = delegate; this.biomes = delegate.stream().collect(Collectors.toSet()); + this.extrusions = extrusions; + this.resolution = resolution; } @Override diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/BiomeExtrusionTemplate.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/BiomeExtrusionTemplate.java new file mode 100644 index 000000000..b2fd24ed6 --- /dev/null +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/BiomeExtrusionTemplate.java @@ -0,0 +1,29 @@ +package com.dfsek.terra.addons.biome.extrusion.config; + +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Value; +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import com.dfsek.terra.addons.biome.extrusion.BiomeExtrusionProvider; +import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +import java.util.List; + + +public class BiomeExtrusionTemplate implements ObjectTemplate { + @Value("provider") + private BiomeProvider provider; + + @Value("resolution") + @Default + private int resolution = 4; + + @Value("extrusions") + private List extrusions; + + @Override + public BiomeProvider get() { + return new BiomeExtrusionProvider(provider, extrusions, resolution); + } +}