From 1c0954d0cf7beedd4c051b19dcc26e035916e23d Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 29 Nov 2020 15:24:33 -0700 Subject: [PATCH] Extra fancy loading --- .editorconfig | 2 +- .../dfsek/terra/config/base/ConfigPack.java | 78 ++++--------------- .../config/factories/BiomeGridFactory.java | 3 +- .../terra/config/factories/FloraFactory.java | 3 +- .../templates/AbstractableTemplate.java | 7 ++ .../config/templates/BiomeGridTemplate.java | 3 +- .../terra/config/templates/BiomeTemplate.java | 3 +- .../config/templates/CarverTemplate.java | 3 +- .../terra/config/templates/FloraTemplate.java | 3 +- .../terra/config/templates/OreTemplate.java | 3 +- .../config/templates/PaletteTemplate.java | 3 +- .../config/templates/StructureTemplate.java | 3 +- .../terra/config/templates/TreeTemplate.java | 5 +- 13 files changed, 34 insertions(+), 85 deletions(-) create mode 100644 src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java diff --git a/.editorconfig b/.editorconfig index 182e9199e..8fbad9dcd 100644 --- a/.editorconfig +++ b/.editorconfig @@ -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 diff --git a/src/main/java/com/dfsek/terra/config/base/ConfigPack.java b/src/main/java/com/dfsek/terra/config/base/ConfigPack.java index 0bb44a61b..3e883d13e 100644 --- a/src/main/java/com/dfsek/terra/config/base/ConfigPack.java +++ b/src/main/java/com/dfsek/terra/config/base/ConfigPack.java @@ -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 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 void buildAll(TerraFactory factory, TerraRegistry registry, List configTemplates) throws LoadException { + for(C template : configTemplates) registry.add(template.getID(), factory.build(template)); } public UserDefinedBiome getBiome(String id) { diff --git a/src/main/java/com/dfsek/terra/config/factories/BiomeGridFactory.java b/src/main/java/com/dfsek/terra/config/factories/BiomeGridFactory.java index 11a808fef..9ab78df1f 100644 --- a/src/main/java/com/dfsek/terra/config/factories/BiomeGridFactory.java +++ b/src/main/java/com/dfsek/terra/config/factories/BiomeGridFactory.java @@ -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 { +public class BiomeGridFactory implements TerraFactory { @Override public UserDefinedGridBuilder build(BiomeGridTemplate config) { diff --git a/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java b/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java index 88e43e16c..1c43bb6df 100644 --- a/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java +++ b/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java @@ -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 { +public class FloraFactory implements TerraFactory { @Override public TerraFlora build(FloraTemplate config) { Palette palette = new RandomPalette<>(new FastRandom(2403)); diff --git a/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java b/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java new file mode 100644 index 000000000..e243fc3ad --- /dev/null +++ b/src/main/java/com/dfsek/terra/config/templates/AbstractableTemplate.java @@ -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(); +} diff --git a/src/main/java/com/dfsek/terra/config/templates/BiomeGridTemplate.java b/src/main/java/com/dfsek/terra/config/templates/BiomeGridTemplate.java index c406ee77f..2180f1e8a 100644 --- a/src/main/java/com/dfsek/terra/config/templates/BiomeGridTemplate.java +++ b/src/main/java/com/dfsek/terra/config/templates/BiomeGridTemplate.java @@ -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 diff --git a/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index 5cd0a43ef..7138d5c9c 100644 --- a/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -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") diff --git a/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java b/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java index aba3f7c79..f222bde12 100644 --- a/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java +++ b/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java @@ -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; diff --git a/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java b/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java index 4f8e37019..d685d3b8c 100644 --- a/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java +++ b/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java @@ -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; diff --git a/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java index 8c8a6fe1e..8c14e6eb6 100644 --- a/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java +++ b/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java @@ -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; diff --git a/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java b/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java index ffe35883a..443bc9bab 100644 --- a/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java +++ b/src/main/java/com/dfsek/terra/config/templates/PaletteTemplate.java @@ -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; diff --git a/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java index 694881957..c387c02bf 100644 --- a/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java @@ -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; diff --git a/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java b/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java index c7b51576e..c1e9c6473 100644 --- a/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java +++ b/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java @@ -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 structures; @@ -32,7 +31,7 @@ public class TreeTemplate implements ConfigTemplate { return structures; } - public String getId() { + public String getID() { return id; }