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 new file mode 100644 index 000000000..73930fd3b --- /dev/null +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeAddon.java @@ -0,0 +1,27 @@ +package com.dfsek.terra.addons.tree; + +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.EventListener; +import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.injection.annotations.Inject; + +@Addon("core-tree-config") +@Author("Terra") +@Version("1.0.0") +public class TreeAddon extends TerraAddon implements EventListener { + @Inject + private TerraPlugin main; + + @Override + public void initialize() { + main.getEventManager().registerListener(this, this); + } + + public void onPackLoad(ConfigPackPreLoadEvent event) { + event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2); + } +} diff --git a/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java new file mode 100644 index 000000000..7af6d171a --- /dev/null +++ b/common/addons/tree/src/main/java/com/dfsek/terra/addons/tree/TreeConfigType.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.addons.tree; + +import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.registry.OpenRegistry; +import com.dfsek.terra.api.world.Tree; + +import java.util.function.Supplier; + +public class TreeConfigType implements ConfigType { + private final TreeFactory factory = new TreeFactory(); + private final ConfigPack pack; + + public TreeConfigType(ConfigPack pack) { + this.pack = pack; + } + + @Override + public TreeTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + return new TreeTemplate(); + } + + @Override + public ConfigFactory getFactory() { + return factory; + } + + @Override + public Class getTypeClass() { + return Tree.class; + } + + @Override + public Supplier> registrySupplier() { + return pack.getRegistryFactory()::create; + } +}