mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-01 23:47:50 +00:00
Extra fancy loading
This commit is contained in:
parent
fe6ea9511b
commit
1c0954d0cf
@ -6,7 +6,7 @@ end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
insert_final_newline = false
|
||||
max_line_length = 120
|
||||
max_line_length = 140
|
||||
tab_width = 4
|
||||
ij_continuation_indent_size = 8
|
||||
ij_formatter_off_tag = @formatter:off
|
||||
|
@ -4,7 +4,6 @@ import com.dfsek.tectonic.abstraction.AbstractConfigLoader;
|
||||
import com.dfsek.tectonic.exception.ConfigException;
|
||||
import com.dfsek.tectonic.exception.LoadException;
|
||||
import com.dfsek.tectonic.loading.ConfigLoader;
|
||||
import com.dfsek.terra.Debug;
|
||||
import com.dfsek.terra.biome.UserDefinedBiome;
|
||||
import com.dfsek.terra.carving.UserDefinedCarver;
|
||||
import com.dfsek.terra.config.builder.biomegrid.BiomeGridBuilder;
|
||||
@ -15,10 +14,12 @@ import com.dfsek.terra.config.factories.CarverFactory;
|
||||
import com.dfsek.terra.config.factories.FloraFactory;
|
||||
import com.dfsek.terra.config.factories.OreFactory;
|
||||
import com.dfsek.terra.config.factories.PaletteFactory;
|
||||
import com.dfsek.terra.config.factories.TerraFactory;
|
||||
import com.dfsek.terra.config.files.FolderLoader;
|
||||
import com.dfsek.terra.config.files.Loader;
|
||||
import com.dfsek.terra.config.files.ZIPLoader;
|
||||
import com.dfsek.terra.config.lang.LangUtil;
|
||||
import com.dfsek.terra.config.templates.AbstractableTemplate;
|
||||
import com.dfsek.terra.config.templates.BiomeGridTemplate;
|
||||
import com.dfsek.terra.config.templates.BiomeTemplate;
|
||||
import com.dfsek.terra.config.templates.CarverTemplate;
|
||||
@ -34,6 +35,7 @@ import com.dfsek.terra.registry.FloraRegistry;
|
||||
import com.dfsek.terra.registry.OreRegistry;
|
||||
import com.dfsek.terra.registry.PaletteRegistry;
|
||||
import com.dfsek.terra.registry.StructureRegistry;
|
||||
import com.dfsek.terra.registry.TerraRegistry;
|
||||
import com.dfsek.terra.util.ConfigUtil;
|
||||
import org.polydev.gaea.biome.Biome;
|
||||
import org.polydev.gaea.world.Flora;
|
||||
@ -127,71 +129,17 @@ public class ConfigPack {
|
||||
for(Map.Entry<String, Double> var : template.getVariables().entrySet()) {
|
||||
varScope.create(var.getKey()).setValue(var.getValue());
|
||||
}
|
||||
loader
|
||||
.open("palettes").then(streams -> buildAll(new PaletteFactory(), paletteRegistry, abstractConfigLoader.load(streams, PaletteTemplate::new))).close()
|
||||
.open("ores").then(streams -> buildAll(new OreFactory(), oreRegistry, abstractConfigLoader.load(streams, OreTemplate::new))).close()
|
||||
.open("flora").then(streams -> buildAll(new FloraFactory(), floraRegistry, abstractConfigLoader.load(streams, FloraTemplate::new))).close()
|
||||
.open("carving").then(streams -> buildAll(new CarverFactory(this), carverRegistry, abstractConfigLoader.load(streams, CarverTemplate::new))).close()
|
||||
.open("biomes").then(streams -> buildAll(new BiomeFactory(this), biomeRegistry, abstractConfigLoader.load(streams, () -> new BiomeTemplate(this)))).close()
|
||||
.open("grids").then(streams -> buildAll(new BiomeGridFactory(), biomeGridRegistry, abstractConfigLoader.load(streams, BiomeGridTemplate::new))).close();
|
||||
}
|
||||
|
||||
loader.open("palettes")
|
||||
.then(streams -> {
|
||||
PaletteFactory paletteFactory = new PaletteFactory();
|
||||
abstractConfigLoader.load(streams, PaletteTemplate::new).forEach(palette -> {
|
||||
paletteRegistry.add(palette.getID(), paletteFactory.build(palette));
|
||||
Debug.info("Loaded palette " + palette.getID());
|
||||
});
|
||||
})
|
||||
.close()
|
||||
.open("ores")
|
||||
.then(streams -> {
|
||||
OreFactory oreFactory = new OreFactory();
|
||||
abstractConfigLoader.load(streams, OreTemplate::new).forEach(ore -> {
|
||||
oreRegistry.add(ore.getID(), oreFactory.build(ore));
|
||||
Debug.info("Loaded ore " + ore.getID());
|
||||
});
|
||||
})
|
||||
.close()
|
||||
.open("flora")
|
||||
.then(streams -> {
|
||||
FloraFactory floraFactory = new FloraFactory();
|
||||
abstractConfigLoader.load(streams, FloraTemplate::new).forEach(flora -> {
|
||||
floraRegistry.add(flora.getID(), floraFactory.build(flora));
|
||||
Debug.info("Loaded flora " + flora.getID());
|
||||
});
|
||||
})
|
||||
.close()
|
||||
.open("structures/single")
|
||||
.then(streams -> abstractConfigLoader.load(streams, StructureTemplate::new).forEach(structure -> {
|
||||
structureRegistry.add(structure.getID(), structure);
|
||||
Debug.info("Loaded structure " + structure.getID());
|
||||
}))
|
||||
.close()
|
||||
.open("carving")
|
||||
.then(streams -> {
|
||||
CarverFactory carverFactory = new CarverFactory(this);
|
||||
abstractConfigLoader.load(streams, CarverTemplate::new).forEach(carver -> {
|
||||
try {
|
||||
carverRegistry.add(carver.getID(), carverFactory.build(carver));
|
||||
} catch(LoadException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
Debug.info("Loaded carver " + carver.getID());
|
||||
});
|
||||
})
|
||||
.close()
|
||||
.open("biomes")
|
||||
.then(streams -> {
|
||||
BiomeFactory biomeFactory = new BiomeFactory(this);
|
||||
abstractConfigLoader.load(streams, () -> new BiomeTemplate(this)).forEach(biome -> {
|
||||
biomeRegistry.add(biome.getID(), biomeFactory.build(biome));
|
||||
Debug.info("Loaded biome " + biome.getID());
|
||||
});
|
||||
})
|
||||
.close()
|
||||
.open("grids")
|
||||
.then(streams -> {
|
||||
BiomeGridFactory biomeGridFactory = new BiomeGridFactory();
|
||||
abstractConfigLoader.load(streams, BiomeGridTemplate::new).forEach(grid -> {
|
||||
biomeGridRegistry.add(grid.getID(), biomeGridFactory.build(grid));
|
||||
Debug.info("Loaded BiomeGrid " + grid.getID());
|
||||
});
|
||||
})
|
||||
.close();
|
||||
private <C extends AbstractableTemplate, O> void buildAll(TerraFactory<C, O> factory, TerraRegistry<O> registry, List<C> configTemplates) throws LoadException {
|
||||
for(C template : configTemplates) registry.add(template.getID(), factory.build(template));
|
||||
}
|
||||
|
||||
public UserDefinedBiome getBiome(String id) {
|
||||
|
@ -1,13 +1,14 @@
|
||||
package com.dfsek.terra.config.factories;
|
||||
|
||||
import com.dfsek.terra.biome.UserDefinedBiome;
|
||||
import com.dfsek.terra.config.builder.biomegrid.BiomeGridBuilder;
|
||||
import com.dfsek.terra.config.builder.biomegrid.UserDefinedGridBuilder;
|
||||
import com.dfsek.terra.config.templates.BiomeGridTemplate;
|
||||
import org.polydev.gaea.biome.Biome;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class BiomeGridFactory implements TerraFactory<BiomeGridTemplate, UserDefinedGridBuilder> {
|
||||
public class BiomeGridFactory implements TerraFactory<BiomeGridTemplate, BiomeGridBuilder> {
|
||||
|
||||
@Override
|
||||
public UserDefinedGridBuilder build(BiomeGridTemplate config) {
|
||||
|
@ -5,10 +5,11 @@ import com.dfsek.terra.config.templates.FloraTemplate;
|
||||
import com.dfsek.terra.generation.items.flora.TerraFlora;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.polydev.gaea.util.FastRandom;
|
||||
import org.polydev.gaea.world.Flora;
|
||||
import org.polydev.gaea.world.palette.Palette;
|
||||
import org.polydev.gaea.world.palette.RandomPalette;
|
||||
|
||||
public class FloraFactory implements TerraFactory<FloraTemplate, TerraFlora> {
|
||||
public class FloraFactory implements TerraFactory<FloraTemplate, Flora> {
|
||||
@Override
|
||||
public TerraFlora build(FloraTemplate config) {
|
||||
Palette<BlockData> palette = new RandomPalette<>(new FastRandom(2403));
|
||||
|
@ -0,0 +1,7 @@
|
||||
package com.dfsek.terra.config.templates;
|
||||
|
||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||
|
||||
public abstract class AbstractableTemplate implements ConfigTemplate {
|
||||
public abstract String getID();
|
||||
}
|
@ -2,13 +2,12 @@ package com.dfsek.terra.config.templates;
|
||||
|
||||
import com.dfsek.tectonic.annotations.Abstractable;
|
||||
import com.dfsek.tectonic.annotations.Value;
|
||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||
import org.polydev.gaea.biome.Biome;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class BiomeGridTemplate implements ConfigTemplate {
|
||||
public class BiomeGridTemplate extends AbstractableTemplate {
|
||||
|
||||
@Value("grid")
|
||||
@Abstractable
|
||||
|
@ -3,7 +3,6 @@ package com.dfsek.terra.config.templates;
|
||||
import com.dfsek.tectonic.annotations.Abstractable;
|
||||
import com.dfsek.tectonic.annotations.Default;
|
||||
import com.dfsek.tectonic.annotations.Value;
|
||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||
import com.dfsek.terra.biome.palette.PaletteHolder;
|
||||
import com.dfsek.terra.biome.palette.SinglePalette;
|
||||
import com.dfsek.terra.carving.UserDefinedCarver;
|
||||
@ -23,7 +22,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@SuppressWarnings({"FieldMayBeFinal", "unused"})
|
||||
public class BiomeTemplate implements ConfigTemplate {
|
||||
public class BiomeTemplate extends AbstractableTemplate {
|
||||
|
||||
private final ConfigPack pack;
|
||||
@Value("id")
|
||||
|
@ -3,7 +3,6 @@ package com.dfsek.terra.config.templates;
|
||||
import com.dfsek.tectonic.annotations.Abstractable;
|
||||
import com.dfsek.tectonic.annotations.Default;
|
||||
import com.dfsek.tectonic.annotations.Value;
|
||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||
import com.dfsek.terra.carving.CarverPalette;
|
||||
import org.bukkit.Material;
|
||||
import org.polydev.gaea.math.Range;
|
||||
@ -14,7 +13,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@SuppressWarnings({"unused", "FieldMayBeFinal"})
|
||||
public class CarverTemplate implements ConfigTemplate {
|
||||
public class CarverTemplate extends AbstractableTemplate {
|
||||
@Value("id")
|
||||
private String id;
|
||||
|
||||
|
@ -3,7 +3,6 @@ package com.dfsek.terra.config.templates;
|
||||
import com.dfsek.tectonic.annotations.Abstractable;
|
||||
import com.dfsek.tectonic.annotations.Default;
|
||||
import com.dfsek.tectonic.annotations.Value;
|
||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||
import com.dfsek.terra.biome.palette.PaletteLayer;
|
||||
import com.google.common.collect.Sets;
|
||||
import org.bukkit.Material;
|
||||
@ -12,7 +11,7 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@SuppressWarnings({"FieldMayBeFinal", "unused"})
|
||||
public class FloraTemplate implements ConfigTemplate {
|
||||
public class FloraTemplate extends AbstractableTemplate {
|
||||
@Value("id")
|
||||
private String id;
|
||||
|
||||
|
@ -3,7 +3,6 @@ package com.dfsek.terra.config.templates;
|
||||
import com.dfsek.tectonic.annotations.Abstractable;
|
||||
import com.dfsek.tectonic.annotations.Default;
|
||||
import com.dfsek.tectonic.annotations.Value;
|
||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||
import com.dfsek.terra.generation.items.ores.Ore;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@ -14,7 +13,7 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@SuppressWarnings({"unused", "FieldMayBeFinal"})
|
||||
public class OreTemplate implements ConfigTemplate {
|
||||
public class OreTemplate extends AbstractableTemplate {
|
||||
@Value("id")
|
||||
private String id;
|
||||
|
||||
|
@ -3,13 +3,12 @@ package com.dfsek.terra.config.templates;
|
||||
import com.dfsek.tectonic.annotations.Abstractable;
|
||||
import com.dfsek.tectonic.annotations.Default;
|
||||
import com.dfsek.tectonic.annotations.Value;
|
||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||
import com.dfsek.terra.biome.palette.PaletteLayer;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@SuppressWarnings({"FieldMayBeFinal", "unused"})
|
||||
public class PaletteTemplate implements ConfigTemplate {
|
||||
public class PaletteTemplate extends AbstractableTemplate {
|
||||
@Value("id")
|
||||
private String id;
|
||||
|
||||
|
@ -2,7 +2,6 @@ package com.dfsek.terra.config.templates;
|
||||
|
||||
import com.dfsek.tectonic.annotations.Abstractable;
|
||||
import com.dfsek.tectonic.annotations.Value;
|
||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||
import com.dfsek.terra.procgen.GridSpawn;
|
||||
import com.dfsek.terra.structure.Structure;
|
||||
import org.polydev.gaea.math.ProbabilityCollection;
|
||||
@ -12,7 +11,7 @@ import org.polydev.gaea.structures.loot.LootTable;
|
||||
import java.util.Map;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class StructureTemplate implements ConfigTemplate {
|
||||
public class StructureTemplate extends AbstractableTemplate {
|
||||
@Value("id")
|
||||
private String id;
|
||||
|
||||
|
@ -3,7 +3,6 @@ package com.dfsek.terra.config.templates;
|
||||
import com.dfsek.tectonic.annotations.Abstractable;
|
||||
import com.dfsek.tectonic.annotations.Default;
|
||||
import com.dfsek.tectonic.annotations.Value;
|
||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||
import com.dfsek.terra.structure.Structure;
|
||||
import org.bukkit.Material;
|
||||
import org.polydev.gaea.math.ProbabilityCollection;
|
||||
@ -11,7 +10,7 @@ import org.polydev.gaea.math.ProbabilityCollection;
|
||||
import java.util.Set;
|
||||
|
||||
@SuppressWarnings({"unused", "FieldMayBeFinal"})
|
||||
public class TreeTemplate implements ConfigTemplate {
|
||||
public class TreeTemplate extends AbstractableTemplate {
|
||||
@Value("files")
|
||||
@Abstractable
|
||||
private ProbabilityCollection<Structure> structures;
|
||||
@ -32,7 +31,7 @@ public class TreeTemplate implements ConfigTemplate {
|
||||
return structures;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
public String getID() {
|
||||
return id;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user