diff --git a/common/src/main/java/com/dfsek/terra/api/config/meta/MetaContext.java b/common/src/main/java/com/dfsek/terra/api/config/meta/MetaContext.java index cb5f2a7d2..bee5b7c82 100644 --- a/common/src/main/java/com/dfsek/terra/api/config/meta/MetaContext.java +++ b/common/src/main/java/com/dfsek/terra/api/config/meta/MetaContext.java @@ -4,5 +4,5 @@ package com.dfsek.terra.api.config.meta; * Context from which to pull {@link MetaValue}s */ public interface MetaContext { - T load(); + T load(Object metaCandidate); } diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaListLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaListLoader.java index 00076e868..1ae05dfbd 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaListLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaListLoader.java @@ -2,14 +2,25 @@ package com.dfsek.terra.config.loaders.meta; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.config.meta.MetaContext; import com.dfsek.terra.api.config.meta.specific.MetaList; +import com.dfsek.terra.api.util.GlueList; import java.lang.reflect.Type; +import java.util.List; + +public class MetaListLoader extends MetaValueLoader, List> { + protected MetaListLoader(MetaContext context) { + super(context); + } -public class MetaListLoader implements TypeLoader> { @Override - public MetaList load(Type t, Object c, ConfigLoader loader) throws LoadException { + public MetaList load(Type t, Object c, ConfigLoader loader) throws LoadException { return null; } + + @Override + public List get() { + return new GlueList<>(); + } } diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaMapLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaMapLoader.java index 3bdb5ad8c..764edf79a 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaMapLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaMapLoader.java @@ -2,14 +2,25 @@ package com.dfsek.terra.config.loaders.meta; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.config.meta.MetaContext; import com.dfsek.terra.api.config.meta.specific.MetaMap; import java.lang.reflect.Type; +import java.util.HashMap; +import java.util.Map; + +public class MetaMapLoader extends MetaValueLoader, Map> { + public MetaMapLoader(MetaContext context) { + super(context); + } -public class MetaMapLoader implements TypeLoader> { @Override - public MetaMap load(Type t, Object c, ConfigLoader loader) throws LoadException { + public MetaMap load(Type t, Object c, ConfigLoader loader) throws LoadException { return null; } + + @Override + public Map get() { + return new HashMap<>(); + } } diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaValueLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaValueLoader.java index dfa815a99..d554f6297 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaValueLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaValueLoader.java @@ -1,8 +1,15 @@ package com.dfsek.terra.config.loaders.meta; import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.config.meta.MetaContext; import com.dfsek.terra.api.config.meta.MetaValue; -public abstract class MetaValueLoader, T> implements TypeLoader { +import java.util.function.Supplier; +public abstract class MetaValueLoader, T> implements TypeLoader, Supplier { + private final MetaContext context; + + protected MetaValueLoader(MetaContext context) { + this.context = context; + } }