diff --git a/common/addons/biome/config/build.gradle.kts b/common/addons/biome/config/build.gradle.kts index d6f23e57a..4b0339e03 100644 --- a/common/addons/biome/config/build.gradle.kts +++ b/common/addons/biome/config/build.gradle.kts @@ -14,6 +14,7 @@ group = "com.dfsek.terra.common" dependencies { "shadedApi"(project(":common:api")) + "compileOnly"(project(":common:addons:noise")) "shadedApi"("org.apache.commons:commons-rng-core:1.3") "shadedApi"("commons-io:commons-io:2.4") 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 0c4691c98..f3fbf4f88 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 @@ -1,5 +1,6 @@ package com.dfsek.terra.api.config; +import com.dfsek.terra.api.registry.meta.RegistryHolder; import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.addon.TerraAddon; @@ -10,14 +11,14 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import java.util.Map; import java.util.Set; -public interface ConfigPack extends LoaderRegistrar, LoaderHolder { +public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder { CheckedRegistry getRegistry(Class clazz); BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder(); WorldConfig toWorldConfig(TerraWorld world); - CheckedRegistry> getConfigTypeRegistry(); + void registerConfigType(ConfigType type, int priority); Set addons(); 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 new file mode 100644 index 000000000..dcad668f1 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.api.registry.meta; + +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.Registry; + +public interface RegistryHolder { + Registry getRegistry(Class clazz); + + CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException; +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index d3001134b..52929642c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -292,6 +292,11 @@ public class ConfigPackImpl implements ConfigPack { return (CheckedRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getRight(); } + @Override + public CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException { + return null; + } + @SuppressWarnings("unchecked") protected OpenRegistry getOpenRegistry(Class clazz) { return (OpenRegistry) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getLeft(); @@ -323,14 +328,8 @@ public class ConfigPackImpl implements ConfigPack { } @Override - public CheckedRegistry> getConfigTypeRegistry() { - return new CheckedRegistryImpl<>(configTypeRegistry) { - @Override - @SuppressWarnings("deprecation") - public void addUnchecked(String identifier, ConfigType value) { - if(contains(identifier)) throw new UnsupportedOperationException("Cannot override values in ConfigTypeRegistry!"); - } - }; + public void registerConfigType(ConfigType type, int priority) { + } @Override