ConfigPack interfaceification

This commit is contained in:
dfsek
2021-06-23 10:09:55 -07:00
parent bb888380aa
commit a5f879ae7a
24 changed files with 83 additions and 62 deletions
@@ -0,0 +1,16 @@
package com.dfsek.terra.api.config;
import com.dfsek.terra.api.LoaderRegistrar;
import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
public interface ConfigPack extends LoaderRegistrar {
@SuppressWarnings("unchecked")
<T> CheckedRegistry<T> getRegistry(Class<T> clazz);
BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder();
WorldConfig toWorldConfig(TerraWorld world);
CheckedRegistry<ConfigType<?, ?>> getConfigTypeRegistry();
}
@@ -5,7 +5,7 @@ import com.dfsek.terra.api.world.BiomeGrid;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.generator.ChunkData;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.world.generation.math.samplers.Sampler; import com.dfsek.terra.world.generation.math.samplers.Sampler;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -27,7 +27,7 @@ public interface TerraChunkGenerator {
boolean shouldGenerateStructures(); boolean shouldGenerateStructures();
ConfigPack getConfigPack(); ConfigPackImpl getConfigPack();
TerraPlugin getMain(); TerraPlugin getMain();
@@ -3,11 +3,11 @@ package com.dfsek.terra.commands;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.CommandTemplate;
import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.Command;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.CommandSender;
import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.config.pack.ConfigPackTemplate; import com.dfsek.terra.config.pack.ConfigPackTemplate;
@Command( @Command(
@@ -10,7 +10,7 @@ import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.world.generation.WorldGenerator; import com.dfsek.terra.world.generation.WorldGenerator;
@@ -20,11 +20,11 @@ import java.util.concurrent.ConcurrentHashMap;
public class UserDefinedBiomeBuilder implements BiomeBuilder { public class UserDefinedBiomeBuilder implements BiomeBuilder {
private final BiomeTemplate template; private final BiomeTemplate template;
private final ConfigPack pack; private final ConfigPackImpl pack;
private final Map<Long, UserDefinedBiome> biomeMap = new ConcurrentHashMap<>(); private final Map<Long, UserDefinedBiome> biomeMap = new ConcurrentHashMap<>();
public UserDefinedBiomeBuilder(BiomeTemplate template, ConfigPack pack) { public UserDefinedBiomeBuilder(BiomeTemplate template, ConfigPackImpl pack) {
this.template = template; this.template = template;
this.pack = pack; this.pack = pack;
} }
@@ -3,13 +3,13 @@ package com.dfsek.terra.config.factories;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.builder.BiomeBuilder;
import com.dfsek.terra.config.builder.UserDefinedBiomeBuilder; import com.dfsek.terra.config.builder.UserDefinedBiomeBuilder;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
public class BiomeFactory implements ConfigFactory<BiomeTemplate, BiomeBuilder> { public class BiomeFactory implements ConfigFactory<BiomeTemplate, BiomeBuilder> {
private final ConfigPack pack; private final ConfigPackImpl pack;
public BiomeFactory(ConfigPack pack) { public BiomeFactory(ConfigPackImpl pack) {
this.pack = pack; this.pack = pack;
} }
@@ -5,16 +5,16 @@ import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.MathUtil;
import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.carving.UserDefinedCarver;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.config.templates.CarverTemplate; import com.dfsek.terra.config.templates.CarverTemplate;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
public class CarverFactory implements ConfigFactory<CarverTemplate, UserDefinedCarver> { public class CarverFactory implements ConfigFactory<CarverTemplate, UserDefinedCarver> {
private final ConfigPack pack; private final ConfigPackImpl pack;
public CarverFactory(ConfigPack pack) { public CarverFactory(ConfigPackImpl pack) {
this.pack = pack; this.pack = pack;
} }
@@ -10,9 +10,11 @@ import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.LoaderRegistrar;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent;
import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.registry.OpenRegistry;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.loot.LootTable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
@@ -34,7 +36,6 @@ import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader;
import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.ImageSamplerTemplate;
import com.dfsek.terra.config.prototype.ConfigType; import com.dfsek.terra.config.prototype.ConfigType;
import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.config.prototype.ProtoConfig;
import com.dfsek.terra.registry.OpenRegistry;
import com.dfsek.terra.registry.config.ConfigTypeRegistry; import com.dfsek.terra.registry.config.ConfigTypeRegistry;
import com.dfsek.terra.registry.config.FunctionRegistry; import com.dfsek.terra.registry.config.FunctionRegistry;
import com.dfsek.terra.registry.config.LootRegistry; import com.dfsek.terra.registry.config.LootRegistry;
@@ -66,7 +67,7 @@ import java.util.zip.ZipFile;
/** /**
* Represents a Terra configuration pack. * Represents a Terra configuration pack.
*/ */
public class ConfigPack implements LoaderRegistrar { public class ConfigPackImpl implements ConfigPack {
private final ConfigPackTemplate template = new ConfigPackTemplate(); private final ConfigPackTemplate template = new ConfigPackTemplate();
private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader();
@@ -83,7 +84,7 @@ public class ConfigPack implements LoaderRegistrar {
private final ConfigTypeRegistry configTypeRegistry; private final ConfigTypeRegistry configTypeRegistry;
private final Map<Class<?>, ImmutablePair<OpenRegistry<?>, CheckedRegistry<?>>> registryMap = newRegistryMap(); private final Map<Class<?>, ImmutablePair<OpenRegistry<?>, CheckedRegistry<?>>> registryMap = newRegistryMap();
public ConfigPack(File folder, TerraPlugin main) throws ConfigException { public ConfigPackImpl(File folder, TerraPlugin main) throws ConfigException {
try { try {
this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> {
OpenRegistry<?> openRegistry = configType.registrySupplier().get(); OpenRegistry<?> openRegistry = configType.registrySupplier().get();
@@ -126,7 +127,7 @@ public class ConfigPack implements LoaderRegistrar {
toWorldConfig(new TerraWorld(new DummyWorld(), this, main)); // Build now to catch any errors immediately. toWorldConfig(new TerraWorld(new DummyWorld(), this, main)); // Build now to catch any errors immediately.
} }
public ConfigPack(ZipFile file, TerraPlugin main) throws ConfigException { public ConfigPackImpl(ZipFile file, TerraPlugin main) throws ConfigException {
try { try {
this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> { this.configTypeRegistry = new ConfigTypeRegistry(this, main, (id, configType) -> {
OpenRegistry<?> openRegistry = configType.registrySupplier().get(); OpenRegistry<?> openRegistry = configType.registrySupplier().get();
@@ -267,6 +268,7 @@ public class ConfigPack implements LoaderRegistrar {
return varScope; return varScope;
} }
@Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public <T> CheckedRegistry<T> getRegistry(Class<T> clazz) { public <T> CheckedRegistry<T> getRegistry(Class<T> clazz) {
return (CheckedRegistry<T>) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getRight(); return (CheckedRegistry<T>) registryMap.getOrDefault(clazz, ImmutablePair.ofNull()).getRight();
@@ -290,15 +292,18 @@ public class ConfigPack implements LoaderRegistrar {
.registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(getOpenRegistry(NoiseProvider.class))); .registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(getOpenRegistry(NoiseProvider.class)));
} }
@Override
public BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder() { public BiomeProvider.BiomeProviderBuilder getBiomeProviderBuilder() {
return biomeProviderBuilder; return biomeProviderBuilder;
} }
@Override
public WorldConfig toWorldConfig(TerraWorld world) { public WorldConfig toWorldConfig(TerraWorld world) {
return new WorldConfig(world, this, main); return new WorldConfig(world, this, main);
} }
@Override
public CheckedRegistry<ConfigType<?, ?>> getConfigTypeRegistry() { public CheckedRegistry<ConfigType<?, ?>> getConfigTypeRegistry() {
return new CheckedRegistry<ConfigType<?, ?>>(configTypeRegistry) { return new CheckedRegistry<ConfigType<?, ?>>(configTypeRegistry) {
@Override @Override
@@ -22,11 +22,11 @@ public class WorldConfig {
private final BiomeProvider provider; private final BiomeProvider provider;
private final TerraWorld world; private final TerraWorld world;
private final ConfigPack pack; private final ConfigPackImpl pack;
private final Map<Class<?>, LockedRegistry<?>> registryMap = new HashMap<>(); private final Map<Class<?>, LockedRegistry<?>> registryMap = new HashMap<>();
public WorldConfig(TerraWorld world, ConfigPack pack, TerraPlugin main) { public WorldConfig(TerraWorld world, ConfigPackImpl pack, TerraPlugin main) {
this.world = world; this.world = world;
this.pack = pack; this.pack = pack;
this.samplerCache = new SamplerCache(main, world); this.samplerCache = new SamplerCache(main, world);
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.prototype;
import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.registry.OpenRegistry;
import java.util.function.Supplier; import java.util.function.Supplier;
@@ -9,6 +9,7 @@ import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.config.ValidatedConfigTemplate;
import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.exception.ValidationException;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler;
import com.dfsek.terra.api.math.paralithic.BlankFunction; import com.dfsek.terra.api.math.paralithic.BlankFunction;
@@ -24,7 +25,7 @@ import com.dfsek.terra.api.world.palette.holder.PaletteHolder;
import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.api.world.palette.slant.SlantHolder;
import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.carving.UserDefinedCarver;
import com.dfsek.terra.config.loaders.config.function.FunctionTemplate; import com.dfsek.terra.config.loaders.config.function.FunctionTemplate;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.world.population.items.TerraStructure; import com.dfsek.terra.world.population.items.TerraStructure;
import com.dfsek.terra.world.population.items.flora.FloraLayer; import com.dfsek.terra.world.population.items.flora.FloraLayer;
import com.dfsek.terra.world.population.items.ores.OreHolder; import com.dfsek.terra.world.population.items.ores.OreHolder;
@@ -40,7 +41,7 @@ import java.util.Set;
@SuppressWarnings({"FieldMayBeFinal", "unused"}) @SuppressWarnings({"FieldMayBeFinal", "unused"})
public class BiomeTemplate extends AbstractableTemplate implements ValidatedConfigTemplate { public class BiomeTemplate extends AbstractableTemplate implements ValidatedConfigTemplate {
private final ConfigPack pack; private final ConfigPackImpl pack;
@Value("id") @Value("id")
private String id; private String id;
@@ -242,7 +243,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf
return doSlabs; return doSlabs;
} }
public BiomeTemplate(ConfigPack pack, TerraPlugin main) { public BiomeTemplate(ConfigPackImpl pack, TerraPlugin main) {
this.pack = pack; this.pack = pack;
biomeNoise = new NoiseSeeded() { biomeNoise = new NoiseSeeded() {
@Override @Override
@@ -3,6 +3,7 @@ package com.dfsek.terra.registry.config;
import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.Tree;
import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.Flora;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.Palette;
@@ -16,7 +17,7 @@ import com.dfsek.terra.config.factories.OreFactory;
import com.dfsek.terra.config.factories.PaletteFactory; import com.dfsek.terra.config.factories.PaletteFactory;
import com.dfsek.terra.config.factories.StructureFactory; import com.dfsek.terra.config.factories.StructureFactory;
import com.dfsek.terra.config.factories.TreeFactory; import com.dfsek.terra.config.factories.TreeFactory;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.config.prototype.ConfigType; import com.dfsek.terra.config.prototype.ConfigType;
import com.dfsek.terra.config.templates.AbstractableTemplate; import com.dfsek.terra.config.templates.AbstractableTemplate;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
@@ -37,7 +38,7 @@ import java.util.function.Supplier;
public class ConfigTypeRegistry extends OpenRegistry<ConfigType<?, ?>> { public class ConfigTypeRegistry extends OpenRegistry<ConfigType<?, ?>> {
private final BiConsumer<String, ConfigType<?, ?>> callback; private final BiConsumer<String, ConfigType<?, ?>> callback;
public ConfigTypeRegistry(ConfigPack pack, TerraPlugin main, BiConsumer<String, ConfigType<?, ?>> callback) { public ConfigTypeRegistry(ConfigPackImpl pack, TerraPlugin main, BiConsumer<String, ConfigType<?, ?>> callback) {
super(new LinkedHashMap<>()); // Ordered super(new LinkedHashMap<>()); // Ordered
this.callback = callback; this.callback = callback;
add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, Palette.class, () -> new PaletteRegistry(main))); add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, Palette.class, () -> new PaletteRegistry(main)));
@@ -71,7 +72,7 @@ public class ConfigTypeRegistry extends OpenRegistry<ConfigType<?, ?>> {
@Override @Override
public Class<ConfigPack> getTypeClass() { public Class<ConfigPack> getTypeClass() {
return ConfigPack.class; return ConfigPackImpl.class;
} }
@Override @Override
@@ -2,7 +2,7 @@ package com.dfsek.terra.registry.master;
import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.ConfigException;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.registry.OpenRegistry; import com.dfsek.terra.registry.OpenRegistry;
import java.io.File; import java.io.File;
@@ -12,9 +12,9 @@ import java.util.zip.ZipFile;
/** /**
* Class to hold config packs * Class to hold config packs
*/ */
public class ConfigRegistry extends OpenRegistry<ConfigPack> { public class ConfigRegistry extends OpenRegistry<ConfigPackImpl> {
public void load(File folder, TerraPlugin main) throws ConfigException { public void load(File folder, TerraPlugin main) throws ConfigException {
ConfigPack pack = new ConfigPack(folder, main); ConfigPackImpl pack = new ConfigPackImpl(folder, main);
add(pack.getTemplate().getID(), pack); add(pack.getTemplate().getID(), pack);
} }
@@ -43,7 +43,7 @@ public class ConfigRegistry extends OpenRegistry<ConfigPack> {
} }
public void load(ZipFile file, TerraPlugin main) throws ConfigException { public void load(ZipFile file, TerraPlugin main) throws ConfigException {
ConfigPack pack = new ConfigPack(file, main); ConfigPackImpl pack = new ConfigPackImpl(file, main);
add(pack.getTemplate().getID(), pack); add(pack.getTemplate().getID(), pack);
} }
} }
@@ -9,7 +9,7 @@ import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.Palette;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.config.pack.WorldConfig; import com.dfsek.terra.config.pack.WorldConfig;
import com.dfsek.terra.world.generation.math.samplers.Sampler; import com.dfsek.terra.world.generation.math.samplers.Sampler;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -22,7 +22,7 @@ public class TerraWorld {
private final BlockData air; private final BlockData air;
public TerraWorld(World w, ConfigPack c, TerraPlugin main) { public TerraWorld(World w, ConfigPackImpl c, TerraPlugin main) {
if(!w.isTerraWorld()) throw new IllegalArgumentException("World " + w + " is not a Terra World!"); if(!w.isTerraWorld()) throw new IllegalArgumentException("World " + w + " is not a Terra World!");
this.world = w; this.world = w;
config = c.toWorldConfig(this); config = c.toWorldConfig(this);
@@ -13,7 +13,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generation.TerraBlockPopulator;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.Palette;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.profiler.ProfileFrame;
import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.Carver;
@@ -34,7 +34,7 @@ import java.util.List;
import java.util.Random; import java.util.Random;
public class DefaultChunkGenerator2D implements TerraChunkGenerator { public class DefaultChunkGenerator2D implements TerraChunkGenerator {
private final ConfigPack configPack; private final ConfigPackImpl configPack;
private final TerraPlugin main; private final TerraPlugin main;
private final Carver carver; private final Carver carver;
@@ -42,7 +42,7 @@ public class DefaultChunkGenerator2D implements TerraChunkGenerator {
private final SamplerCache cache; private final SamplerCache cache;
public DefaultChunkGenerator2D(ConfigPack c, TerraPlugin main, SamplerCache cache) { public DefaultChunkGenerator2D(ConfigPackImpl c, TerraPlugin main, SamplerCache cache) {
this.configPack = c; this.configPack = c;
this.main = main; this.main = main;
blockPopulators.add(new CavePopulator(main)); blockPopulators.add(new CavePopulator(main));
@@ -80,7 +80,7 @@ public class DefaultChunkGenerator2D implements TerraChunkGenerator {
} }
@Override @Override
public ConfigPack getConfigPack() { public ConfigPackImpl getConfigPack() {
return configPack; return configPack;
} }
@@ -3,6 +3,7 @@ package com.dfsek.terra.world.generation.generators;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.math.range.ConstantRange;
import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.vector.Vector3;
import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.vector.Vector3Impl;
import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.block.BlockFace; import com.dfsek.terra.api.block.BlockFace;
@@ -22,7 +23,6 @@ import com.dfsek.terra.api.world.generation.TerraBlockPopulator;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.Palette;
import com.dfsek.terra.api.world.palette.SinglePalette; import com.dfsek.terra.api.world.palette.SinglePalette;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.profiler.ProfileFrame;
import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.Carver;
@@ -43,7 +43,7 @@ import java.util.Map;
import java.util.Random; import java.util.Random;
public class DefaultChunkGenerator3D implements TerraChunkGenerator { public class DefaultChunkGenerator3D implements TerraChunkGenerator {
private final ConfigPack configPack; private final ConfigPackImpl configPack;
private final TerraPlugin main; private final TerraPlugin main;
private final BlockType water; private final BlockType water;
private final SinglePalette blank; private final SinglePalette blank;
@@ -51,7 +51,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator {
private final Carver carver; private final Carver carver;
public DefaultChunkGenerator3D(ConfigPack c, TerraPlugin main) { public DefaultChunkGenerator3D(ConfigPackImpl c, TerraPlugin main) {
this.configPack = c; this.configPack = c;
this.main = main; this.main = main;
@@ -92,7 +92,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator {
} }
@Override @Override
public ConfigPack getConfigPack() { public ConfigPackImpl getConfigPack() {
return configPack; return configPack;
} }
@@ -9,6 +9,7 @@ import com.dfsek.terra.api.addon.annotations.Version;
import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.CommandManager;
import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.TerraCommandManager;
import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.command.exception.MalformedCommandException;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.event.EventManagerImpl;
import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockData;
@@ -40,7 +41,6 @@ import com.dfsek.terra.config.GenericLoaders;
import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.PluginConfig;
import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.lang.Language;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.profiler.Profiler;
import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.profiler.ProfilerImpl;
import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.AddonRegistry;
@@ -11,6 +11,7 @@ import com.dfsek.terra.api.addon.annotations.Version;
import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.CommandManager;
import com.dfsek.terra.api.command.TerraCommandManager; import com.dfsek.terra.api.command.TerraCommandManager;
import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.command.exception.MalformedCommandException;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.event.EventListener; import com.dfsek.terra.api.event.EventListener;
import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.event.EventManagerImpl;
@@ -36,7 +37,6 @@ import com.dfsek.terra.config.PluginConfig;
import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.builder.BiomeBuilder;
import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.lang.Language;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper;
import com.dfsek.terra.fabric.generation.PopulatorFeature; import com.dfsek.terra.fabric.generation.PopulatorFeature;
import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.generation.TerraBiomeSource;
@@ -1,5 +1,6 @@
package com.dfsek.terra.fabric.generation; package com.dfsek.terra.fabric.generation;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.generator.ChunkData;
import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.GeneratorWrapper;
@@ -7,7 +8,7 @@ import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generation.Chunkified;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.api.world.locate.AsyncStructureFinder;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.TerraFabricPlugin;
import com.dfsek.terra.fabric.block.FabricBlockData; import com.dfsek.terra.fabric.block.FabricBlockData;
import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor;
@@ -71,10 +72,10 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener
private final DefaultChunkGenerator3D delegate; private final DefaultChunkGenerator3D delegate;
private final TerraBiomeSource biomeSource; private final TerraBiomeSource biomeSource;
private final ConfigPack pack; private final ConfigPackImpl pack;
private DimensionType dimensionType; private DimensionType dimensionType;
public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPack configPack) { public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPackImpl configPack) {
super(biomeSource, new StructuresConfig(false)); super(biomeSource, new StructuresConfig(false));
this.pack = configPack; this.pack = configPack;
@@ -96,7 +97,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener
return new FabricChunkGeneratorWrapper((TerraBiomeSource) this.biomeSource.withSeed(seed), seed, pack); return new FabricChunkGeneratorWrapper((TerraBiomeSource) this.biomeSource.withSeed(seed), seed, pack);
} }
public ConfigPack getPack() { public ConfigPackImpl getPack() {
return pack; return pack;
} }
@@ -1,8 +1,9 @@
package com.dfsek.terra.fabric.generation; package com.dfsek.terra.fabric.generation;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.TerraFabricPlugin;
import com.dfsek.terra.fabric.util.FabricUtil; import com.dfsek.terra.fabric.util.FabricUtil;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
@@ -29,9 +30,9 @@ public class TerraBiomeSource extends BiomeSource {
private final Registry<Biome> biomeRegistry; private final Registry<Biome> biomeRegistry;
private final long seed; private final long seed;
private final BiomeProvider grid; private final BiomeProvider grid;
private final ConfigPack pack; private final ConfigPackImpl pack;
public TerraBiomeSource(Registry<Biome> biomes, long seed, ConfigPack pack) { public TerraBiomeSource(Registry<Biome> biomes, long seed, ConfigPackImpl pack) {
super(biomes.stream() super(biomes.stream()
.filter(biome -> Objects.requireNonNull(biomes.getId(biome)).getNamespace().equals("terra")) // Filter out non-Terra biomes. .filter(biome -> Objects.requireNonNull(biomes.getId(biome)).getNamespace().equals("terra")) // Filter out non-Terra biomes.
.collect(Collectors.toList())); .collect(Collectors.toList()));
@@ -1,13 +1,11 @@
package com.dfsek.terra.fabric.generation; package com.dfsek.terra.fabric.generation;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.TerraFabricPlugin;
import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent;
import com.dfsek.terra.fabric.util.FabricUtil;
import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import net.minecraft.client.world.GeneratorType; import net.minecraft.client.world.GeneratorType;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.DynamicRegistryManager; import net.minecraft.util.registry.DynamicRegistryManager;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
@@ -17,9 +15,9 @@ import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
public class TerraGeneratorType extends GeneratorType { public class TerraGeneratorType extends GeneratorType {
private final ConfigPack pack; private final ConfigPackImpl pack;
public TerraGeneratorType(ConfigPack pack) { public TerraGeneratorType(ConfigPackImpl pack) {
super("terra." + pack.getTemplate().getID()); super("terra." + pack.getTemplate().getID());
this.pack = pack; this.pack = pack;
} }
@@ -1,13 +1,11 @@
package com.dfsek.terra.fabric.mixin.lifecycle.server; package com.dfsek.terra.fabric.mixin.lifecycle.server;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.TerraFabricPlugin;
import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent;
import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.dfsek.terra.fabric.generation.TerraBiomeSource;
import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper;
import com.dfsek.terra.fabric.util.FabricUtil;
import com.google.common.base.MoreObjects; import com.google.common.base.MoreObjects;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.DynamicRegistryManager; import net.minecraft.util.registry.DynamicRegistryManager;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.SimpleRegistry; import net.minecraft.util.registry.SimpleRegistry;
@@ -58,7 +56,7 @@ public abstract class GeneratorOptionsMixin {
prop = prop.substring(prop.indexOf(":") + 1); prop = prop.substring(prop.indexOf(":") + 1);
ConfigPack config = main.getConfigRegistry().get(prop); ConfigPackImpl config = main.getConfigRegistry().get(prop);
if(config == null) throw new IllegalArgumentException("No such pack " + prop); if(config == null) throw new IllegalArgumentException("No such pack " + prop);
@@ -2,7 +2,7 @@ package com.dfsek.terra.fabric.util;
import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.generic.pair.Pair;
import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.builder.BiomeBuilder;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.TerraFabricPlugin;
import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions; import com.dfsek.terra.fabric.config.PostLoadCompatibilityOptions;
@@ -29,7 +29,7 @@ import java.util.Map;
import java.util.function.Supplier; import java.util.function.Supplier;
public final class FabricUtil { public final class FabricUtil {
public static String createBiomeID(ConfigPack pack, String biomeID) { public static String createBiomeID(ConfigPackImpl pack, String biomeID) {
return pack.getTemplate().getID().toLowerCase() + "/" + biomeID.toLowerCase(Locale.ROOT); return pack.getTemplate().getID().toLowerCase() + "/" + biomeID.toLowerCase(Locale.ROOT);
} }
@@ -40,7 +40,7 @@ public final class FabricUtil {
* @param pack The ConfigPack this biome belongs to. * @param pack The ConfigPack this biome belongs to.
* @return The Minecraft delegate biome. * @return The Minecraft delegate biome.
*/ */
public static Biome createBiome(BiomeBuilder biome, ConfigPack pack, DynamicRegistryManager registryManager) { public static Biome createBiome(BiomeBuilder biome, ConfigPackImpl pack, DynamicRegistryManager registryManager) {
BiomeTemplate template = biome.getTemplate(); BiomeTemplate template = biome.getTemplate();
Map<String, Integer> colors = template.getColors(); Map<String, Integer> colors = template.getColors();
@@ -3,6 +3,7 @@ package com.dfsek.terra;
import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.TerraAddon;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.event.EventManagerImpl;
import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockData;
@@ -18,7 +19,6 @@ import com.dfsek.terra.config.GenericLoaders;
import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.PluginConfig;
import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.lang.Language;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.platform.RawBiome; import com.dfsek.terra.platform.RawBiome;
import com.dfsek.terra.platform.RawWorldHandle; import com.dfsek.terra.platform.RawWorldHandle;
import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.profiler.Profiler;
@@ -3,6 +3,7 @@ package com.dfsek.terra.sponge;
import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.TerraAddon;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.event.EventManagerImpl; import com.dfsek.terra.api.event.EventManagerImpl;
import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.ItemHandle;
@@ -13,7 +14,6 @@ import com.dfsek.terra.api.registry.LockedRegistry;
import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.api.util.logging.DebugLogger;
import com.dfsek.terra.config.PluginConfig; import com.dfsek.terra.config.PluginConfig;
import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.lang.Language;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.profiler.Profiler;
import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.AddonRegistry;
import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.registry.master.ConfigRegistry;