From 719ea83bcda9821ed66c105d008dcd734f18afb7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 8 Jul 2021 09:54:18 -0700 Subject: [PATCH] populator registration --- .../main/java/com/dfsek/terra/addons/flora/FloraAddon.java | 5 ++++- .../src/main/java/com/dfsek/terra/addons/ore/OreAddon.java | 5 ++++- .../main/java/com/dfsek/terra/addons/tree/TreeAddon.java | 5 ++++- .../terra/api/world/generator/BlockPopulatorProvider.java | 7 +++++++ 4 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index 796b84f9d..f1ff7a55b 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -8,6 +8,8 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.world.generator.BlockPopulatorProvider; @Addon("core-flora-config") @Author("Terra") @@ -21,7 +23,8 @@ public class FloraAddon extends TerraAddon implements EventListener { main.getEventManager().registerListener(this, this); } - public void onPackLoad(ConfigPackPreLoadEvent event) { + public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new FloraConfigType(event.getPack()), "FLORA", 2); + event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("FLORA", pack -> new FloraPopulator(main)); } } diff --git a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java index 58667776c..4e26c5316 100644 --- a/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ b/common/addons/ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -8,6 +8,8 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.world.generator.BlockPopulatorProvider; @Addon("core-ore-config") @@ -22,7 +24,8 @@ public class OreAddon extends TerraAddon implements EventListener { main.getEventManager().registerListener(this, this); } - public void onPackLoad(ConfigPackPreLoadEvent event) { + public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new OreConfigType(event.getPack()), "ORE", 1); + event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("ORE", pack -> new OrePopulator(main)); } } diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java index 73930fd3b..85ff2c471 100644 --- a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -8,6 +8,8 @@ import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.api.world.generator.BlockPopulatorProvider; @Addon("core-tree-config") @Author("Terra") @@ -21,7 +23,8 @@ public class TreeAddon extends TerraAddon implements EventListener { main.getEventManager().registerListener(this, this); } - public void onPackLoad(ConfigPackPreLoadEvent event) { + public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2); + event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("TREE", pack -> new TreePopulator(main)); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java new file mode 100644 index 000000000..f2d1b5c36 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/generator/BlockPopulatorProvider.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.world.generator; + +import com.dfsek.terra.api.config.ConfigPack; + +public interface BlockPopulatorProvider { + TerraBlockPopulator newInstance(ConfigPack pack); +}