mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-10-27 14:30:23 +00:00
ZIP file loading should(tm) work now
This commit is contained in:
1 parent
1c9c183d66
commit
fe6ea9511b
5 files changed
+127
-116
No files matched your search
@@ -16,8 +16,9 @@ import com.dfsek.terra.config.factories.FloraFactory;
|
|||||||
import com.dfsek.terra.config.factories.OreFactory;
|
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.files.FolderLoader;
|
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.lang.LangUtil;
|
||||||
import com.dfsek.terra.config.loaders.NoiseBuilderLoader;
|
|
||||||
import com.dfsek.terra.config.templates.BiomeGridTemplate;
|
import com.dfsek.terra.config.templates.BiomeGridTemplate;
|
||||||
import com.dfsek.terra.config.templates.BiomeTemplate;
|
import com.dfsek.terra.config.templates.BiomeTemplate;
|
||||||
import com.dfsek.terra.config.templates.CarverTemplate;
|
import com.dfsek.terra.config.templates.CarverTemplate;
|
||||||
@@ -25,7 +26,6 @@ import com.dfsek.terra.config.templates.FloraTemplate;
|
|||||||
import com.dfsek.terra.config.templates.OreTemplate;
|
import com.dfsek.terra.config.templates.OreTemplate;
|
||||||
import com.dfsek.terra.config.templates.PaletteTemplate;
|
import com.dfsek.terra.config.templates.PaletteTemplate;
|
||||||
import com.dfsek.terra.config.templates.StructureTemplate;
|
import com.dfsek.terra.config.templates.StructureTemplate;
|
||||||
import com.dfsek.terra.generation.config.NoiseBuilder;
|
|
||||||
import com.dfsek.terra.generation.items.ores.Ore;
|
import com.dfsek.terra.generation.items.ores.Ore;
|
||||||
import com.dfsek.terra.registry.BiomeGridRegistry;
|
import com.dfsek.terra.registry.BiomeGridRegistry;
|
||||||
import com.dfsek.terra.registry.BiomeRegistry;
|
import com.dfsek.terra.registry.BiomeRegistry;
|
||||||
@@ -43,12 +43,17 @@ import parsii.eval.Scope;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Enumeration;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipFile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a Terra configuration pack.
|
* Represents a Terra configuration pack.
|
||||||
@@ -64,6 +69,8 @@ public class ConfigPack {
|
|||||||
private final OreRegistry oreRegistry = new OreRegistry();
|
private final OreRegistry oreRegistry = new OreRegistry();
|
||||||
|
|
||||||
private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader();
|
private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader();
|
||||||
|
private final ConfigLoader loader = new ConfigLoader();
|
||||||
|
private final Scope varScope = new Scope();
|
||||||
|
|
||||||
{
|
{
|
||||||
abstractConfigLoader
|
abstractConfigLoader
|
||||||
@@ -73,81 +80,91 @@ public class ConfigPack {
|
|||||||
.registerLoader(Flora.class, floraRegistry)
|
.registerLoader(Flora.class, floraRegistry)
|
||||||
.registerLoader(Ore.class, oreRegistry);
|
.registerLoader(Ore.class, oreRegistry);
|
||||||
ConfigUtil.registerAllLoaders(abstractConfigLoader);
|
ConfigUtil.registerAllLoaders(abstractConfigLoader);
|
||||||
|
ConfigUtil.registerAllLoaders(loader);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final Scope varScope;
|
|
||||||
|
|
||||||
|
|
||||||
public ConfigPack(File folder) throws ConfigException {
|
public ConfigPack(File folder) throws ConfigException {
|
||||||
long l = System.nanoTime();
|
long l = System.nanoTime();
|
||||||
|
|
||||||
File pack = new File(folder, "pack.yml");
|
File pack = new File(folder, "pack.yml");
|
||||||
|
|
||||||
ConfigLoader loader = new ConfigLoader();
|
|
||||||
loader.registerLoader(NoiseBuilder.class, new NoiseBuilderLoader());
|
|
||||||
try {
|
try {
|
||||||
loader.load(template, new FileInputStream(pack));
|
loader.load(template, new FileInputStream(pack));
|
||||||
} catch(FileNotFoundException e) {
|
} catch(FileNotFoundException e) {
|
||||||
throw new FileMissingException("No pack.yml file found in " + folder.getAbsolutePath(), e);
|
throw new FileMissingException("No pack.yml file found in " + folder.getAbsolutePath(), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
varScope = new Scope();
|
load(new FolderLoader(folder.toPath()));
|
||||||
|
|
||||||
|
LangUtil.log("config-pack.loaded", Level.INFO, template.getID(), String.valueOf((System.nanoTime() - l) / 1000000D));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigPack(ZipFile file) throws ConfigException {
|
||||||
|
long l = System.nanoTime();
|
||||||
|
|
||||||
|
InputStream stream = null;
|
||||||
|
Enumeration<? extends ZipEntry> entries = file.entries();
|
||||||
|
|
||||||
|
while(entries.hasMoreElements()) {
|
||||||
|
ZipEntry entry = entries.nextElement();
|
||||||
|
if(entry.getName().equals("pack.yml")) {
|
||||||
|
try {
|
||||||
|
stream = file.getInputStream(entry);
|
||||||
|
} catch(IOException e) {
|
||||||
|
throw new LoadException("Unable to load pack.yml from ZIP file", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(stream == null) throw new FileMissingException("No pack.yml file found in " + file.getName());
|
||||||
|
|
||||||
|
loader.load(template, stream);
|
||||||
|
|
||||||
|
load(new ZIPLoader(file));
|
||||||
|
LangUtil.log("config-pack.loaded", Level.INFO, template.getID(), String.valueOf((System.nanoTime() - l) / 1000000D));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void load(Loader loader) throws ConfigException {
|
||||||
for(Map.Entry<String, Double> var : template.getVariables().entrySet()) {
|
for(Map.Entry<String, Double> var : template.getVariables().entrySet()) {
|
||||||
varScope.create(var.getKey()).setValue(var.getValue());
|
varScope.create(var.getKey()).setValue(var.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<PaletteTemplate> paletteTemplates = new ArrayList<>();
|
loader.open("palettes")
|
||||||
new FolderLoader(new File(folder, "palettes").toPath())
|
.then(streams -> {
|
||||||
.then(streams -> paletteTemplates.addAll(abstractConfigLoader.load(streams, PaletteTemplate::new)))
|
|
||||||
.close();
|
|
||||||
|
|
||||||
PaletteFactory paletteFactory = new PaletteFactory();
|
PaletteFactory paletteFactory = new PaletteFactory();
|
||||||
paletteTemplates.forEach(palette -> {
|
abstractConfigLoader.load(streams, PaletteTemplate::new).forEach(palette -> {
|
||||||
paletteRegistry.add(palette.getID(), paletteFactory.build(palette));
|
paletteRegistry.add(palette.getID(), paletteFactory.build(palette));
|
||||||
Debug.info("Loaded palette " + palette.getID());
|
Debug.info("Loaded palette " + palette.getID());
|
||||||
});
|
});
|
||||||
|
})
|
||||||
List<OreTemplate> oreTemplates = new ArrayList<>();
|
.close()
|
||||||
new FolderLoader(new File(folder, "ores").toPath())
|
.open("ores")
|
||||||
.then(streams -> oreTemplates.addAll(abstractConfigLoader.load(streams, OreTemplate::new)))
|
.then(streams -> {
|
||||||
.close();
|
|
||||||
|
|
||||||
OreFactory oreFactory = new OreFactory();
|
OreFactory oreFactory = new OreFactory();
|
||||||
oreTemplates.forEach(ore -> {
|
abstractConfigLoader.load(streams, OreTemplate::new).forEach(ore -> {
|
||||||
oreRegistry.add(ore.getID(), oreFactory.build(ore));
|
oreRegistry.add(ore.getID(), oreFactory.build(ore));
|
||||||
Debug.info("Loaded ore " + ore.getID());
|
Debug.info("Loaded ore " + ore.getID());
|
||||||
});
|
});
|
||||||
|
})
|
||||||
|
.close()
|
||||||
List<FloraTemplate> floraTemplates = new ArrayList<>();
|
.open("flora")
|
||||||
new FolderLoader(new File(folder, "flora").toPath())
|
.then(streams -> {
|
||||||
.then(streams -> floraTemplates.addAll(abstractConfigLoader.load(streams, FloraTemplate::new)))
|
|
||||||
.close();
|
|
||||||
|
|
||||||
FloraFactory floraFactory = new FloraFactory();
|
FloraFactory floraFactory = new FloraFactory();
|
||||||
floraTemplates.forEach(flora -> {
|
abstractConfigLoader.load(streams, FloraTemplate::new).forEach(flora -> {
|
||||||
floraRegistry.add(flora.getID(), floraFactory.build(flora));
|
floraRegistry.add(flora.getID(), floraFactory.build(flora));
|
||||||
Debug.info("Loaded flora " + flora.getID());
|
Debug.info("Loaded flora " + flora.getID());
|
||||||
});
|
});
|
||||||
|
})
|
||||||
List<StructureTemplate> structureTemplates = new ArrayList<>();
|
.close()
|
||||||
new FolderLoader(new File(folder, "structures/single").toPath())
|
.open("structures/single")
|
||||||
.then(streams -> structureTemplates.addAll(abstractConfigLoader.load(streams, StructureTemplate::new)))
|
.then(streams -> abstractConfigLoader.load(streams, StructureTemplate::new).forEach(structure -> {
|
||||||
.close();
|
|
||||||
|
|
||||||
structureTemplates.forEach(structure -> {
|
|
||||||
structureRegistry.add(structure.getID(), structure);
|
structureRegistry.add(structure.getID(), structure);
|
||||||
Debug.info("Loaded structure " + structure.getID());
|
Debug.info("Loaded structure " + structure.getID());
|
||||||
});
|
}))
|
||||||
|
.close()
|
||||||
List<CarverTemplate> carverTemplates = new ArrayList<>();
|
.open("carving")
|
||||||
new FolderLoader(new File(folder, "carving").toPath())
|
.then(streams -> {
|
||||||
.then(streams -> carverTemplates.addAll(abstractConfigLoader.load(streams, CarverTemplate::new)))
|
|
||||||
.close();
|
|
||||||
|
|
||||||
CarverFactory carverFactory = new CarverFactory(this);
|
CarverFactory carverFactory = new CarverFactory(this);
|
||||||
carverTemplates.forEach(carver -> {
|
abstractConfigLoader.load(streams, CarverTemplate::new).forEach(carver -> {
|
||||||
try {
|
try {
|
||||||
carverRegistry.add(carver.getID(), carverFactory.build(carver));
|
carverRegistry.add(carver.getID(), carverFactory.build(carver));
|
||||||
} catch(LoadException e) {
|
} catch(LoadException e) {
|
||||||
@@ -155,31 +172,26 @@ public class ConfigPack {
|
|||||||
}
|
}
|
||||||
Debug.info("Loaded carver " + carver.getID());
|
Debug.info("Loaded carver " + carver.getID());
|
||||||
});
|
});
|
||||||
|
})
|
||||||
List<BiomeTemplate> biomeTemplates = new ArrayList<>();
|
.close()
|
||||||
new FolderLoader(new File(folder, "biomes").toPath())
|
.open("biomes")
|
||||||
.then(streams -> biomeTemplates.addAll(abstractConfigLoader.load(streams, () -> new BiomeTemplate(this))))
|
.then(streams -> {
|
||||||
.close();
|
|
||||||
|
|
||||||
BiomeFactory biomeFactory = new BiomeFactory(this);
|
BiomeFactory biomeFactory = new BiomeFactory(this);
|
||||||
biomeTemplates.forEach(biome -> {
|
abstractConfigLoader.load(streams, () -> new BiomeTemplate(this)).forEach(biome -> {
|
||||||
biomeRegistry.add(biome.getID(), biomeFactory.build(biome));
|
biomeRegistry.add(biome.getID(), biomeFactory.build(biome));
|
||||||
Debug.info("Loaded biome " + biome.getID());
|
Debug.info("Loaded biome " + biome.getID());
|
||||||
Debug.info("Threshold: " + biome.getSlantThreshold());
|
|
||||||
});
|
});
|
||||||
|
})
|
||||||
List<BiomeGridTemplate> biomeGridTemplates = new ArrayList<>();
|
.close()
|
||||||
new FolderLoader(new File(folder, "grids").toPath())
|
.open("grids")
|
||||||
.then(streams -> biomeGridTemplates.addAll(abstractConfigLoader.load(streams, BiomeGridTemplate::new)))
|
.then(streams -> {
|
||||||
.close();
|
|
||||||
|
|
||||||
BiomeGridFactory biomeGridFactory = new BiomeGridFactory();
|
BiomeGridFactory biomeGridFactory = new BiomeGridFactory();
|
||||||
biomeGridTemplates.forEach(grid -> {
|
abstractConfigLoader.load(streams, BiomeGridTemplate::new).forEach(grid -> {
|
||||||
biomeGridRegistry.add(grid.getID(), biomeGridFactory.build(grid));
|
biomeGridRegistry.add(grid.getID(), biomeGridFactory.build(grid));
|
||||||
Debug.info("Loaded BiomeGrid " + grid.getID());
|
Debug.info("Loaded BiomeGrid " + grid.getID());
|
||||||
});
|
});
|
||||||
|
})
|
||||||
LangUtil.log("config-pack.loaded", Level.INFO, template.getID(), String.valueOf((System.nanoTime() - l) / 1000000D));
|
.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserDefinedBiome getBiome(String id) {
|
public UserDefinedBiome getBiome(String id) {
|
||||||
|
|||||||
@@ -1,26 +1,29 @@
|
|||||||
package com.dfsek.terra.config.files;
|
package com.dfsek.terra.config.files;
|
||||||
|
|
||||||
import com.dfsek.tectonic.exception.ConfigException;
|
import java.io.File;
|
||||||
|
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load all {@code *.yml} files from a {@link java.nio.file.Path}.
|
* Load all {@code *.yml} files from a {@link java.nio.file.Path}.
|
||||||
*/
|
*/
|
||||||
public class FolderLoader implements Loader {
|
public class FolderLoader extends Loader {
|
||||||
private final List<InputStream> streams = new ArrayList<>();
|
private final Path path;
|
||||||
|
|
||||||
public FolderLoader(Path path) {
|
public FolderLoader(Path path) {
|
||||||
path.toFile().mkdirs();
|
this.path = path;
|
||||||
try(Stream<Path> paths = Files.walk(path)) {
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Loader open(String directory) {
|
||||||
|
if(streams.size() != 0) throw new IllegalStateException("Attempted to load folder before closing InputStreams");
|
||||||
|
File newPath = new File(path.toFile(), directory);
|
||||||
|
newPath.mkdirs();
|
||||||
|
try(Stream<Path> paths = Files.walk(newPath.toPath())) {
|
||||||
paths.filter(Files::isRegularFile).filter(file -> file.toString().toLowerCase().endsWith(".yml")).forEach(file -> {
|
paths.filter(Files::isRegularFile).filter(file -> file.toString().toLowerCase().endsWith(".yml")).forEach(file -> {
|
||||||
try {
|
try {
|
||||||
streams.add(new FileInputStream(file.toFile()));
|
streams.add(new FileInputStream(file.toFile()));
|
||||||
@@ -31,22 +34,6 @@ public class FolderLoader implements Loader {
|
|||||||
} catch(IOException e) {
|
} catch(IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public FolderLoader then(ExceptionalConsumer<List<InputStream>> consumer) throws ConfigException {
|
|
||||||
consumer.accept(streams);
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void close() {
|
|
||||||
streams.forEach(stream -> {
|
|
||||||
try {
|
|
||||||
stream.close();
|
|
||||||
} catch(IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
streams.clear();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -2,19 +2,44 @@ package com.dfsek.terra.config.files;
|
|||||||
|
|
||||||
import com.dfsek.tectonic.exception.ConfigException;
|
import com.dfsek.tectonic.exception.ConfigException;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface Loader {
|
public abstract class Loader {
|
||||||
|
protected final List<InputStream> streams = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do something with the InputStreams.
|
* Do something with the InputStreams.
|
||||||
*
|
*
|
||||||
* @param consumer Something to do with the streams.
|
* @param consumer Something to do with the streams.
|
||||||
*/
|
*/
|
||||||
Loader then(ExceptionalConsumer<List<InputStream>> consumer) throws ConfigException;
|
public Loader then(ExceptionalConsumer<List<InputStream>> consumer) throws ConfigException {
|
||||||
|
consumer.accept(streams);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open a subdirectory.
|
||||||
|
*
|
||||||
|
* @param directory
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public abstract Loader open(String directory);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close all InputStreams opened.
|
* Close all InputStreams opened.
|
||||||
*/
|
*/
|
||||||
void close();
|
public Loader close() {
|
||||||
|
streams.forEach(input -> {
|
||||||
|
try {
|
||||||
|
input.close();
|
||||||
|
} catch(IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
streams.clear();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,24 +1,25 @@
|
|||||||
package com.dfsek.terra.config.files;
|
package com.dfsek.terra.config.files;
|
||||||
|
|
||||||
import com.dfsek.tectonic.exception.ConfigException;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.List;
|
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipFile;
|
import java.util.zip.ZipFile;
|
||||||
|
|
||||||
public class ZIPLoader implements Loader {
|
public class ZIPLoader extends Loader {
|
||||||
private final List<InputStream> streams = new ArrayList<>();
|
private final ZipFile file;
|
||||||
|
|
||||||
public ZIPLoader(ZipFile file, String subDirectory) {
|
public ZIPLoader(ZipFile file) {
|
||||||
|
this.file = file;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Loader open(String directory) {
|
||||||
|
if(streams.size() != 0) throw new IllegalStateException("Attempted to load folder before closing InputStreams");
|
||||||
Enumeration<? extends ZipEntry> entries = file.entries();
|
Enumeration<? extends ZipEntry> entries = file.entries();
|
||||||
|
|
||||||
while(entries.hasMoreElements()) {
|
while(entries.hasMoreElements()) {
|
||||||
ZipEntry entry = entries.nextElement();
|
ZipEntry entry = entries.nextElement();
|
||||||
if(!entry.isDirectory() && entry.getName().startsWith(subDirectory) && entry.getName().endsWith(".yml")) {
|
if(!entry.isDirectory() && entry.getName().startsWith(directory) && entry.getName().endsWith(".yml")) {
|
||||||
try {
|
try {
|
||||||
streams.add(file.getInputStream(entry));
|
streams.add(file.getInputStream(entry));
|
||||||
} catch(IOException e) {
|
} catch(IOException e) {
|
||||||
@@ -26,23 +27,6 @@ public class ZIPLoader implements Loader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ZIPLoader then(ExceptionalConsumer<List<InputStream>> consumer) throws ConfigException {
|
|
||||||
consumer.accept(streams);
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void close() {
|
|
||||||
streams.forEach(stream -> {
|
|
||||||
try {
|
|
||||||
stream.close();
|
|
||||||
} catch(IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
streams.clear();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@ import com.dfsek.terra.config.loaders.BlockDataLoader;
|
|||||||
import com.dfsek.terra.config.loaders.FloraLayerLoader;
|
import com.dfsek.terra.config.loaders.FloraLayerLoader;
|
||||||
import com.dfsek.terra.config.loaders.GridSpawnLoader;
|
import com.dfsek.terra.config.loaders.GridSpawnLoader;
|
||||||
import com.dfsek.terra.config.loaders.MaterialLoader;
|
import com.dfsek.terra.config.loaders.MaterialLoader;
|
||||||
|
import com.dfsek.terra.config.loaders.NoiseBuilderLoader;
|
||||||
import com.dfsek.terra.config.loaders.OreConfigLoader;
|
import com.dfsek.terra.config.loaders.OreConfigLoader;
|
||||||
import com.dfsek.terra.config.loaders.OreTypeLoader;
|
import com.dfsek.terra.config.loaders.OreTypeLoader;
|
||||||
import com.dfsek.terra.config.loaders.PaletteHolderLoader;
|
import com.dfsek.terra.config.loaders.PaletteHolderLoader;
|
||||||
@@ -16,6 +17,7 @@ import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader;
|
|||||||
import com.dfsek.terra.config.loaders.RangeLoader;
|
import com.dfsek.terra.config.loaders.RangeLoader;
|
||||||
import com.dfsek.terra.config.loaders.VanillaBiomeLoader;
|
import com.dfsek.terra.config.loaders.VanillaBiomeLoader;
|
||||||
import com.dfsek.terra.config.loaders.base.CarverPaletteLoader;
|
import com.dfsek.terra.config.loaders.base.CarverPaletteLoader;
|
||||||
|
import com.dfsek.terra.generation.config.NoiseBuilder;
|
||||||
import com.dfsek.terra.generation.items.flora.FloraLayer;
|
import com.dfsek.terra.generation.items.flora.FloraLayer;
|
||||||
import com.dfsek.terra.generation.items.ores.Ore;
|
import com.dfsek.terra.generation.items.ores.Ore;
|
||||||
import com.dfsek.terra.generation.items.ores.OreConfig;
|
import com.dfsek.terra.generation.items.ores.OreConfig;
|
||||||
@@ -44,6 +46,7 @@ public final class ConfigUtil {
|
|||||||
.registerLoader(Material.class, new MaterialLoader())
|
.registerLoader(Material.class, new MaterialLoader())
|
||||||
.registerLoader(FloraLayer.class, new FloraLayerLoader())
|
.registerLoader(FloraLayer.class, new FloraLayerLoader())
|
||||||
.registerLoader(Ore.Type.class, new OreTypeLoader())
|
.registerLoader(Ore.Type.class, new OreTypeLoader())
|
||||||
.registerLoader(OreConfig.class, new OreConfigLoader());
|
.registerLoader(OreConfig.class, new OreConfigLoader())
|
||||||
|
.registerLoader(NoiseBuilder.class, new NoiseBuilderLoader());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user