From bdcf3099b1dde7b4ba27e4c0711724b1be40aea5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:13:51 -0700 Subject: [PATCH] Initial commit --- common/addons/biome-provider-single/README.md | 4 ++ .../biome-provider-single/build.gradle.kts | 2 + .../biome/single/SingleBiomeProvider.java | 18 ++++++++ .../single/SingleBiomeProviderAddon.java | 42 +++++++++++++++++++ .../single/SingleBiomeProviderTemplate.java | 19 +++++++++ 5 files changed, 85 insertions(+) create mode 100644 common/addons/biome-provider-single/README.md create mode 100644 common/addons/biome-provider-single/build.gradle.kts create mode 100644 common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java create mode 100644 common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java create mode 100644 common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java diff --git a/common/addons/biome-provider-single/README.md b/common/addons/biome-provider-single/README.md new file mode 100644 index 000000000..3bea8cbb5 --- /dev/null +++ b/common/addons/biome-provider-single/README.md @@ -0,0 +1,4 @@ +# biome-provider-single + +Registers and configures the `SINGLE` biome provider, a biome provider which +accepts a single biome to generate continuously. \ No newline at end of file diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts new file mode 100644 index 000000000..7d82dc72f --- /dev/null +++ b/common/addons/biome-provider-single/build.gradle.kts @@ -0,0 +1,2 @@ +dependencies { +} diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java new file mode 100644 index 000000000..694da0b8d --- /dev/null +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java @@ -0,0 +1,18 @@ +package com.dfsek.terra.addons.biome.single; + +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + +public class SingleBiomeProvider implements BiomeProvider { + private final TerraBiome biome; + + public SingleBiomeProvider(TerraBiome biome) { + this.biome = biome; + } + + @Override + public TerraBiome getBiome(int x, int z, long seed) { + return biome; + } +} diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java new file mode 100644 index 000000000..d5ea2cee7 --- /dev/null +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java @@ -0,0 +1,42 @@ +package com.dfsek.terra.addons.biome.single; + +import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import java.util.function.Supplier; + +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.addon.annotations.Addon; +import com.dfsek.terra.api.addon.annotations.Author; +import com.dfsek.terra.api.addon.annotations.Version; +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; + + +@Addon("biome-provider-single") +@Author("Terra") +@Version("1.0.0") +public class SingleBiomeProviderAddon extends TerraAddon { + public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { + }; + + @Inject + private Platform platform; + + @Override + public void initialize() { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( + PROVIDER_REGISTRY_KEY); + providerRegistry.register("SINGLE", SingleBiomeProviderTemplate::new); + }) + .failThrough(); + } +} diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java new file mode 100644 index 000000000..034c7887b --- /dev/null +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java @@ -0,0 +1,19 @@ +package com.dfsek.terra.addons.biome.single; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + + +public class SingleBiomeProviderTemplate implements ObjectTemplate { + @Value("biome") + private @Meta TerraBiome biome; + + @Override + public BiomeProvider get() { + return new SingleBiomeProvider(biome); + } +}