From a2d8a5a259dd9ec98c19728ccb7b52a0adc9be44 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 29 Jul 2021 08:03:22 -0700 Subject: [PATCH] implement ImageBiomeProviderAddon --- .../biome/image/ImageBiomeProviderAddon.java | 39 +++++++++++++++++++ .../biome/image/ImageProviderTemplate.java | 12 ++++-- 2 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java new file mode 100644 index 000000000..566abff80 --- /dev/null +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.addons.biome.image; + +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.TerraPlugin; +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.injection.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.util.reflection.TypeKey; +import com.dfsek.terra.api.world.biome.TerraBiome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + +import java.util.function.Supplier; + +@Addon("biome-provider-image") +@Author("Terra") +@Version("1.0.0") +public class ImageBiomeProviderAddon extends TerraAddon { + public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() {}; + + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry(PROVIDER_REGISTRY_KEY); + providerRegistry.register("IMAGE", () -> new ImageProviderTemplate(event.getPack().getRegistry(TerraBiome.class))); + }) + .failThrough(); + } +} diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java index f0388a941..70ad46589 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java @@ -1,6 +1,8 @@ package com.dfsek.terra.addons.biome.image; +import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -8,7 +10,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.awt.image.BufferedImage; import java.util.HashSet; -public class ImageProviderTemplate /*extends BiomeProviderTemplate */ { +public class ImageProviderTemplate implements ObjectTemplate { private final Registry biomes; @Value("image.name") private BufferedImage image; @@ -16,14 +18,16 @@ public class ImageProviderTemplate /*extends BiomeProviderTemplate */ { @Value("image.align") private ImageBiomeProvider.Align align; - private int resolution; + @Value("resolution") + @Default + private int resolution = 1; public ImageProviderTemplate(Registry set) { this.biomes = set; } - //@Override - public BiomeProvider build() { + @Override + public BiomeProvider get() { return new ImageBiomeProvider(new HashSet<>(biomes.entries()), image, resolution, align); } }