More loading stuff

This commit is contained in:
dfsek
2020-11-27 01:17:32 -07:00
parent 717ece9d1f
commit 96ff875d2b
5 changed files with 54 additions and 19 deletions

View File

@@ -5,9 +5,6 @@ import com.dfsek.tectonic.exception.ConfigException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.terra.Debug;
import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.palette.PaletteHolder;
import com.dfsek.terra.biome.palette.PaletteLayer;
import com.dfsek.terra.carving.CarverPalette;
import com.dfsek.terra.carving.UserDefinedCarver;
import com.dfsek.terra.config.builder.BiomeGridBuilder;
import com.dfsek.terra.config.exception.FileMissingException;
@@ -16,28 +13,19 @@ import com.dfsek.terra.config.factories.BiomeGridFactory;
import com.dfsek.terra.config.factories.CarverFactory;
import com.dfsek.terra.config.factories.PaletteFactory;
import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.config.loaders.GridSpawnLoader;
import com.dfsek.terra.config.loaders.NoiseBuilderLoader;
import com.dfsek.terra.config.loaders.PaletteHolderLoader;
import com.dfsek.terra.config.loaders.PaletteLayerLoader;
import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader;
import com.dfsek.terra.config.loaders.RangeLoader;
import com.dfsek.terra.config.loaders.base.CarverPaletteLoader;
import com.dfsek.terra.config.templates.BiomeGridTemplate;
import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.config.templates.CarverTemplate;
import com.dfsek.terra.config.templates.PaletteTemplate;
import com.dfsek.terra.config.templates.StructureTemplate;
import com.dfsek.terra.generation.config.NoiseBuilder;
import com.dfsek.terra.procgen.GridSpawn;
import com.dfsek.terra.registry.BiomeGridRegistry;
import com.dfsek.terra.registry.BiomeRegistry;
import com.dfsek.terra.registry.CarverRegistry;
import com.dfsek.terra.registry.PaletteRegistry;
import com.dfsek.terra.registry.StructureRegistry;
import com.dfsek.terra.util.ConfigUtil;
import org.polydev.gaea.math.ProbabilityCollection;
import org.polydev.gaea.math.Range;
import org.polydev.gaea.world.palette.Palette;
import java.io.File;
@@ -76,13 +64,9 @@ public class ConfigPack {
AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader();
abstractConfigLoader.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader())
.registerLoader(Range.class, new RangeLoader())
.registerLoader(CarverPalette.class, new CarverPaletteLoader())
.registerLoader(GridSpawn.class, new GridSpawnLoader())
.registerLoader(PaletteHolder.class, new PaletteHolderLoader())
.registerLoader(PaletteLayer.class, new PaletteLayerLoader())
abstractConfigLoader
.registerLoader(Palette.class, paletteRegistry);
ConfigUtil.registerAllLoaders(abstractConfigLoader);
List<PaletteTemplate> paletteTemplates = abstractConfigLoader.load(ConfigUtil.loadFromPath(new File(folder, "palettes").toPath()), PaletteTemplate::new);
PaletteFactory paletteFactory = new PaletteFactory();

View File

@@ -0,0 +1,15 @@
package com.dfsek.terra.config.loaders;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
import org.bukkit.block.Biome;
import java.lang.reflect.Type;
public class VanillaBiomeLoader implements TypeLoader<Biome> {
@Override
public Biome load(Type type, Object o, ConfigLoader configLoader) throws LoadException {
return Biome.valueOf((String) o);
}
}

View File

@@ -29,7 +29,8 @@ public class BiomeTemplate implements ConfigTemplate {
private PaletteHolder palette;
@Value("slant.palette")
@Abstractable
private PaletteHolder slantPalette;
@Default
private PaletteHolder slantPalette = null;
@Value("vanilla")
@Abstractable
private Biome vanilla;
@@ -53,15 +54,19 @@ public class BiomeTemplate implements ConfigTemplate {
@Default
private List<Ore> ores = new GlueList<>();
@Value("ocean.level")
@Abstractable
@Default
private int seaLevel = 62;
@Value("ocean.palette")
@Abstractable
@Default
private Palette<BlockData> oceanPalette; // TODO: default palette
@Value("slant.y-offset.top")
@Abstractable
@Default
private double slantOffsetTop = 0.5D;
@Value("slant.y-offset-bottom")
@Abstractable
@Default
private double slantOffsetBottom = 0.25;
@Value("elevation.equation")

View File

@@ -1,5 +1,21 @@
package com.dfsek.terra.util;
import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.terra.biome.palette.PaletteHolder;
import com.dfsek.terra.biome.palette.PaletteLayer;
import com.dfsek.terra.carving.CarverPalette;
import com.dfsek.terra.config.loaders.GridSpawnLoader;
import com.dfsek.terra.config.loaders.PaletteHolderLoader;
import com.dfsek.terra.config.loaders.PaletteLayerLoader;
import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader;
import com.dfsek.terra.config.loaders.RangeLoader;
import com.dfsek.terra.config.loaders.VanillaBiomeLoader;
import com.dfsek.terra.config.loaders.base.CarverPaletteLoader;
import com.dfsek.terra.procgen.GridSpawn;
import org.bukkit.block.Biome;
import org.polydev.gaea.math.ProbabilityCollection;
import org.polydev.gaea.math.Range;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -28,4 +44,19 @@ public final class ConfigUtil {
return streams;
}
/**
* Register all Terra loaders to a {@link TypeRegistry}.
*
* @param registry Registry.
*/
public static void registerAllLoaders(TypeRegistry registry) {
registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader())
.registerLoader(Range.class, new RangeLoader())
.registerLoader(CarverPalette.class, new CarverPaletteLoader())
.registerLoader(GridSpawn.class, new GridSpawnLoader())
.registerLoader(PaletteHolder.class, new PaletteHolderLoader())
.registerLoader(PaletteLayer.class, new PaletteLayerLoader())
.registerLoader(Biome.class, new VanillaBiomeLoader());
}
}