convert GridSpawnLoader to object template

This commit is contained in:
dfsek
2021-06-14 14:00:33 -07:00
parent c6636a72da
commit 2020ef31e4
3 changed files with 27 additions and 19 deletions

View File

@@ -26,7 +26,7 @@ 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.config.FloraLayerTemplate;
import com.dfsek.terra.config.loaders.config.GridSpawnLoader;
import com.dfsek.terra.config.loaders.config.GridSpawnTemplate;
import com.dfsek.terra.config.loaders.config.OreConfigLoader;
import com.dfsek.terra.config.loaders.config.OreHolderLoader;
import com.dfsek.terra.config.loaders.config.TreeLayerLoader;
@@ -69,7 +69,7 @@ public class GenericLoaders implements LoaderRegistrar {
public void register(TypeRegistry registry) {
registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader())
.registerLoader(Range.class, new RangeLoader())
.registerLoader(GridSpawn.class, new GridSpawnLoader())
.registerLoader(GridSpawn.class, GridSpawnTemplate::new)
.registerLoader(PaletteHolder.class, new PaletteHolderLoader())
.registerLoader(PaletteLayerHolder.class, new PaletteLayerLoader())
.registerLoader(FloraLayer.class, FloraLayerTemplate::new)

View File

@@ -1,17 +0,0 @@
package com.dfsek.terra.config.loaders.config;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.terra.api.math.GridSpawn;
import java.lang.reflect.Type;
import java.util.Map;
@SuppressWarnings("unchecked")
public class GridSpawnLoader implements TypeLoader<GridSpawn> {
@Override
public GridSpawn load(Type type, Object o, ConfigLoader configLoader) {
Map<String, Integer> map = (Map<String, Integer>) o;
return new GridSpawn(map.get("width"), map.get("padding"), map.getOrDefault("salt", 0));
}
}

View File

@@ -0,0 +1,25 @@
package com.dfsek.terra.config.loaders.config;
import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.api.config.meta.MetaValue;
import com.dfsek.terra.api.math.GridSpawn;
@SuppressWarnings("FieldMayBeFinal")
public class GridSpawnTemplate implements ObjectTemplate<GridSpawn> {
@Value("width")
private MetaValue<Integer> width;
@Value("padding")
private MetaValue<Integer> padding;
@Value("salt")
@Default
private MetaValue<Integer> salt = MetaValue.of(0);
@Override
public GridSpawn get() {
return new GridSpawn(width.get(), padding.get(), salt.get());
}
}