working biome config addon

This commit is contained in:
dfsek
2021-07-05 00:02:48 -07:00
parent 3364a75cec
commit 25339ca4ef
12 changed files with 164 additions and 94 deletions

View File

@@ -1,5 +1,6 @@
package com.dfsek.terra.api.config;
import com.dfsek.terra.api.registry.meta.RegistryFactory;
import com.dfsek.terra.api.registry.meta.RegistryHolder;
import com.dfsek.terra.api.tectonic.LoaderHolder;
import com.dfsek.terra.api.tectonic.LoaderRegistrar;
@@ -41,4 +42,6 @@ public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolde
boolean doBetaCarvers();
boolean vanillaFlora();
RegistryFactory getRegistryFactory();
}

View File

@@ -7,10 +7,10 @@ import com.dfsek.terra.api.registry.OpenRegistry;
import java.util.function.Supplier;
public interface ConfigType<T extends ConfigTemplate, R> {
public interface ConfigType<T extends AbstractableTemplate, R> {
T getTemplate(ConfigPack pack, TerraPlugin main);
void callback(ConfigPack pack, TerraPlugin main, T loadedConfig) throws LoadException;
ConfigFactory<T, R> getFactory();
Class<R> getTypeClass();

View File

@@ -0,0 +1,26 @@
package com.dfsek.terra.api.registry.meta;
import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.terra.api.registry.OpenRegistry;
import java.util.function.Function;
/**
* Helpers to avoid creating entire registry implementations for simple overrides.
*/
public interface RegistryFactory {
/**
* Create a generic OpenRegistry.
* @param <T> Type of registry.
* @return New OpenRegistry
*/
<T> OpenRegistry<T> create();
/**
* Create an OpenRegistry with custom {@link TypeLoader}
* @param loader Function to create loader.
* @param <T> Type of registry.
* @return New OpenRegistry.
*/
<T> OpenRegistry<T> create(Function<OpenRegistry<T>, TypeLoader<T>> loader);
}