diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 91c16238d..c1f289dc9 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -17,6 +17,7 @@ package com.dfsek.terra.config; +import ca.solostudios.strata.version.Version; import ca.solostudios.strata.version.VersionRange; import com.dfsek.tectonic.api.TypeRegistry; @@ -34,6 +35,7 @@ import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader; import com.dfsek.terra.config.loaders.RangeLoader; +import com.dfsek.terra.config.loaders.VersionLoader; import com.dfsek.terra.config.loaders.VersionRangeLoader; @@ -48,6 +50,7 @@ public class GenericLoaders implements LoaderRegistrar { public void register(TypeRegistry registry) { registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()) .registerLoader(Range.class, new RangeLoader()) + .registerLoader(Version.class, new VersionLoader()) .registerLoader(MaterialSet.class, new MaterialSetLoader()) .registerLoader(VersionRange.class, new VersionRangeLoader()) .registerLoader(LinkedHashMap.class, new LinkedHashMapLoader()); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/VersionLoader.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/VersionLoader.java new file mode 100644 index 000000000..c30e966b4 --- /dev/null +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/VersionLoader.java @@ -0,0 +1,23 @@ +package com.dfsek.terra.config.loaders; + +import ca.solostudios.strata.Versions; +import ca.solostudios.strata.parser.tokenizer.ParseException; +import ca.solostudios.strata.version.Version; +import com.dfsek.tectonic.api.exception.LoadException; +import com.dfsek.tectonic.api.loader.ConfigLoader; +import com.dfsek.tectonic.api.loader.type.TypeLoader; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.AnnotatedType; + + +public class VersionLoader implements TypeLoader { + @Override + public Version load(@NotNull AnnotatedType t, @NotNull Object c, @NotNull ConfigLoader loader) throws LoadException { + try { + return Versions.parseVersion((String) c); + } catch(ParseException e) { + throw new LoadException("Failed to parse version", e); + } + } +}