diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java index 5578455b2..fb5d5657b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java @@ -16,20 +16,20 @@ import java.util.Map; import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.key.Keyed; -import com.dfsek.terra.api.registry.key.Namespaced; import com.dfsek.terra.api.registry.key.RegistryKey; +import com.dfsek.terra.api.registry.meta.CheckedRegistryHolder; import com.dfsek.terra.api.registry.meta.RegistryHolder; +import com.dfsek.terra.api.registry.meta.RegistryProvider; import com.dfsek.terra.api.tectonic.ConfigLoadingDelegate; import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.tectonic.ShortcutLoader; -import com.dfsek.terra.api.registry.key.StringIdentifiable; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; import com.dfsek.terra.api.world.chunk.generation.util.provider.ChunkGeneratorProvider; -public interface ConfigPack extends LoaderRegistrar, ConfigLoadingDelegate, RegistryHolder, Keyed { +public interface ConfigPack extends LoaderRegistrar, ConfigLoadingDelegate, CheckedRegistryHolder, RegistryProvider, Keyed { ConfigPack registerConfigType(ConfigType type, RegistryKey id, int priority); @@ -37,12 +37,6 @@ public interface ConfigPack extends LoaderRegistrar, ConfigLoadingDelegate, Regi BiomeProvider getBiomeProvider(); - default CheckedRegistry getOrCreateRegistry(Class clazz) { - return getOrCreateRegistry(TypeKey.of(clazz)); - } - - CheckedRegistry getOrCreateRegistry(TypeKey type); - List getStages(); Loader getLoader(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/CheckedRegistryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/CheckedRegistryHolder.java new file mode 100644 index 000000000..a8da7a9ae --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/CheckedRegistryHolder.java @@ -0,0 +1,19 @@ +package com.dfsek.terra.api.registry.meta; + +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.util.reflection.TypeKey; + +import java.lang.reflect.Type; + + +public interface CheckedRegistryHolder extends RegistryHolder { + default CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException { + return getCheckedRegistry((Type) clazz); + } + + default CheckedRegistry getCheckedRegistry(TypeKey type) throws IllegalStateException { + return getCheckedRegistry(type.getType()); + } + + CheckedRegistry getCheckedRegistry(Type type); +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java index 5aaf42607..a42054538 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java @@ -9,7 +9,6 @@ package com.dfsek.terra.api.registry.meta; import java.lang.reflect.Type; -import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.util.reflection.TypeKey; @@ -24,16 +23,4 @@ public interface RegistryHolder { } Registry getRegistry(Type type); - - default CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException { - return getCheckedRegistry((Type) clazz); - } - - default CheckedRegistry getCheckedRegistry(TypeKey type) throws IllegalStateException { - return getCheckedRegistry(type.getType()); - } - - default CheckedRegistry getCheckedRegistry(Type type) throws IllegalStateException { - throw new UnsupportedOperationException("Cannot get checked registry."); - } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryProvider.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryProvider.java new file mode 100644 index 000000000..b3acdfd20 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryProvider.java @@ -0,0 +1,13 @@ +package com.dfsek.terra.api.registry.meta; + +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.util.reflection.TypeKey; + + +public interface RegistryProvider { + default CheckedRegistry getOrCreateRegistry(Class clazz) { + return getOrCreateRegistry(TypeKey.of(clazz)); + } + + CheckedRegistry getOrCreateRegistry(TypeKey type); +}