From 4a3787fe676e48072d1f5f6ba6a749c3a9977947 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 14 Oct 2020 20:28:55 -0700 Subject: [PATCH] Package default config, update README.md --- README.md | 2 +- pom.xml | 2 +- .../dfsek/terra/config/base/ConfigUtil.java | 18 + .../terra/config/genconfig/TreeConfig.java | 2 +- .../com/dfsek/terra/config/lang/LangUtil.java | 33 +- .../terra/population/FloraPopulator.java | 2 +- src/main/resources/config.yml | 1 + .../abstract/biomes/basic_ores.yml | 62 ++ .../abstract/biomes/beach_abstract.yml | 94 +++ .../biomes/mountain/mountains_pretty.yml | 114 ++++ .../mountain/mountains_pretty_border_0.yml | 114 ++++ .../mountain/mountains_pretty_border_1.yml | 114 ++++ .../abstract/biomes/ocean_abstract.yml | 86 +++ .../abstract/biomes/plains_abstract.yml | 65 ++ .../default-config/biomes/beach/beach.yml | 5 + .../biomes/beach/beach_cold.yml | 12 + .../biomes/beach/beach_frozen.yml | 14 + .../biomes/beach/beach_warm.yml | 12 + .../default-config/biomes/desert.yml | 50 ++ .../biomes/forest/birch_forest.yml | 43 ++ .../biomes/forest/dark_forest.yml | 43 ++ .../default-config/biomes/forest/jungle.yml | 76 +++ .../biomes/forest/oak_forest.yml | 59 ++ .../default-config/biomes/forest/savanna.yml | 39 ++ .../biomes/forest/snowy_taiga.yml | 54 ++ .../default-config/biomes/forest/taiga.yml | 49 ++ .../resources/default-config/biomes/mesa.yml | 60 ++ .../biomes/mountain/arid_mountains.yml | 47 ++ .../mountain/arid_mountains_border_0.yml | 47 ++ .../mountain/arid_mountains_border_1.yml | 47 ++ .../biomes/mountain/mountains_jungle.yml | 28 + .../mountain/mountains_jungle_border_0.yml | 28 + .../mountain/mountains_jungle_border_1.yml | 28 + .../biomes/mountain/mountains_pretty.yml | 10 + .../mountain/mountains_pretty_border_0.yml | 10 + .../mountain/mountains_pretty_border_1.yml | 10 + .../biomes/mountain/mountains_stone.yml | 35 + .../mountain/mountains_stone_border_0.yml | 35 + .../mountain/mountains_stone_border_1.yml | 35 + .../default-config/biomes/mountains.yml | 34 + .../default-config/biomes/ocean/ocean.yml | 5 + .../biomes/ocean/ocean_cold.yml | 13 + .../biomes/ocean/ocean_frozen.yml | 14 + .../biomes/ocean/ocean_lukewarm.yml | 40 ++ .../biomes/ocean/ocean_warm.yml | 44 ++ .../default-config/biomes/plains.yml | 46 ++ .../default-config/biomes/plains_islands.yml | 43 ++ .../resources/default-config/biomes/river.yml | 37 + .../resources/default-config/biomes/swamp.yml | 55 ++ .../default-config/biomes/tundra.yml | 49 ++ .../resources/default-config/carving/cave.yml | 66 ++ .../default-config/carving/cave_ocean.yml | 73 ++ .../default-config/carving/cave_swamp.yml | 85 +++ .../default-config/carving/cave_tundra.yml | 73 ++ .../default-config/carving/cavern.yml | 66 ++ .../default-config/carving/ravine.yml | 66 ++ .../resources/default-config/flora/button.yml | 16 + .../default-config/flora/caves/stalactite.yml | 17 + .../default-config/flora/caves/stalagmite.yml | 18 + .../default-config/flora/kelp/kelp_mid.yml | 18 + .../default-config/flora/kelp/kelp_short.yml | 18 + .../default-config/flora/kelp/kelp_tall.yml | 18 + .../resources/default-config/flora/leaves.yml | 16 + .../resources/default-config/flora/root.yml | 24 + .../default-config/flora/seagrass.yml | 14 + .../default-config/flora/tall_seagrass.yml | 17 + .../resources/default-config/grids/beach.yml | 13 + .../resources/default-config/grids/land.yml | 13 + .../default-config/grids/mountain.yml | 13 + .../grids/mountain_border_flat.yml | 13 + .../grids/mountain_border_mid.yml | 13 + .../resources/default-config/grids/ocean.yml | 13 + .../ores/deposits/andesite_pocket.yml | 9 + .../ores/deposits/diorite_pocket.yml | 9 + .../ores/deposits/dirt_pocket.yml | 9 + .../ores/deposits/granite_pocket.yml | 9 + .../ores/deposits/gravel_pocket.yml | 9 + .../default-config/ores/minerals/coal.yml | 9 + .../default-config/ores/minerals/diamond.yml | 9 + .../default-config/ores/minerals/gold.yml | 9 + .../default-config/ores/minerals/iron.yml | 9 + .../default-config/ores/minerals/lapis.yml | 9 + .../default-config/ores/minerals/redstone.yml | 9 + src/main/resources/default-config/pack.yml | 64 ++ .../palettes/bedrock/bedrock.yml | 6 + .../palettes/bedrock/bedrock_half.yml | 7 + .../palettes/bedrock/bedrock_little.yml | 7 + .../palettes/bedrock/bedrock_most.yml | 7 + .../default-config/palettes/cold_ocean.yml | 8 + .../default-config/palettes/desert/desert.yml | 12 + .../palettes/desert/red_desert.yml | 12 + .../default-config/palettes/grassy.yml | 11 + .../default-config/palettes/gravelly.yml | 12 + .../palettes/mountains/arid.yml | 29 + .../palettes/mountains/grass.yml | 18 + .../palettes/mountains/jungle.yml | 20 + .../palettes/mountains/pretty_mountains.yml | 25 + .../palettes/mountains/stone.yml | 14 + .../palettes/mountains/stone_grass.yml | 22 + .../default-config/palettes/oceanfloor.yml | 14 + .../default-config/palettes/river_bottom.yml | 13 + .../default-config/palettes/river_shore.yml | 17 + .../default-config/palettes/sand_all.yml | 9 + .../default-config/palettes/sandy.yml | 13 + .../palettes/slabs/mountainslabs.yml | 10 + .../palettes/slabs/mountainstairs.yml | 10 + .../default-config/palettes/slabs/snow.yml | 8 + .../default-config/palettes/snow.yml | 12 + .../default-config/palettes/swamp.yml | 13 + .../default-config/palettes/swamp_border.yml | 27 + .../default-config/palettes/swamp_bottom.yml | 14 + .../default-config/palettes/taiga.yml | 16 + .../default-config/palettes/tundra.yml | 22 + .../structures/data/jungle1.tstructure | Bin 0 -> 842837 bytes .../structures/data/pull.tstructure | Bin 0 -> 18789 bytes .../structures/data/swamp1.tstructure | Bin 0 -> 126887 bytes .../structures/data/swamp2.tstructure | Bin 0 -> 147551 bytes .../structures/data/swamp3.tstructure | Bin 0 -> 148338 bytes .../structures/data/swamp4.tstructure | Bin 0 -> 122082 bytes .../structures/data/swamp5.tstructure | Bin 0 -> 121900 bytes .../structures/data/swamp6.tstructure | Bin 0 -> 134689 bytes .../structures/data/swamp7.tstructure | Bin 0 -> 135706 bytes .../structures/data/swamp8.tstructure | Bin 0 -> 148854 bytes .../structures/data/testloot.tstructure | Bin 0 -> 2618 bytes .../structures/loot/arrows.json | 26 + .../structures/loot/cobble_house.json | 280 ++++++++ .../structures/loot/spruce_house.json | 645 ++++++++++++++++++ .../structures/loot/wood_house.json | 645 ++++++++++++++++++ .../structures/single/jungle.yml | 18 + .../default-config/structures/single/pull.yml | 15 + .../trees/data/spruce1.tstructure | Bin 0 -> 146637 bytes .../trees/data/spruce2.tstructure | Bin 0 -> 16788 bytes .../default-config/trees/trees/spruce.yml | 7 + 133 files changed, 4821 insertions(+), 34 deletions(-) create mode 100644 src/main/resources/default-config/abstract/biomes/basic_ores.yml create mode 100644 src/main/resources/default-config/abstract/biomes/beach_abstract.yml create mode 100644 src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty.yml create mode 100644 src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty_border_0.yml create mode 100644 src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty_border_1.yml create mode 100644 src/main/resources/default-config/abstract/biomes/ocean_abstract.yml create mode 100644 src/main/resources/default-config/abstract/biomes/plains_abstract.yml create mode 100644 src/main/resources/default-config/biomes/beach/beach.yml create mode 100644 src/main/resources/default-config/biomes/beach/beach_cold.yml create mode 100644 src/main/resources/default-config/biomes/beach/beach_frozen.yml create mode 100644 src/main/resources/default-config/biomes/beach/beach_warm.yml create mode 100644 src/main/resources/default-config/biomes/desert.yml create mode 100644 src/main/resources/default-config/biomes/forest/birch_forest.yml create mode 100644 src/main/resources/default-config/biomes/forest/dark_forest.yml create mode 100644 src/main/resources/default-config/biomes/forest/jungle.yml create mode 100644 src/main/resources/default-config/biomes/forest/oak_forest.yml create mode 100644 src/main/resources/default-config/biomes/forest/savanna.yml create mode 100644 src/main/resources/default-config/biomes/forest/snowy_taiga.yml create mode 100644 src/main/resources/default-config/biomes/forest/taiga.yml create mode 100644 src/main/resources/default-config/biomes/mesa.yml create mode 100644 src/main/resources/default-config/biomes/mountain/arid_mountains.yml create mode 100644 src/main/resources/default-config/biomes/mountain/arid_mountains_border_0.yml create mode 100644 src/main/resources/default-config/biomes/mountain/arid_mountains_border_1.yml create mode 100644 src/main/resources/default-config/biomes/mountain/mountains_jungle.yml create mode 100644 src/main/resources/default-config/biomes/mountain/mountains_jungle_border_0.yml create mode 100644 src/main/resources/default-config/biomes/mountain/mountains_jungle_border_1.yml create mode 100644 src/main/resources/default-config/biomes/mountain/mountains_pretty.yml create mode 100644 src/main/resources/default-config/biomes/mountain/mountains_pretty_border_0.yml create mode 100644 src/main/resources/default-config/biomes/mountain/mountains_pretty_border_1.yml create mode 100644 src/main/resources/default-config/biomes/mountain/mountains_stone.yml create mode 100644 src/main/resources/default-config/biomes/mountain/mountains_stone_border_0.yml create mode 100644 src/main/resources/default-config/biomes/mountain/mountains_stone_border_1.yml create mode 100644 src/main/resources/default-config/biomes/mountains.yml create mode 100644 src/main/resources/default-config/biomes/ocean/ocean.yml create mode 100644 src/main/resources/default-config/biomes/ocean/ocean_cold.yml create mode 100644 src/main/resources/default-config/biomes/ocean/ocean_frozen.yml create mode 100644 src/main/resources/default-config/biomes/ocean/ocean_lukewarm.yml create mode 100644 src/main/resources/default-config/biomes/ocean/ocean_warm.yml create mode 100644 src/main/resources/default-config/biomes/plains.yml create mode 100644 src/main/resources/default-config/biomes/plains_islands.yml create mode 100644 src/main/resources/default-config/biomes/river.yml create mode 100644 src/main/resources/default-config/biomes/swamp.yml create mode 100644 src/main/resources/default-config/biomes/tundra.yml create mode 100644 src/main/resources/default-config/carving/cave.yml create mode 100644 src/main/resources/default-config/carving/cave_ocean.yml create mode 100644 src/main/resources/default-config/carving/cave_swamp.yml create mode 100644 src/main/resources/default-config/carving/cave_tundra.yml create mode 100644 src/main/resources/default-config/carving/cavern.yml create mode 100644 src/main/resources/default-config/carving/ravine.yml create mode 100644 src/main/resources/default-config/flora/button.yml create mode 100644 src/main/resources/default-config/flora/caves/stalactite.yml create mode 100644 src/main/resources/default-config/flora/caves/stalagmite.yml create mode 100644 src/main/resources/default-config/flora/kelp/kelp_mid.yml create mode 100644 src/main/resources/default-config/flora/kelp/kelp_short.yml create mode 100644 src/main/resources/default-config/flora/kelp/kelp_tall.yml create mode 100644 src/main/resources/default-config/flora/leaves.yml create mode 100644 src/main/resources/default-config/flora/root.yml create mode 100644 src/main/resources/default-config/flora/seagrass.yml create mode 100644 src/main/resources/default-config/flora/tall_seagrass.yml create mode 100644 src/main/resources/default-config/grids/beach.yml create mode 100644 src/main/resources/default-config/grids/land.yml create mode 100644 src/main/resources/default-config/grids/mountain.yml create mode 100644 src/main/resources/default-config/grids/mountain_border_flat.yml create mode 100644 src/main/resources/default-config/grids/mountain_border_mid.yml create mode 100644 src/main/resources/default-config/grids/ocean.yml create mode 100644 src/main/resources/default-config/ores/deposits/andesite_pocket.yml create mode 100644 src/main/resources/default-config/ores/deposits/diorite_pocket.yml create mode 100644 src/main/resources/default-config/ores/deposits/dirt_pocket.yml create mode 100644 src/main/resources/default-config/ores/deposits/granite_pocket.yml create mode 100644 src/main/resources/default-config/ores/deposits/gravel_pocket.yml create mode 100644 src/main/resources/default-config/ores/minerals/coal.yml create mode 100644 src/main/resources/default-config/ores/minerals/diamond.yml create mode 100644 src/main/resources/default-config/ores/minerals/gold.yml create mode 100644 src/main/resources/default-config/ores/minerals/iron.yml create mode 100644 src/main/resources/default-config/ores/minerals/lapis.yml create mode 100644 src/main/resources/default-config/ores/minerals/redstone.yml create mode 100644 src/main/resources/default-config/pack.yml create mode 100644 src/main/resources/default-config/palettes/bedrock/bedrock.yml create mode 100644 src/main/resources/default-config/palettes/bedrock/bedrock_half.yml create mode 100644 src/main/resources/default-config/palettes/bedrock/bedrock_little.yml create mode 100644 src/main/resources/default-config/palettes/bedrock/bedrock_most.yml create mode 100644 src/main/resources/default-config/palettes/cold_ocean.yml create mode 100644 src/main/resources/default-config/palettes/desert/desert.yml create mode 100644 src/main/resources/default-config/palettes/desert/red_desert.yml create mode 100644 src/main/resources/default-config/palettes/grassy.yml create mode 100644 src/main/resources/default-config/palettes/gravelly.yml create mode 100644 src/main/resources/default-config/palettes/mountains/arid.yml create mode 100644 src/main/resources/default-config/palettes/mountains/grass.yml create mode 100644 src/main/resources/default-config/palettes/mountains/jungle.yml create mode 100644 src/main/resources/default-config/palettes/mountains/pretty_mountains.yml create mode 100644 src/main/resources/default-config/palettes/mountains/stone.yml create mode 100644 src/main/resources/default-config/palettes/mountains/stone_grass.yml create mode 100644 src/main/resources/default-config/palettes/oceanfloor.yml create mode 100644 src/main/resources/default-config/palettes/river_bottom.yml create mode 100644 src/main/resources/default-config/palettes/river_shore.yml create mode 100644 src/main/resources/default-config/palettes/sand_all.yml create mode 100644 src/main/resources/default-config/palettes/sandy.yml create mode 100644 src/main/resources/default-config/palettes/slabs/mountainslabs.yml create mode 100644 src/main/resources/default-config/palettes/slabs/mountainstairs.yml create mode 100644 src/main/resources/default-config/palettes/slabs/snow.yml create mode 100644 src/main/resources/default-config/palettes/snow.yml create mode 100644 src/main/resources/default-config/palettes/swamp.yml create mode 100644 src/main/resources/default-config/palettes/swamp_border.yml create mode 100644 src/main/resources/default-config/palettes/swamp_bottom.yml create mode 100644 src/main/resources/default-config/palettes/taiga.yml create mode 100644 src/main/resources/default-config/palettes/tundra.yml create mode 100644 src/main/resources/default-config/structures/data/jungle1.tstructure create mode 100644 src/main/resources/default-config/structures/data/pull.tstructure create mode 100644 src/main/resources/default-config/structures/data/swamp1.tstructure create mode 100644 src/main/resources/default-config/structures/data/swamp2.tstructure create mode 100644 src/main/resources/default-config/structures/data/swamp3.tstructure create mode 100644 src/main/resources/default-config/structures/data/swamp4.tstructure create mode 100644 src/main/resources/default-config/structures/data/swamp5.tstructure create mode 100644 src/main/resources/default-config/structures/data/swamp6.tstructure create mode 100644 src/main/resources/default-config/structures/data/swamp7.tstructure create mode 100644 src/main/resources/default-config/structures/data/swamp8.tstructure create mode 100644 src/main/resources/default-config/structures/data/testloot.tstructure create mode 100755 src/main/resources/default-config/structures/loot/arrows.json create mode 100755 src/main/resources/default-config/structures/loot/cobble_house.json create mode 100755 src/main/resources/default-config/structures/loot/spruce_house.json create mode 100755 src/main/resources/default-config/structures/loot/wood_house.json create mode 100644 src/main/resources/default-config/structures/single/jungle.yml create mode 100644 src/main/resources/default-config/structures/single/pull.yml create mode 100644 src/main/resources/default-config/trees/data/spruce1.tstructure create mode 100644 src/main/resources/default-config/trees/data/spruce2.tstructure create mode 100644 src/main/resources/default-config/trees/trees/spruce.yml diff --git a/README.md b/README.md index 5f8bc7583..0ca55da41 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ # Terra -Overworld generator based on Gaea. +Terra is a data-driven world generator based on [Gaea](https://github.com/PolyhedralDev/Gaea). diff --git a/pom.xml b/pom.xml index ae61b9d7b..b8991a319 100644 --- a/pom.xml +++ b/pom.xml @@ -100,7 +100,7 @@ org.polydev gaea - 1.11.3 + 1.11.6 provided diff --git a/src/main/java/com/dfsek/terra/config/base/ConfigUtil.java b/src/main/java/com/dfsek/terra/config/base/ConfigUtil.java index 0754d62ef..0eb586533 100644 --- a/src/main/java/com/dfsek/terra/config/base/ConfigUtil.java +++ b/src/main/java/com/dfsek/terra/config/base/ConfigUtil.java @@ -1,5 +1,6 @@ package com.dfsek.terra.config.base; +import com.dfsek.terra.Debug; import com.dfsek.terra.Terra; import com.dfsek.terra.TerraWorld; import com.dfsek.terra.biome.failsafe.FailType; @@ -11,14 +12,20 @@ import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.java.JavaPlugin; +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; import java.time.Duration; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; +import java.util.jar.JarFile; import java.util.logging.Level; import java.util.logging.Logger; +import static org.polydev.gaea.util.JarUtil.copyResourcesToDirectory; + public final class ConfigUtil { public static boolean debug; public static long dataSave; // Period of population data saving, in ticks. @@ -34,6 +41,17 @@ public final class ConfigUtil { dataSave = Duration.parse(Objects.requireNonNull(config.getString("data-save", "PT6M"))).toMillis()/20L; masterDisableCaves = config.getBoolean("master-disable.caves", false); + if(config.getBoolean("dump-default", true)) { + try(JarFile jar = new JarFile(new File(Terra.class.getProtectionDomain().getCodeSource().getLocation().toURI()))) { + copyResourcesToDirectory(jar, "default-config", new File(main.getDataFolder(), "packs" + File.separator + "default").toString()); + } catch(IOException | URISyntaxException e) { + Debug.error("Failed to dump default config files!"); + e.printStackTrace(); + Debug.error("Report this to Terra!"); + } + } + + String fail = config.getString("fail-type", "SHUTDOWN"); try { failType = FailType.valueOf(fail); diff --git a/src/main/java/com/dfsek/terra/config/genconfig/TreeConfig.java b/src/main/java/com/dfsek/terra/config/genconfig/TreeConfig.java index 3be8b3985..f872dcd86 100644 --- a/src/main/java/com/dfsek/terra/config/genconfig/TreeConfig.java +++ b/src/main/java/com/dfsek/terra/config/genconfig/TreeConfig.java @@ -61,7 +61,7 @@ public class TreeConfig extends TerraConfig implements Tree { } @Override - public boolean plant(Location location, Random random, boolean b, JavaPlugin javaPlugin) { + public boolean plant(Location location, Random random, JavaPlugin javaPlugin) { Location mut = location.clone().subtract(0, yOffset, 0); if(!spawnable.contains(location.getBlock().getType())) return false; Structure struc = structure.get(random); diff --git a/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/src/main/java/com/dfsek/terra/config/lang/LangUtil.java index b54a33929..9db299150 100644 --- a/src/main/java/com/dfsek/terra/config/lang/LangUtil.java +++ b/src/main/java/com/dfsek/terra/config/lang/LangUtil.java @@ -8,16 +8,14 @@ import org.bukkit.plugin.java.JavaPlugin; import org.polydev.gaea.lang.Language; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; import java.net.URISyntaxException; -import java.util.Enumeration; -import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.logging.Level; import java.util.logging.Logger; +import static org.polydev.gaea.util.JarUtil.copyResourcesToDirectory; + public final class LangUtil { private static Language language; private static Logger logger; @@ -25,7 +23,7 @@ public final class LangUtil { logger = main.getLogger(); File file = new File(main.getDataFolder(), "lang"); try(JarFile jar = new JarFile(new File(Terra.class.getProtectionDomain().getCodeSource().getLocation().toURI()))) { - copyResourcesToDirectory(jar, file.toString()); + copyResourcesToDirectory(jar, "lang", file.toString()); } catch(IOException | URISyntaxException e) { Debug.error("Failed to dump language files!"); e.printStackTrace(); @@ -39,31 +37,6 @@ public final class LangUtil { logger.severe("Double-check your configuration before reporting this to Terra!"); } } - private static void copyResourcesToDirectory(JarFile fromJar, String destDir) throws IOException { - for(Enumeration entries = fromJar.entries(); entries.hasMoreElements(); ) { - JarEntry entry = entries.nextElement(); - if(entry.getName().startsWith("lang" + "/") && ! entry.isDirectory()) { - File dest = new File(destDir + File.separator + entry.getName().substring("lang".length() + 1)); - Debug.info("Output: " + dest.toString()); - if(dest.exists()) continue; - File parent = dest.getParentFile(); - if(parent != null) { - parent.mkdirs(); - } - Debug.info("Output does not already exist. Creating... "); - try(FileOutputStream out = new FileOutputStream(dest); InputStream in = fromJar.getInputStream(entry)) { - byte[] buffer = new byte[8 * 1024]; - - int s; - while((s = in.read(buffer)) > 0) { - out.write(buffer, 0, s); - } - } catch(IOException e) { - throw new IOException("Could not copy asset from jar file", e); - } - } - } - } public static Language getLanguage() { return language; diff --git a/src/main/java/com/dfsek/terra/population/FloraPopulator.java b/src/main/java/com/dfsek/terra/population/FloraPopulator.java index 34c2fc855..fc3e93c37 100644 --- a/src/main/java/com/dfsek/terra/population/FloraPopulator.java +++ b/src/main/java/com/dfsek/terra/population/FloraPopulator.java @@ -69,7 +69,7 @@ public class FloraPopulator extends GaeaBlockPopulator { Range range = world.getConfig().getBiome(biome).getTreeRange(tree); if(!range.isInRange(block.getY())) continue; try { - return tree.plant(block.getLocation(), random, false, Terra.getInstance()); + return tree.plant(block.getLocation(), random, Terra.getInstance()); } catch(NullPointerException ignore) {} } return false; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 76367dea6..3488f1a05 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -2,5 +2,6 @@ debug: false data-save: PT6M language: "en_us" fail-type: SHUTDOWN +dump-default: true master-disable: caves: false \ No newline at end of file diff --git a/src/main/resources/default-config/abstract/biomes/basic_ores.yml b/src/main/resources/default-config/abstract/biomes/basic_ores.yml new file mode 100644 index 000000000..0a4b2bb1a --- /dev/null +++ b/src/main/resources/default-config/abstract/biomes/basic_ores.yml @@ -0,0 +1,62 @@ +id: "BASIC_ORES" + +carving: + - CAVE: 30 + - RAVINE: 5 + - CAVERN: 5 +ores: + DIRT: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + GRAVEL: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + DIORITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + ANDESITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + GRANITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + COAL_ORE: + min: 4 + max: 8 + min-height: 0 + max-height: 84 + IRON_ORE: + min: 2 + max: 6 + min-height: 0 + max-height: 64 + GOLD_ORE: + min: 1 + max: 3 + min-height: 0 + max-height: 32 + LAPIS_ORE: + min: 1 + max: 2 + min-height: 0 + max-height: 32 + REDSTONE_ORE: + min: 1 + max: 2 + min-height: 0 + max-height: 16 + DIAMOND_ORE: + min: 1 + max: 1 + min-height: 0 + max-height: 16 \ No newline at end of file diff --git a/src/main/resources/default-config/abstract/biomes/beach_abstract.yml b/src/main/resources/default-config/abstract/biomes/beach_abstract.yml new file mode 100644 index 000000000..82c88dca9 --- /dev/null +++ b/src/main/resources/default-config/abstract/biomes/beach_abstract.yml @@ -0,0 +1,94 @@ +noise-equation: "((-((y / 58)^2)) + 1) + (noise2(x, z)/4)" +id: "BEACH_ABSTRACT" + + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - SANDY: 64 + - GRASSY: 255 + + +flora: + chance: 60 + attempts: 1 + items: + TALL_GRASS: + weight: 15 + y: + min: 62 + max: 84 + LILY_PAD: + weight: 1 + y: + min: 62 + max: 84 + GRASS: + weight: 70 + y: + min: 62 + max: 84 + POPPY: + weight: 5 + y: + min: 62 + max: 84 + +ores: + DIRT: + min: 0 + max: 2 + min-height: 0 + max-height: 128 + GRAVEL: + min: 0 + max: 2 + min-height: 0 + max-height: 128 + DIORITE: + min: 0 + max: 2 + min-height: 0 + max-height: 128 + ANDESITE: + min: 0 + max: 2 + min-height: 0 + max-height: 128 + GRANITE: + min: 0 + max: 2 + min-height: 0 + max-height: 128 + COAL_ORE: + min: 5 + max: 15 + min-height: 0 + max-height: 128 + IRON_ORE: + min: 2 + max: 6 + min-height: 0 + max-height: 64 + GOLD_ORE: + min: 1 + max: 3 + min-height: 0 + max-height: 32 + LAPIS_ORE: + min: 1 + max: 4 + min-height: 0 + max-height: 32 + REDSTONE_ORE: + min: 1 + max: 4 + min-height: 0 + max-height: 16 + DIAMOND_ORE: + min: 1 + max: 2 + min-height: 0 + max-height: 16 \ No newline at end of file diff --git a/src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty.yml b/src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty.yml new file mode 100644 index 000000000..5a90ff277 --- /dev/null +++ b/src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty.yml @@ -0,0 +1,114 @@ +noise-equation: "((-((y / 76)^2)) + 1) + ((noise2(x, z)+0.5) / 3) + abs(noise2(x/2, z/2)*6)" +id: "MOUNTAINS_PRETTY" + +carving: + - CAVE: 30 + - RAVINE: 5 + - CAVERN: 5 + +ores: + DIRT: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + GRAVEL: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + DIORITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + ANDESITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + GRANITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + COAL_ORE: + min: 4 + max: 8 + min-height: 0 + max-height: 84 + IRON_ORE: + min: 2 + max: 6 + min-height: 0 + max-height: 64 + GOLD_ORE: + min: 1 + max: 3 + min-height: 0 + max-height: 32 + LAPIS_ORE: + min: 1 + max: 2 + min-height: 0 + max-height: 32 + REDSTONE_ORE: + min: 1 + max: 2 + min-height: 0 + max-height: 16 + DIAMOND_ORE: + min: 1 + max: 1 + min-height: 0 + max-height: 16 + +trees: + chance: 15 + density: 1 + items: + SPRUCE: + weight: 1 + y: + min: 58 + max: 72 + +flora: + chance: 60 + attempts: 2 + simplex: + enable: true + frequency: 0.1 + seed: 4 + items: + SMALL_ROCK: + weight: 1 + y: + min: 62 + max: 180 + TALL_GRASS: + weight: 1 + y: + min: 62 + max: 180 + GRASS: + weight: 5 + y: + min: 62 + max: 180 + LEAVES: + weight: 3 + y: + min: 62 + max: 180 + +slabs: + enable: true + threshold: 0.015 + palettes: + - "minecraft:stone": "MOUNTAIN_SLABS" + - "minecraft:gravel": "MOUNTAIN_SLABS" + use-stairs-if-available: true + stair-palettes: + - "minecraft:stone": "MOUNTAIN_STAIRS" + - "minecraft:gravel": "MOUNTAIN_STAIRS" \ No newline at end of file diff --git a/src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty_border_0.yml b/src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty_border_0.yml new file mode 100644 index 000000000..5096add7d --- /dev/null +++ b/src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty_border_0.yml @@ -0,0 +1,114 @@ +noise-equation: "((-((y / 64)^2)) + 1) + ((noise2(x, z)+0.5) / 3) + abs(noise2(x/2, z/2)*2)" +id: "MOUNTAINS_PRETTY_0" + +carving: + - CAVE: 30 + - RAVINE: 5 + - CAVERN: 5 + +ores: + DIRT: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + GRAVEL: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + DIORITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + ANDESITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + GRANITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + COAL_ORE: + min: 4 + max: 8 + min-height: 0 + max-height: 84 + IRON_ORE: + min: 2 + max: 6 + min-height: 0 + max-height: 64 + GOLD_ORE: + min: 1 + max: 3 + min-height: 0 + max-height: 32 + LAPIS_ORE: + min: 1 + max: 2 + min-height: 0 + max-height: 32 + REDSTONE_ORE: + min: 1 + max: 2 + min-height: 0 + max-height: 16 + DIAMOND_ORE: + min: 1 + max: 1 + min-height: 0 + max-height: 16 + +trees: + chance: 15 + density: 1 + items: + SPRUCE: + weight: 1 + y: + min: 58 + max: 72 + +flora: + chance: 60 + attempts: 2 + simplex: + enable: true + frequency: 0.1 + seed: 4 + items: + SMALL_ROCK: + weight: 1 + y: + min: 62 + max: 180 + TALL_GRASS: + weight: 1 + y: + min: 62 + max: 180 + GRASS: + weight: 5 + y: + min: 62 + max: 180 + LEAVES: + weight: 3 + y: + min: 62 + max: 180 + +slabs: + enable: true + threshold: 0.015 + palettes: + - "minecraft:stone": "MOUNTAIN_SLABS" + - "minecraft:gravel": "MOUNTAIN_SLABS" + use-stairs-if-available: true + stair-palettes: + - "minecraft:stone": "MOUNTAIN_STAIRS" + - "minecraft:gravel": "MOUNTAIN_STAIRS" \ No newline at end of file diff --git a/src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty_border_1.yml b/src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty_border_1.yml new file mode 100644 index 000000000..c634c09a4 --- /dev/null +++ b/src/main/resources/default-config/abstract/biomes/mountain/mountains_pretty_border_1.yml @@ -0,0 +1,114 @@ +noise-equation: "((-((y / 70)^2)) + 1) + ((noise2(x, z)+0.5) / 3) + abs(noise2(x/2, z/2)*4)" +id: "MOUNTAINS_PRETTY_1" + +carving: + - CAVE: 30 + - RAVINE: 5 + - CAVERN: 5 + +ores: + DIRT: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + GRAVEL: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + DIORITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + ANDESITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + GRANITE: + min: 0 + max: 1 + min-height: 0 + max-height: 84 + COAL_ORE: + min: 4 + max: 8 + min-height: 0 + max-height: 84 + IRON_ORE: + min: 2 + max: 6 + min-height: 0 + max-height: 64 + GOLD_ORE: + min: 1 + max: 3 + min-height: 0 + max-height: 32 + LAPIS_ORE: + min: 1 + max: 2 + min-height: 0 + max-height: 32 + REDSTONE_ORE: + min: 1 + max: 2 + min-height: 0 + max-height: 16 + DIAMOND_ORE: + min: 1 + max: 1 + min-height: 0 + max-height: 16 + +trees: + chance: 15 + density: 1 + items: + SPRUCE: + weight: 1 + y: + min: 58 + max: 72 + +flora: + chance: 60 + attempts: 2 + simplex: + enable: true + frequency: 0.1 + seed: 4 + items: + SMALL_ROCK: + weight: 1 + y: + min: 62 + max: 180 + TALL_GRASS: + weight: 1 + y: + min: 62 + max: 180 + GRASS: + weight: 5 + y: + min: 62 + max: 180 + LEAVES: + weight: 3 + y: + min: 62 + max: 180 + +slabs: + enable: true + threshold: 0.015 + palettes: + - "minecraft:stone": "MOUNTAIN_SLABS" + - "minecraft:gravel": "MOUNTAIN_SLABS" + use-stairs-if-available: true + stair-palettes: + - "minecraft:stone": "MOUNTAIN_STAIRS" + - "minecraft:gravel": "MOUNTAIN_STAIRS" \ No newline at end of file diff --git a/src/main/resources/default-config/abstract/biomes/ocean_abstract.yml b/src/main/resources/default-config/abstract/biomes/ocean_abstract.yml new file mode 100644 index 000000000..08dcc0cef --- /dev/null +++ b/src/main/resources/default-config/abstract/biomes/ocean_abstract.yml @@ -0,0 +1,86 @@ +noise-equation: "((-((y / 48)^2)) + 1) + ((noise2(x, z)/2))" +id: "OCEAN_ABSTRACT" + + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - SANDY: 255 + - OCEANFLOOR: 60 + +flora: + chance: 50 + attempts: 1 + items: + TALL_SEAGRASS: + weight: 1 + y: + min: 32 + max: 64 + SEAGRASS: + weight: 3 + y: + min: 32 + max: 64 + +carving: + - CAVE_OCEAN: 35 + +ores: + DIRT: + min: 0 + max: 2 + min-height: 0 + max-height: 128 + GRAVEL: + min: 0 + max: 2 + min-height: 0 + max-height: 128 + DIORITE: + min: 0 + max: 2 + min-height: 0 + max-height: 128 + ANDESITE: + min: 0 + max: 2 + min-height: 0 + max-height: 128 + GRANITE: + min: 0 + max: 2 + min-height: 0 + max-height: 128 + COAL_ORE: + min: 5 + max: 15 + min-height: 0 + max-height: 128 + IRON_ORE: + min: 2 + max: 6 + min-height: 0 + max-height: 64 + GOLD_ORE: + min: 1 + max: 3 + min-height: 0 + max-height: 32 + LAPIS_ORE: + min: 1 + max: 4 + min-height: 0 + max-height: 32 + REDSTONE_ORE: + min: 1 + max: 4 + min-height: 0 + max-height: 16 + DIAMOND_ORE: + min: 1 + max: 2 + min-height: 0 + max-height: 16 \ No newline at end of file diff --git a/src/main/resources/default-config/abstract/biomes/plains_abstract.yml b/src/main/resources/default-config/abstract/biomes/plains_abstract.yml new file mode 100644 index 000000000..b25c83e10 --- /dev/null +++ b/src/main/resources/default-config/abstract/biomes/plains_abstract.yml @@ -0,0 +1,65 @@ +noise-equation: "((-((y / 63)^2)) + 1) + |(noise2(x, z) / 2) + 0.1|" +id: "PLAINS_ABSTRACT" + +carving: + - CAVE: 30 + - RAVINE: 5 + - CAVERN: 5 + +erodible: true +ores: + DIRT: + min: 0 + max: 2 + min-height: 0 + max-height: 72 + GRAVEL: + min: 0 + max: 2 + min-height: 0 + max-height: 72 + DIORITE: + min: 0 + max: 2 + min-height: 0 + max-height: 72 + ANDESITE: + min: 0 + max: 2 + min-height: 0 + max-height: 72 + GRANITE: + min: 0 + max: 2 + min-height: 0 + max-height: 72 + COAL_ORE: + min: 3 + max: 7 + min-height: 0 + max-height: 72 + IRON_ORE: + min: 2 + max: 7 + min-height: 0 + max-height: 64 + GOLD_ORE: + min: 1 + max: 3 + min-height: 0 + max-height: 32 + LAPIS_ORE: + min: 1 + max: 4 + min-height: 0 + max-height: 32 + REDSTONE_ORE: + min: 1 + max: 4 + min-height: 0 + max-height: 16 + DIAMOND_ORE: + min: 1 + max: 2 + min-height: 0 + max-height: 16 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/beach/beach.yml b/src/main/resources/default-config/biomes/beach/beach.yml new file mode 100644 index 000000000..ad831a055 --- /dev/null +++ b/src/main/resources/default-config/biomes/beach/beach.yml @@ -0,0 +1,5 @@ +extends: "BEACH_ABSTRACT" +id: "BEACH" +name: "Beach" +vanilla: BEACH +erodible: true \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/beach/beach_cold.yml b/src/main/resources/default-config/biomes/beach/beach_cold.yml new file mode 100644 index 000000000..238d1e260 --- /dev/null +++ b/src/main/resources/default-config/biomes/beach/beach_cold.yml @@ -0,0 +1,12 @@ +extends: "BEACH_ABSTRACT" +id: "COLD_BEACH" +name: "Cold Beach" +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - GRAVEL: 64 + - TUNDRA: 255 +erodible: true +vanilla: SNOWY_BEACH \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/beach/beach_frozen.yml b/src/main/resources/default-config/biomes/beach/beach_frozen.yml new file mode 100644 index 000000000..bc5defbbc --- /dev/null +++ b/src/main/resources/default-config/biomes/beach/beach_frozen.yml @@ -0,0 +1,14 @@ +extends: "BEACH_ABSTRACT" +id: "FROZEN_BEACH" +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - GRAVEL: 64 + - TUNDRA: 255 +erodible: true +vanilla: SNOWY_BEACH +ocean: + palette: "COLD_OCEAN" + level: 62 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/beach/beach_warm.yml b/src/main/resources/default-config/biomes/beach/beach_warm.yml new file mode 100644 index 000000000..14f490b64 --- /dev/null +++ b/src/main/resources/default-config/biomes/beach/beach_warm.yml @@ -0,0 +1,12 @@ +extends: "BEACH_ABSTRACT" +id: "WARM_BEACH" +name: "Warm Beach" +vanilla: BEACH + +erodible: true +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - SAND_ALL: 255 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/desert.yml b/src/main/resources/default-config/biomes/desert.yml new file mode 100644 index 000000000..33f3d49f8 --- /dev/null +++ b/src/main/resources/default-config/biomes/desert.yml @@ -0,0 +1,50 @@ +extends: "PLAINS_ABSTRACT" +id: "DESERT" +name: "Desert" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - DESERT: 255 +vanilla: DESERT + +flora: + chance: 2 + items: + DEAD_BUSH: + weight: 1 + y: + min: 62 + max: 84 + SMALL_ROCK: + weight: 1 + y: + min: 62 + max: 84 + +erodible: true + +trees: + chance: 100 + density: 1 + items: + CACTUS: + weight: 1 + y: + min: 58 + max: 72 + +slabs: + enable: true + threshold: 0.015 + palettes: + - "minecraft:sand": "BLOCK:minecraft:sandstone_slab" + use-stairs-if-available: true + stair-palettes: + - "minecraft:sand": "BLOCK:minecraft:sandstone_stairs" + + + +# Carving and ores covered by super biome \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/forest/birch_forest.yml b/src/main/resources/default-config/biomes/forest/birch_forest.yml new file mode 100644 index 000000000..1680a73ca --- /dev/null +++ b/src/main/resources/default-config/biomes/forest/birch_forest.yml @@ -0,0 +1,43 @@ +noise-equation: "((-((y / 62)^2)) + 1) + ((noise2(x, z)+0.5) / 2)" +extends: "BASIC_ORES" +id: "BIRCH_FOREST" +name: "Birch Forest" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - SANDY: 62 + - GRASSY: 255 +vanilla: BIRCH_FOREST + +flora: + chance: 40 + attempts: 1 + items: + TALL_GRASS: + weight: 15 + y: + min: 62 + max: 84 + GRASS: + weight: 70 + y: + min: 62 + max: 84 + POPPY: + weight: 5 + y: + min: 62 + max: 84 +erodible: true + +trees: + density: 200 + items: + BIRCH: + weight: 1 + y: + min: 58 + max: 84 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/forest/dark_forest.yml b/src/main/resources/default-config/biomes/forest/dark_forest.yml new file mode 100644 index 000000000..9ab9fc4c4 --- /dev/null +++ b/src/main/resources/default-config/biomes/forest/dark_forest.yml @@ -0,0 +1,43 @@ +noise-equation: "((-((y / 62)^2)) + 1) + ((noise2(x, z)+0.5) / 2)" +extends: "BASIC_ORES" +id: "DARK_FOREST" +name: "Birch Forest" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - SANDY: 62 + - GRASSY: 255 +vanilla: DARK_FOREST +erodible: true +flora-chance: 40 +flora: + chance: 40 + attempts: 1 + items: + TALL_GRASS: + weight: 15 + y: + min: 62 + max: 255 + GRASS: + weight: 70 + y: + min: 62 + max: 255 + POPPY: + weight: 5 + y: + min: 62 + max: 255 + +trees: + density: 400 + items: + DARK_OAK: + weight: 1 + y: + min: 58 + max: 84 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/forest/jungle.yml b/src/main/resources/default-config/biomes/forest/jungle.yml new file mode 100644 index 000000000..6770aba10 --- /dev/null +++ b/src/main/resources/default-config/biomes/forest/jungle.yml @@ -0,0 +1,76 @@ +noise-equation: "((-((y / 62)^2)) + 1) + ((noise2(x, z)+0.25) / 2)" +extends: "BASIC_ORES" +id: "JUNGLE" +name: "Jungle" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - RIVER_BOTTOM: 61 + - RIVER_SHORE: 62 + - GRASSY: 255 +vanilla: JUNGLE + +erodible: true +structures: + - JUNGLE +flora: + chance: 80 + attempts: 2 + items: + TALL_GRASS: + weight: 150 + y: + min: 62 + max: 84 + GRASS: + weight: 750 + y: + min: 62 + max: 84 + POPPY: + weight: 50 + y: + min: 62 + max: 84 + ROSE_BUSH: + weight: 4 + y: + min: 62 + max: 84 + LILAC: + weight: 4 + y: + min: 62 + max: 84 + STALAGMITE: + weight: 10 + y: + min: 4 + max: 50 + STALACTITE: + weight: 10 + y: + min: 4 + max: 50 + +trees: + density: 500 + items: + JUNGLE_BUSH: + weight: 4 + y: + min: 58 + max: 84 + SMALL_JUNGLE: + weight: 2 + y: + min: 58 + max: 84 + JUNGLE: + weight: 4 + y: + min: 58 + max: 84 diff --git a/src/main/resources/default-config/biomes/forest/oak_forest.yml b/src/main/resources/default-config/biomes/forest/oak_forest.yml new file mode 100644 index 000000000..7665edb97 --- /dev/null +++ b/src/main/resources/default-config/biomes/forest/oak_forest.yml @@ -0,0 +1,59 @@ +noise-equation: "((-((y / 62)^2)) + 1) + ((noise2(x, z)+0.5) / 1.5)" +extends: "BASIC_ORES" +id: "FOREST" +name: "Oak Forest" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - RIVER_BOTTOM: 61 + - RIVER_SHORE: 62 + - GRASSY: 255 +vanilla: FOREST + +flora: + chance: 40 + attempts: 1 + items: + TALL_GRASS: + weight: 150 + y: + min: 62 + max: 84 + GRASS: + weight: 750 + y: + min: 62 + max: 84 + POPPY: + weight: 50 + y: + min: 62 + max: 84 + ROSE_BUSH: + weight: 4 + y: + min: 62 + max: 84 + LILAC: + weight: 4 + y: + min: 62 + max: 84 +erodible: true + +trees: + density: 250 + items: + OAK: + weight: 8 + y: + min: 58 + max: 84 + LARGE_OAK: + weight: 2 + y: + min: 58 + max: 84 diff --git a/src/main/resources/default-config/biomes/forest/savanna.yml b/src/main/resources/default-config/biomes/forest/savanna.yml new file mode 100644 index 000000000..451c64764 --- /dev/null +++ b/src/main/resources/default-config/biomes/forest/savanna.yml @@ -0,0 +1,39 @@ +noise-equation: "((-((y / 62)^2)) + 1) + ((noise2(x, z)+0.5) / 2)" +extends: "BASIC_ORES" +id: "SAVANNA" +name: "Savanna" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - RIVER_BOTTOM: 61 + - RIVER_SHORE: 62 + - GRASSY: 255 +vanilla: SAVANNA + +flora: + chance: 40 + attempts: 1 + items: + TALL_GRASS: + weight: 15 + y: + min: 62 + max: 84 + GRASS: + weight: 70 + y: + min: 62 + max: 84 +erodible: true + +trees: + density: 20 + items: + ACACIA: + weight: 1 + y: + min: 58 + max: 84 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/forest/snowy_taiga.yml b/src/main/resources/default-config/biomes/forest/snowy_taiga.yml new file mode 100644 index 000000000..7a2947745 --- /dev/null +++ b/src/main/resources/default-config/biomes/forest/snowy_taiga.yml @@ -0,0 +1,54 @@ +noise-equation: "((-((y / 62)^2)) + 1) + ((noise2(x, z)+0.5) / 1.5)" +extends: "BASIC_ORES" +id: "SNOWY_TAIGA" +name: "Taiga Forest" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - RIVER_BOTTOM: 61 + - RIVER_SHORE: 62 + - TAIGA: 255 +vanilla: TAIGA + +snow: + - min: 0 + max: 255 + chance: 100 +erodible: true + +flora: + chance: 40 + attempts: 1 + items: + TALL_GRASS: + weight: 15 + y: + min: 62 + max: 84 + GRASS: + weight: 75 + y: + min: 62 + max: 84 + POPPY: + weight: 5 + y: + min: 62 + max: 84 + +trees: + density: 125 + items: + SPRUCE: + weight: 1 + y: + min: 58 + max: 84 + LARGE_SPRUCE: + weight: 1 + y: + min: 58 + max: 84 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/forest/taiga.yml b/src/main/resources/default-config/biomes/forest/taiga.yml new file mode 100644 index 000000000..51eff4d2f --- /dev/null +++ b/src/main/resources/default-config/biomes/forest/taiga.yml @@ -0,0 +1,49 @@ +noise-equation: "((-((y / 62)^2)) + 1) + ((noise2(x, z)+0.5) / 1.5)" +extends: "BASIC_ORES" +id: "TAIGA" +name: "Taiga Forest" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - RIVER_BOTTOM: 61 + - RIVER_SHORE: 62 + - TAIGA: 255 +vanilla: TAIGA +erodible: true + +flora: + chance: 40 + attempts: 1 + items: + TALL_GRASS: + weight: 15 + y: + min: 62 + max: 84 + GRASS: + weight: 75 + y: + min: 62 + max: 84 + POPPY: + weight: 5 + y: + min: 62 + max: 84 + +trees: + density: 125 + items: + SPRUCE: + weight: 1 + y: + min: 58 + max: 84 + LARGE_SPRUCE: + weight: 1 + y: + min: 58 + max: 84 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mesa.yml b/src/main/resources/default-config/biomes/mesa.yml new file mode 100644 index 000000000..3074a8f52 --- /dev/null +++ b/src/main/resources/default-config/biomes/mesa.yml @@ -0,0 +1,60 @@ +noise-equation: "((-((y / 64)^2)) + 1) + min(floor(((max(noise2(x/1.5, z/1.5)+0.1, 0)) + 0.1)*5), 3)/1.75 + |(noise2(x/1.5, z/1.5)+0.1)*1.5|" +extends: "BASIC_ORES" +id: "MESA" +name: "Mesa" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - RED_DESERT: 255 + - "BLOCK:minecraft:red_terracotta": 128 + - "BLOCK:minecraft:orange_terracotta": 124 + - "BLOCK:minecraft:terracotta": 120 + - "BLOCK:minecraft:yellow_terracotta": 116 + - "BLOCK:minecraft:red_terracotta": 112 + - "BLOCK:minecraft:orange_terracotta": 108 + - "BLOCK:minecraft:terracotta": 104 + - "BLOCK:minecraft:red_terracotta": 100 + - "BLOCK:minecraft:orange_terracotta": 96 + - "BLOCK:minecraft:terracotta": 92 + - "BLOCK:minecraft:yellow_terracotta": 88 + - "BLOCK:minecraft:red_terracotta": 84 + - "BLOCK:minecraft:orange_terracotta": 80 + - RED_DESERT: 72 +vanilla: BADLANDS + +flora-chance: 2 +flora: + chance: 2 + attempts: 1 + items: + DEAD_BUSH: + weight: 1 + y: + min: 62 + max: 84 + SMALL_ROCK: + weight: 1 + y: + min: 62 + max: 84 +slabs: + enable: true + threshold: 0.015 + palettes: + - "minecraft:red_sand": "BLOCK:minecraft:red_sandstone_slab" + use-stairs-if-available: true + stair-palettes: + - "minecraft:red_sand": "BLOCK:minecraft:red_sandstone_stairs" + +trees: + chance: 100 + density: 1 + items: + CACTUS: + weight: 1 + y: + min: 58 + max: 72 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/arid_mountains.yml b/src/main/resources/default-config/biomes/mountain/arid_mountains.yml new file mode 100644 index 000000000..e562be523 --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/arid_mountains.yml @@ -0,0 +1,47 @@ +noise-equation: "((-((y / 64)^2)) + 1) + min(floor(((|noise2(x/2.5, z/2.5)|) + 0.1)*6), 3)/2.5 + |noise2(x/2.5, z/2.5)*2|" + +id: "ARID_MOUNTAINS" +extends: "BASIC_ORES" + + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - ARID: 255 +vanilla: SAVANNA + +erodible: false + +flora: + chance: 40 + attempts: 1 + items: + TALL_GRASS: + weight: 15 + y: + min: 62 + max: 128 + GRASS: + weight: 70 + y: + min: 62 + max: 128 + +trees: + density: 50 + items: + ACACIA: + weight: 1 + y: + min: 58 + max: 128 +slabs: + enable: true + threshold: 0.015 + palettes: + - "minecraft:red_sand": "BLOCK:minecraft:red_sandstone_slab" + use-stairs-if-available: true + stair-palettes: + - "minecraft:red_sand": "BLOCK:minecraft:red_sandstone_stairs" \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/arid_mountains_border_0.yml b/src/main/resources/default-config/biomes/mountain/arid_mountains_border_0.yml new file mode 100644 index 000000000..0b687cb56 --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/arid_mountains_border_0.yml @@ -0,0 +1,47 @@ +noise-equation: "((-((y / 64)^2)) + 1) + min(floor(((|noise2(x/2.5, z/2.5)|) + 0.1)*2), 3)/5 + |noise2(x/2.5, z/2.5)*2|" + +id: "ARID_MOUNTAINS_0" +extends: "BASIC_ORES" + + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - ARID: 255 +vanilla: SAVANNA + +erodible: false + +flora: + chance: 40 + attempts: 1 + items: + TALL_GRASS: + weight: 15 + y: + min: 62 + max: 128 + GRASS: + weight: 70 + y: + min: 62 + max: 128 + +trees: + density: 50 + items: + ACACIA: + weight: 1 + y: + min: 58 + max: 128 +slabs: + enable: true + threshold: 0.015 + palettes: + - "minecraft:red_sand": "BLOCK:minecraft:red_sandstone_slab" + use-stairs-if-available: true + stair-palettes: + - "minecraft:red_sand": "BLOCK:minecraft:red_sandstone_stairs" \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/arid_mountains_border_1.yml b/src/main/resources/default-config/biomes/mountain/arid_mountains_border_1.yml new file mode 100644 index 000000000..ef55967db --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/arid_mountains_border_1.yml @@ -0,0 +1,47 @@ +noise-equation: "((-((y / 64)^2)) + 1) + min(floor(((|noise2(x/2.5, z/2.5)|) + 0.1)*4), 3)/3 + |noise2(x/2.5, z/2.5)*2|" + +id: "ARID_MOUNTAINS_1" +extends: "BASIC_ORES" + + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - ARID: 255 +vanilla: SAVANNA + +erodible: false + +flora: + chance: 40 + attempts: 1 + items: + TALL_GRASS: + weight: 15 + y: + min: 62 + max: 128 + GRASS: + weight: 70 + y: + min: 62 + max: 128 + +trees: + density: 50 + items: + ACACIA: + weight: 1 + y: + min: 58 + max: 128 +slabs: + enable: true + threshold: 0.015 + palettes: + - "minecraft:red_sand": "BLOCK:minecraft:red_sandstone_slab" + use-stairs-if-available: true + stair-palettes: + - "minecraft:red_sand": "BLOCK:minecraft:red_sandstone_stairs" \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/mountains_jungle.yml b/src/main/resources/default-config/biomes/mountain/mountains_jungle.yml new file mode 100644 index 000000000..02c089d6c --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/mountains_jungle.yml @@ -0,0 +1,28 @@ +extends: "MOUNTAINS_PRETTY" +id: "MOUNTAINS_JUNGLE" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - MOUNTAIN_JUNGLE: 255 +vanilla: JUNGLE +trees: + density: 500 + items: + JUNGLE_BUSH: + weight: 4 + y: + min: 58 + max: 92 + SMALL_JUNGLE: + weight: 2 + y: + min: 58 + max: 92 + JUNGLE: + weight: 4 + y: + min: 58 + max: 92 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/mountains_jungle_border_0.yml b/src/main/resources/default-config/biomes/mountain/mountains_jungle_border_0.yml new file mode 100644 index 000000000..05df0b2d4 --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/mountains_jungle_border_0.yml @@ -0,0 +1,28 @@ +extends: "MOUNTAINS_PRETTY_0" +id: "MOUNTAINS_JUNGLE_0" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - MOUNTAIN_JUNGLE: 255 +vanilla: JUNGLE +trees: + density: 500 + items: + JUNGLE_BUSH: + weight: 4 + y: + min: 58 + max: 92 + SMALL_JUNGLE: + weight: 2 + y: + min: 58 + max: 92 + JUNGLE: + weight: 4 + y: + min: 58 + max: 92 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/mountains_jungle_border_1.yml b/src/main/resources/default-config/biomes/mountain/mountains_jungle_border_1.yml new file mode 100644 index 000000000..88ef7acb0 --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/mountains_jungle_border_1.yml @@ -0,0 +1,28 @@ +extends: "MOUNTAINS_PRETTY_1" +id: "MOUNTAINS_JUNGLE_1" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - MOUNTAIN_JUNGLE: 255 +vanilla: JUNGLE +trees: + density: 120 + items: + JUNGLE_BUSH: + weight: 4 + y: + min: 58 + max: 92 + SMALL_JUNGLE: + weight: 2 + y: + min: 58 + max: 92 + JUNGLE: + weight: 4 + y: + min: 58 + max: 92 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/mountains_pretty.yml b/src/main/resources/default-config/biomes/mountain/mountains_pretty.yml new file mode 100644 index 000000000..5990807c0 --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/mountains_pretty.yml @@ -0,0 +1,10 @@ +extends: "MOUNTAINS_PRETTY" +id: "MOUNTAINS_PRETTY" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - MOUNTAIN_PRETTY: 255 +vanilla: PLAINS \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/mountains_pretty_border_0.yml b/src/main/resources/default-config/biomes/mountain/mountains_pretty_border_0.yml new file mode 100644 index 000000000..2330def15 --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/mountains_pretty_border_0.yml @@ -0,0 +1,10 @@ +extends: "MOUNTAINS_PRETTY_0" +id: "MOUNTAINS_PRETTY_0" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - MOUNTAIN_PRETTY: 255 +vanilla: PLAINS \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/mountains_pretty_border_1.yml b/src/main/resources/default-config/biomes/mountain/mountains_pretty_border_1.yml new file mode 100644 index 000000000..cf669ffaf --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/mountains_pretty_border_1.yml @@ -0,0 +1,10 @@ +extends: "MOUNTAINS_PRETTY_1" +id: "MOUNTAINS_PRETTY_1" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - MOUNTAIN_PRETTY: 255 +vanilla: PLAINS \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/mountains_stone.yml b/src/main/resources/default-config/biomes/mountain/mountains_stone.yml new file mode 100644 index 000000000..8b400131a --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/mountains_stone.yml @@ -0,0 +1,35 @@ +extends: "MOUNTAINS_PRETTY" +id: "MOUNTAINS_STONE" +noise-equation: "((-((y / 76)^2)) + 1) + ((noise2(x, z)+0.5) / 3) + max(noise2(x/2, z/2)*6, 0)" +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - MOUNTAIN_STONE: 255 + - MOUNTAIN_STONE_GRASS: 108 + - MOUNTAIN_GRASS: 84 +vanilla: MOUNTAINS +snow: + - min: 0 + max: 120 + chance: 50 + - min: 120 + max: 140 + chance: 75 + - min: 140 + max: 255 + chance: 100 +trees: + density: 200 + items: + SPRUCE: + weight: 1 + y: + min: 58 + max: 92 + +flora: + chance: 0 + attempts: 0 + items: {} \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/mountains_stone_border_0.yml b/src/main/resources/default-config/biomes/mountain/mountains_stone_border_0.yml new file mode 100644 index 000000000..e191e6915 --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/mountains_stone_border_0.yml @@ -0,0 +1,35 @@ +extends: "MOUNTAINS_PRETTY_0" +id: "MOUNTAINS_STONE_0" +noise-equation: "((-((y / 64)^2)) + 1) + ((noise2(x, z)+0.5) / 3) + max(noise2(x/2, z/2)*2, 0)" +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - MOUNTAIN_STONE: 255 + - MOUNTAIN_STONE_GRASS: 108 + - MOUNTAIN_GRASS: 84 +vanilla: MOUNTAINS +snow: + - min: 0 + max: 120 + chance: 50 + - min: 120 + max: 140 + chance: 75 + - min: 140 + max: 255 + chance: 100 +trees: + density: 200 + items: + SPRUCE: + weight: 1 + y: + min: 58 + max: 92 + +flora: + chance: 0 + attempts: 0 + items: {} \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountain/mountains_stone_border_1.yml b/src/main/resources/default-config/biomes/mountain/mountains_stone_border_1.yml new file mode 100644 index 000000000..9d30c3153 --- /dev/null +++ b/src/main/resources/default-config/biomes/mountain/mountains_stone_border_1.yml @@ -0,0 +1,35 @@ +extends: "MOUNTAINS_PRETTY_1" +id: "MOUNTAINS_STONE_1" +noise-equation: "((-((y / 70)^2)) + 1) + ((noise2(x, z)+0.5) / 3) + max(noise2(x/2, z/2)*4, 0)" +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - MOUNTAIN_STONE: 255 + - MOUNTAIN_STONE_GRASS: 108 + - MOUNTAIN_GRASS: 84 +vanilla: MOUNTAINS +snow: + - min: 0 + max: 120 + chance: 50 + - min: 120 + max: 140 + chance: 75 + - min: 140 + max: 255 + chance: 100 +trees: + density: 200 + items: + SPRUCE: + weight: 1 + y: + min: 58 + max: 92 + +flora: + chance: 0 + attempts: 0 + items: {} \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/mountains.yml b/src/main/resources/default-config/biomes/mountains.yml new file mode 100644 index 000000000..931b49b28 --- /dev/null +++ b/src/main/resources/default-config/biomes/mountains.yml @@ -0,0 +1,34 @@ +noise-equation: "((-((y / 62)^2)) + 1) + ((noise2(x, z)+0.5) / 3) + max(floor(noise3(x/2, y, z/2)*10 + noise2(x/2, z/2)*55)/8, 0)" +extends: "BASIC_ORES" +id: "MOUNTAINS" +name: "Mountains" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - TUNDRA: 100 + - SNOW: 255 +vanilla: MOUNTAINS + +flora: + chance: 2 + attempts: 1 + items: + SMALL_ROCK: + weight: 1 + y: + min: 60 + max: 72 +slabs: + enable: true + threshold: 0.015 + palettes: + - "minecraft:stone": "MOUNTAIN_SLABS" + - "minecraft:snow_block": "SNOW_LAYERS" + - "minecraft:gravel": "MOUNTAIN_SLABS" + use-stairs-if-available: true + stair-palettes: + - "minecraft:stone": "MOUNTAIN_STAIRS" + - "minecraft:gravel": "MOUNTAIN_STAIRS" \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/ocean/ocean.yml b/src/main/resources/default-config/biomes/ocean/ocean.yml new file mode 100644 index 000000000..11818f5bf --- /dev/null +++ b/src/main/resources/default-config/biomes/ocean/ocean.yml @@ -0,0 +1,5 @@ +extends: "OCEAN_ABSTRACT" +id: "OCEAN" +name: "Ocean" +vanilla: OCEAN + diff --git a/src/main/resources/default-config/biomes/ocean/ocean_cold.yml b/src/main/resources/default-config/biomes/ocean/ocean_cold.yml new file mode 100644 index 000000000..d2fdd3c66 --- /dev/null +++ b/src/main/resources/default-config/biomes/ocean/ocean_cold.yml @@ -0,0 +1,13 @@ +extends: "OCEAN_ABSTRACT" +id: "COLD_OCEAN" +name: "Cold Ocean" +vanilla: COLD_OCEAN +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - TUNDRA: 255 + - OCEANFLOOR: 60 +ocean: + level: 62 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/ocean/ocean_frozen.yml b/src/main/resources/default-config/biomes/ocean/ocean_frozen.yml new file mode 100644 index 000000000..9e15f3cd7 --- /dev/null +++ b/src/main/resources/default-config/biomes/ocean/ocean_frozen.yml @@ -0,0 +1,14 @@ +extends: "OCEAN_ABSTRACT" +id: "FROZEN_OCEAN" +name: "Cold Ocean" +vanilla: COLD_OCEAN +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - TUNDRA: 255 + - OCEANFLOOR: 60 +ocean: + palette: "COLD_OCEAN" + level: 62 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/ocean/ocean_lukewarm.yml b/src/main/resources/default-config/biomes/ocean/ocean_lukewarm.yml new file mode 100644 index 000000000..a5fdbbd93 --- /dev/null +++ b/src/main/resources/default-config/biomes/ocean/ocean_lukewarm.yml @@ -0,0 +1,40 @@ +extends: "OCEAN_ABSTRACT" +id: "LUKEWARM_OCEAN" +name: "Ocean" +vanilla: LUKEWARM_OCEAN +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - SANDY: 255 + - OCEANFLOOR: 60 +flora: + chance: 50 + attempts: 1 + items: + TALL_SEAGRASS: + weight: 1 + y: + min: 32 + max: 64 + SEAGRASS: + weight: 3 + y: + min: 32 + max: 64 + KELP_SHORT: + weight: 5 + y: + min: 32 + max: 64 + KELP_MEDIUM: + weight: 5 + y: + min: 32 + max: 64 + KELP_TALL: + weight: 5 + y: + min: 32 + max: 64 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/ocean/ocean_warm.yml b/src/main/resources/default-config/biomes/ocean/ocean_warm.yml new file mode 100644 index 000000000..89e8aea08 --- /dev/null +++ b/src/main/resources/default-config/biomes/ocean/ocean_warm.yml @@ -0,0 +1,44 @@ +extends: "OCEAN_ABSTRACT" +id: "WARM_OCEAN" +name: "Ocean" +vanilla: WARM_OCEAN +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - SANDY: 255 + - OCEANFLOOR: 60 +flora: + chance: 50 + attempts: 1 + simplex: + enable: true + frequency: 0.05 + seed: 4 + items: + TALL_SEAGRASS: + weight: 1 + y: + min: 32 + max: 64 + SEAGRASS: + weight: 3 + y: + min: 32 + max: 64 + KELP_SHORT: + weight: 1 + y: + min: 32 + max: 64 + KELP_MEDIUM: + weight: 1 + y: + min: 32 + max: 64 + KELP_TALL: + weight: 1 + y: + min: 32 + max: 64 diff --git a/src/main/resources/default-config/biomes/plains.yml b/src/main/resources/default-config/biomes/plains.yml new file mode 100644 index 000000000..5db536dea --- /dev/null +++ b/src/main/resources/default-config/biomes/plains.yml @@ -0,0 +1,46 @@ +extends: "PLAINS_ABSTRACT" +id: "PLAINS" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - RIVER_BOTTOM: 61 + - RIVER_SHORE: 62 + - GRASSY: 255 +vanilla: PLAINS + +erodible: true + +flora: + chance: 60 + attempts: 1 + items: + TALL_GRASS: + weight: 160 + y: + min: 62 + max: 84 + GRASS: + weight: 100 + y: + min: 62 + max: 84 + SUNFLOWER: + weight: 8 + y: + min: 62 + max: 84 + +trees: + chance: 1 + density: 1 + items: + OAK: + weight: 1 + y: + min: 58 + max: 72 + +# Carving and ores covered by super biome \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/plains_islands.yml b/src/main/resources/default-config/biomes/plains_islands.yml new file mode 100644 index 000000000..05d4b78d6 --- /dev/null +++ b/src/main/resources/default-config/biomes/plains_islands.yml @@ -0,0 +1,43 @@ +noise-equation: "-(y-62)*(y-156)*(y+25)*(y-160)*0.0000001 + if(max(y-72, 0), noise3(x, y, z)*0.75, (noise2(x, z)+0.5) / 2)" +extends: "BASIC_ORES" +id: "PLAINS_ISLANDS" +name: "Plains Islands" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - SANDY: 62 + - GRASSY: 255 +vanilla: PLAINS + +flora: + chance: 60 + attempts: 1 + items: + TALL_GRASS: + weight: 160 + y: + min: 62 + max: 84 + GRASS: + weight: 100 + y: + min: 62 + max: 84 + SUNFLOWER: + weight: 8 + y: + min: 62 + max: 84 + +trees: + chance: 1 + density: 1 + items: + OAK: + weight: 1 + y: + min: 58 + max: 72 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/river.yml b/src/main/resources/default-config/biomes/river.yml new file mode 100644 index 000000000..dfcad8c44 --- /dev/null +++ b/src/main/resources/default-config/biomes/river.yml @@ -0,0 +1,37 @@ +noise-equation: "((-((y / 58)^2)) + 1) + ((noise2(x, z)/2.5))" +extends: "BASIC_ORES" +id: "RIVER" +name: "River" +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - RIVER_BOTTOM: 61 + - RIVER_SHORE: 62 + - GRASSY: 255 +vanilla: RIVER + +flora: + chance: 60 + attempts: 1 + items: + TALL_GRASS: + weight: 150 + y: + min: 62 + max: 84 + LILY_PAD: + weight: 10 + y: + min: 62 + max: 84 + GRASS: + weight: 700 + y: + min: 62 + max: 84 + +ocean: + palette: "BLOCK:minecraft:water" + level: 62 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/swamp.yml b/src/main/resources/default-config/biomes/swamp.yml new file mode 100644 index 000000000..ad447ed8e --- /dev/null +++ b/src/main/resources/default-config/biomes/swamp.yml @@ -0,0 +1,55 @@ +noise-equation: "((-((y / 62)^2)) + 1) + ((noise2(x, z)/4))" +extends: "BASIC_ORES" +id: "SWAMP" +name: "Swamp" +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - SWAMP_BOTTOM: 61 + - SWAMP: 255 +vanilla: SWAMP +flora: + chance: 80 + attempts: 1 + items: + TALL_GRASS: + weight: 150 + y: + min: 62 + max: 84 + LILY_PAD: + weight: 40 + y: + min: 62 + max: 84 + GRASS: + weight: 700 + y: + min: 62 + max: 84 + BLUE_ORCHID: + weight: 20 + y: + min: 62 + max: 84 + ROOT: + weight: 3 + y: + min: 62 + max: 84 + +carving: + - CAVE_SWAMP: 30 + + + +trees: + density: 15 + items: + SWAMP_OAK: + weight: 1 + y: + min: 58 + max: 84 \ No newline at end of file diff --git a/src/main/resources/default-config/biomes/tundra.yml b/src/main/resources/default-config/biomes/tundra.yml new file mode 100644 index 000000000..ac04ddea2 --- /dev/null +++ b/src/main/resources/default-config/biomes/tundra.yml @@ -0,0 +1,49 @@ +extends: "PLAINS_ABSTRACT" +id: "TUNDRA" +name: "Tundra" + +palette: + - BEDROCK: 0 + - BEDROCK_MOST: 1 + - BEDROCK_HALF: 2 + - BEDROCK_LITTLE: 3 + - TUNDRA: 255 +vanilla: SNOWY_TUNDRA +carving: + - CAVE_TUNDRA: 35 + - RAVINE: 5 + - CAVERN: 5 + +snow: + - min: 0 + max: 255 + chance: 30 +erodible: true + +flora: + chance: 2 + items: + SMALL_ROCK: + weight: 1 + y: + min: 60 + max: 255 +trees: + density: 40 + items: + ICE_SPIKE: + weight: 1 + y: + min: 58 + max: 84 +slabs: + enable: true + threshold: 0.015 + palettes: + - "minecraft:stone": "MOUNTAIN_SLABS" + - "minecraft:snow_block": "SNOW_LAYERS" + - "minecraft:gravel": "MOUNTAIN_SLABS" + use-stairs-if-available: true + stair-palettes: + - "minecraft:stone": "MOUNTAIN_STAIRS" + - "minecraft:gravel": "MOUNTAIN_STAIRS" \ No newline at end of file diff --git a/src/main/resources/default-config/carving/cave.yml b/src/main/resources/default-config/carving/cave.yml new file mode 100644 index 000000000..a376cea09 --- /dev/null +++ b/src/main/resources/default-config/carving/cave.yml @@ -0,0 +1,66 @@ +id: CAVE +length: + min: 20 + max: 100 +start: + x: 1 + y: 0.25 + z: 1 + radius: + multiply: + x: 1 + y: 1 + z: 1 + min: 2 + max: 4 + height: + min: 4 + max: 72 +cut: + top: 0 + bottom: 1 +mutate: + x: 2 + y: 6 + z: 2 + radius: 0.125 +palette: + inner: + replace-blacklist: true + replace: + - "minecraft:air" + - "minecraft:water" + - "minecraft:lava" + - "minecraft:bedrock" + - "minecraft:ice" + layers: + - materials: {"minecraft:air": 1} + y: 255 + - materials: {"minecraft:lava": 1} + y: 8 + outer: + replace-blacklist: false + replace: [] + layers: + - materials: { "minecraft:stone": 1 } + y: 255 + top: + replace-blacklist: false + replace: [] + layers: + - materials: { "minecraft:stone": 1 } + y: 255 + bottom: + replace-blacklist: false + replace: [] + layers: + - materials: { "minecraft:stone": 1 } + y: 255 +shift: + "minecraft:grass_block": ["minecraft:dirt"] + "minecraft:podzol": ["minecraft:dirt"] + "minecraft:gravel": ["minecraft:dirt"] + "minecraft:sand": ["minecraft:dirt"] + "minecraft:coarse_dirt": ["minecraft:dirt"] + +update: [] \ No newline at end of file diff --git a/src/main/resources/default-config/carving/cave_ocean.yml b/src/main/resources/default-config/carving/cave_ocean.yml new file mode 100644 index 000000000..1d22b1c60 --- /dev/null +++ b/src/main/resources/default-config/carving/cave_ocean.yml @@ -0,0 +1,73 @@ +id: "CAVE_OCEAN" +length: + min: 20 + max: 100 +start: + x: 1 + y: 0.25 + z: 1 + radius: + multiply: + x: 1 + y: 1 + z: 1 + min: 2 + max: 4 + height: + min: 4 + max: 72 +cut: + top: 0 + bottom: 0 +mutate: + x: 2 + y: 6 + z: 2 + radius: 0.125 +palette: + inner: + replace-blacklist: true + replace: + - "minecraft:air" + - "minecraft:water" + - "minecraft:lava" + - "minecraft:bedrock" + - "minecraft:ice" + layers: + - materials: { "minecraft:air": 1 } + y: 255 + - materials: {"minecraft:water": 1} + y: 62 + - materials: { "minecraft:lava": 1 } + y: 7 + - materials: {"minecraft:obsidian": 19, "minecraft:magma_block": 1} + y: 8 + outer: + replace-blacklist: false + replace: + - "minecraft:stone" + layers: + - materials: { "minecraft:stone": 1 } + y: 255 + top: + replace-blacklist: false + replace: + - "minecraft:stone" + layers: + - materials: { "minecraft:stone": 1 } + y: 255 + bottom: + replace-blacklist: false + replace: + - "minecraft:stone" + layers: + - materials: { "minecraft:stone": 1 } + y: 255 +shift: + "minecraft:grass_block": ["minecraft:dirt"] + "minecraft:podzol": ["minecraft:dirt"] + "minecraft:gravel": ["minecraft:dirt"] + "minecraft:sand": ["minecraft:dirt"] + "minecraft:coarse_dirt": ["minecraft:dirt"] + +update: [] \ No newline at end of file diff --git a/src/main/resources/default-config/carving/cave_swamp.yml b/src/main/resources/default-config/carving/cave_swamp.yml new file mode 100644 index 000000000..ae0bfcd1b --- /dev/null +++ b/src/main/resources/default-config/carving/cave_swamp.yml @@ -0,0 +1,85 @@ +id: "CAVE_SWAMP" +length: + min: 20 + max: 100 +start: + x: 1 + y: 0.25 + z: 1 + radius: + multiply: + x: 1 + y: 1 + z: 1 + min: 2 + max: 4 + height: + min: 4 + max: 72 +cut: + top: 0 + bottom: 0 +mutate: + x: 2 + y: 6 + z: 2 + radius: 0.125 +palette: + inner: + replace-blacklist: true + replace: + - "minecraft:air" + - "minecraft:water" + - "minecraft:lava" + - "minecraft:bedrock" + - "minecraft:ice" + layers: + - materials: { "minecraft:air": 1 } + y: 255 + - materials: {"minecraft:water": 1} + y: 48 + - materials: { "minecraft:lava": 1 } + y: 7 + - materials: {"minecraft:obsidian": 19, "minecraft:magma_block": 1} + y: 8 + outer: + replace-blacklist: false + replace: + - "minecraft:stone" + layers: + - materials: { "minecraft:stone": 21, "minecraft:spruce_wood": 1, "minecraft:dark_oak_wood": 1, "minecraft:oak_leaves[persistent=true]": 2 } + y: 255 + - materials: { "minecraft:stone": 23, "minecraft:spruce_wood": 1, "minecraft:dark_oak_wood": 1 } + y: 48 + - materials: { "minecraft:stone": 1} + y: 18 + top: + replace-blacklist: false + replace: + - "minecraft:stone" + layers: + - materials: { "minecraft:stone": 16, "minecraft:spruce_wood": 1, "minecraft:dark_oak_wood": 1, "minecraft:oak_leaves[persistent=true]": 2 } + y: 255 + - materials: { "minecraft:stone": 18, "minecraft:spruce_wood": 1, "minecraft:dark_oak_wood": 1 } + y: 48 + - materials: { "minecraft:stone": 1 } + y: 18 + bottom: + replace-blacklist: false + replace: + - "minecraft:stone" + layers: + - materials: { "minecraft:stone": 4, "minecraft:spruce_wood": 1, "minecraft:dark_oak_wood": 1, "minecraft:oak_leaves[persistent=true]": 2 } + y: 255 + - materials: { "minecraft:stone": 6, "minecraft:spruce_wood": 1, "minecraft:dark_oak_wood": 1 } + y: 48 + - materials: { "minecraft:stone": 1 } + y: 18 + +shift: + "minecraft:grass_block": ["minecraft:dirt"] + "minecraft:podzol": ["minecraft:dirt"] + "minecraft:gravel": ["minecraft:dirt"] + "minecraft:sand": ["minecraft:dirt"] + "minecraft:coarse_dirt": ["minecraft:dirt"] +update: [] \ No newline at end of file diff --git a/src/main/resources/default-config/carving/cave_tundra.yml b/src/main/resources/default-config/carving/cave_tundra.yml new file mode 100644 index 000000000..b20063073 --- /dev/null +++ b/src/main/resources/default-config/carving/cave_tundra.yml @@ -0,0 +1,73 @@ +id: "CAVE_TUNDRA" +length: + min: 20 + max: 100 +start: + x: 1 + y: 0.25 + z: 1 + radius: + multiply: + x: 1 + y: 1 + z: 1 + min: 2 + max: 4 + height: + min: 4 + max: 72 +cut: + top: 0 + bottom: 0 +mutate: + x: 2 + y: 6 + z: 2 + radius: 0.125 +palette: + inner: + replace-blacklist: true + replace: + - "minecraft:air" + - "minecraft:water" + - "minecraft:lava" + - "minecraft:bedrock" + - "minecraft:ice" + layers: + - materials: { "minecraft:air": 1 } + y: 255 + - materials: { "minecraft:lava": 1 } + y: 8 + top: + replace-blacklist: false + replace: + - "minecraft:stone" + layers: + - materials: { "minecraft:stone": 1, "minecraft:cobblestone": 1,"minecraft:snow_block": 1} + y: 255 + outer: + replace-blacklist: false + replace: + - "minecraft:stone" + layers: + - materials: { "minecraft:packed_ice": 1,"minecraft:snow_block": 1, "minecraft:stone": 2} + y: 255 + - materials: { "minecraft:stone": 1 } + y: 18 + bottom: + replace-blacklist: false + replace: + - "minecraft:stone" + layers: + - materials: { "minecraft:packed_ice": 4} + y: 255 + - materials: { "minecraft:stone": 1 } + y: 18 + +shift: + "minecraft:grass_block": ["minecraft:dirt"] + "minecraft:podzol": ["minecraft:dirt"] + "minecraft:gravel": ["minecraft:dirt"] + "minecraft:sand": ["minecraft:dirt"] + "minecraft:coarse_dirt": ["minecraft:dirt"] +update: [] \ No newline at end of file diff --git a/src/main/resources/default-config/carving/cavern.yml b/src/main/resources/default-config/carving/cavern.yml new file mode 100644 index 000000000..71a349711 --- /dev/null +++ b/src/main/resources/default-config/carving/cavern.yml @@ -0,0 +1,66 @@ +id: CAVERN +length: + min: 1 + max: 1 +start: + x: 1 + y: 0.25 + z: 1 + radius: + multiply: + x: 2 + y: 1 + z: 2 + min: 3 + max: 5 + height: + min: 4 + max: 48 +cut: + top: 0 + bottom: 1 +mutate: + x: 2 + y: 6 + z: 2 + radius: 0.125 +palette: + inner: + replace-blacklist: true + replace: + - "minecraft:air" + - "minecraft:water" + - "minecraft:lava" + - "minecraft:bedrock" + - "minecraft:ice" + layers: + - materials: {"minecraft:air": 1} + y: 255 + - materials: {"minecraft:lava": 1} + y: 8 + outer: + replace-blacklist: false + replace: [] + layers: + - materials: { "minecraft:stone": 1 } + y: 255 + top: + replace-blacklist: false + replace: [ ] + layers: + - materials: { "minecraft:stone": 1 } + y: 255 + bottom: + replace-blacklist: false + replace: [ ] + layers: + - materials: { "minecraft:stone": 1 } + y: 255 +shift: + "minecraft:grass_block": ["minecraft:dirt"] + "minecraft:podzol": ["minecraft:dirt"] + "minecraft:gravel": ["minecraft:dirt"] + "minecraft:sand": ["minecraft:dirt"] + "minecraft:coarse_dirt": ["minecraft:dirt"] + +update: [] \ No newline at end of file diff --git a/src/main/resources/default-config/carving/ravine.yml b/src/main/resources/default-config/carving/ravine.yml new file mode 100644 index 000000000..03764c61f --- /dev/null +++ b/src/main/resources/default-config/carving/ravine.yml @@ -0,0 +1,66 @@ +id: RAVINE +length: + min: 30 + max: 60 +start: + x: 1 + y: 0.0 + z: 1 + radius: + multiply: + x: 1 + y: 4 + z: 1 + min: 3 + max: 4 + height: + min: 12 + max: 56 +cut: + top: 1 + bottom: 2 +mutate: + x: 1 + y: 4 + z: 1 + radius: 0.125 +palette: + inner: + replace-blacklist: true + replace: + - "minecraft:air" + - "minecraft:water" + - "minecraft:lava" + - "minecraft:bedrock" + - "minecraft:ice" + layers: + - materials: {"minecraft:air": 1} + y: 255 + - materials: {"minecraft:lava": 1} + y: 8 + outer: + replace-blacklist: false + replace: [] + layers: + - materials: { "minecraft:stone": 1 } + y: 255 + top: + replace-blacklist: false + replace: [ ] + layers: + - materials: { "minecraft:stone": 1 } + y: 255 + bottom: + replace-blacklist: false + replace: [ ] + layers: + - materials: { "minecraft:stone": 1 } + y: 255 +shift: + "minecraft:grass_block": ["minecraft:dirt"] + "minecraft:podzol": ["minecraft:dirt"] + "minecraft:gravel": ["minecraft:dirt"] + "minecraft:sand": ["minecraft:dirt"] + "minecraft:coarse_dirt": ["minecraft:dirt"] + +update: [] \ No newline at end of file diff --git a/src/main/resources/default-config/flora/button.yml b/src/main/resources/default-config/flora/button.yml new file mode 100644 index 000000000..ee0b0cc0d --- /dev/null +++ b/src/main/resources/default-config/flora/button.yml @@ -0,0 +1,16 @@ +layers: + - materials: + - "minecraft:stone_button[facing=east,face=floor]": 1 + - "minecraft:stone_button[facing=south,face=floor]": 1 + layers: 1 +id: SMALL_ROCK +name: "Stone button \"rock\"" +spawnable: + - "minecraft:stone" + - "minecraft:sand" + - "minecraft:red_sand" + - "minecraft:gravel" + - "minecraft:dirt" + - "minecraft:coarse_dirt" +replaceable: + - "minecraft:air" \ No newline at end of file diff --git a/src/main/resources/default-config/flora/caves/stalactite.yml b/src/main/resources/default-config/flora/caves/stalactite.yml new file mode 100644 index 000000000..efe956c9b --- /dev/null +++ b/src/main/resources/default-config/flora/caves/stalactite.yml @@ -0,0 +1,17 @@ +layers: + - materials: + - "minecraft:cobblestone_wall": 1 + layers: 1 + - materials: + - "minecraft:iron_bars": 1 + - "minecraft:cobblestone_wall": 1 + layers: 1 + - materials: + - "minecraft:iron_bars": 1 + layers: 1 +id: STALACTITE +spawnable: + - "minecraft:stone" +replaceable: + - "minecraft:air" +ceiling: true \ No newline at end of file diff --git a/src/main/resources/default-config/flora/caves/stalagmite.yml b/src/main/resources/default-config/flora/caves/stalagmite.yml new file mode 100644 index 000000000..ee23a53e0 --- /dev/null +++ b/src/main/resources/default-config/flora/caves/stalagmite.yml @@ -0,0 +1,18 @@ +layers: + - materials: + - "minecraft:iron_bars": 1 + layers: 1 + - materials: + - "minecraft:iron_bars": 1 + - "minecraft:cobblestone_wall": 1 + layers: 1 + - materials: + - "minecraft:cobblestone_wall": 1 + layers: 1 + +id: STALAGMITE +spawnable: + - "minecraft:stone" +replaceable: + - "minecraft:air" +ceiling: false \ No newline at end of file diff --git a/src/main/resources/default-config/flora/kelp/kelp_mid.yml b/src/main/resources/default-config/flora/kelp/kelp_mid.yml new file mode 100644 index 000000000..9b3588e9e --- /dev/null +++ b/src/main/resources/default-config/flora/kelp/kelp_mid.yml @@ -0,0 +1,18 @@ +layers: + - materials: + - "minecraft:kelp": 1 + layers: 1 + - materials: + - "minecraft:kelp_plant": 1 + layers: 6 + +id: KELP_MEDIUM +name: "Medium Kelp" +spawnable: + - "minecraft:sand" + - "minecraft:stone" + - "minecraft:red_sand" + - "minecraft:gravel" + - "minecraft:dirt" +replaceable: + - "minecraft:water" \ No newline at end of file diff --git a/src/main/resources/default-config/flora/kelp/kelp_short.yml b/src/main/resources/default-config/flora/kelp/kelp_short.yml new file mode 100644 index 000000000..75e6c2b5e --- /dev/null +++ b/src/main/resources/default-config/flora/kelp/kelp_short.yml @@ -0,0 +1,18 @@ +layers: + - materials: + - "minecraft:kelp": 1 + layers: 1 + - materials: + - "minecraft:kelp_plant": 1 + layers: 3 + +id: KELP_SHORT +name: "Short Kelp" +spawnable: + - "minecraft:sand" + - "minecraft:stone" + - "minecraft:red_sand" + - "minecraft:gravel" + - "minecraft:dirt" +replaceable: + - "minecraft:water" \ No newline at end of file diff --git a/src/main/resources/default-config/flora/kelp/kelp_tall.yml b/src/main/resources/default-config/flora/kelp/kelp_tall.yml new file mode 100644 index 000000000..6463b502a --- /dev/null +++ b/src/main/resources/default-config/flora/kelp/kelp_tall.yml @@ -0,0 +1,18 @@ +layers: + - materials: + - "minecraft:kelp": 1 + layers: 1 + - materials: + - "minecraft:kelp_plant": 1 + layers: 9 + +id: KELP_TALL +name: "Tall Kelp" +spawnable: + - "minecraft:sand" + - "minecraft:stone" + - "minecraft:red_sand" + - "minecraft:gravel" + - "minecraft:dirt" +replaceable: + - "minecraft:water" \ No newline at end of file diff --git a/src/main/resources/default-config/flora/leaves.yml b/src/main/resources/default-config/flora/leaves.yml new file mode 100644 index 000000000..c15cf7f15 --- /dev/null +++ b/src/main/resources/default-config/flora/leaves.yml @@ -0,0 +1,16 @@ +layers: + - materials: + - "minecraft:oak_leaves[persistent=true]": 1 + layers: 1 +id: LEAVES +name: "Stone button \"rock\"" +spawnable: + - "minecraft:stone" + - "minecraft:sand" + - "minecraft:red_sand" + - "minecraft:gravel" + - "minecraft:dirt" + - "minecraft:coarse_dirt" + - "minecraft:grass_block" +replaceable: + - "minecraft:air" \ No newline at end of file diff --git a/src/main/resources/default-config/flora/root.yml b/src/main/resources/default-config/flora/root.yml new file mode 100644 index 000000000..83c7cd5df --- /dev/null +++ b/src/main/resources/default-config/flora/root.yml @@ -0,0 +1,24 @@ +layers: + - materials: + - "minecraft:spruce_fence": 1 + - "minecraft:air": 2 + layers: 1 + - materials: + - "minecraft:spruce_fence": 1 + layers: 1 + - materials: + - "minecraft:spruce_fence": 1 + - "minecraft:oak_log": 2 + layers: 1 + - materials: + - "minecraft:oak_log": 1 + layers: 1 + +id: ROOT +name: "Swamp Root" +spawnable: + - "minecraft:grass_block" + - "minecraft:coarse_dirt" + - "minecraft:dirt" +replaceable: + - "minecraft:air" \ No newline at end of file diff --git a/src/main/resources/default-config/flora/seagrass.yml b/src/main/resources/default-config/flora/seagrass.yml new file mode 100644 index 000000000..e36a17abb --- /dev/null +++ b/src/main/resources/default-config/flora/seagrass.yml @@ -0,0 +1,14 @@ +layers: + - materials: + - "minecraft:seagrass": 1 + layers: 1 +id: SEAGRASS +name: "Short Sea Grass" +spawnable: + - "minecraft:sand" + - "minecraft:stone" + - "minecraft:red_sand" + - "minecraft:gravel" + - "minecraft:dirt" +replaceable: + - "minecraft:water" \ No newline at end of file diff --git a/src/main/resources/default-config/flora/tall_seagrass.yml b/src/main/resources/default-config/flora/tall_seagrass.yml new file mode 100644 index 000000000..588f7368d --- /dev/null +++ b/src/main/resources/default-config/flora/tall_seagrass.yml @@ -0,0 +1,17 @@ +layers: + - materials: + - "minecraft:tall_seagrass[half=upper]": 1 + layers: 1 + - materials: + - "minecraft:tall_seagrass[half=lower]": 1 + layers: 1 +id: TALL_SEAGRASS +name: "Tall Sea Grass" +spawnable: + - "minecraft:sand" + - "minecraft:stone" + - "minecraft:red_sand" + - "minecraft:gravel" + - "minecraft:dirt" +replaceable: + - "minecraft:water" \ No newline at end of file diff --git a/src/main/resources/default-config/grids/beach.yml b/src/main/resources/default-config/grids/beach.yml new file mode 100644 index 000000000..910d0022b --- /dev/null +++ b/src/main/resources/default-config/grids/beach.yml @@ -0,0 +1,13 @@ +grid: + - ["FROZEN_BEACH", "FROZEN_BEACH", "COLD_BEACH", "COLD_BEACH", "BEACH", "BEACH", "BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH"] + - ["FROZEN_BEACH", "FROZEN_BEACH", "COLD_BEACH", "COLD_BEACH", "BEACH", "BEACH", "BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH"] + - ["FROZEN_BEACH", "FROZEN_BEACH", "COLD_BEACH", "COLD_BEACH", "BEACH", "BEACH", "BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH"] + - ["FROZEN_BEACH", "FROZEN_BEACH", "COLD_BEACH", "COLD_BEACH", "BEACH", "BEACH", "BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH"] + - ["FROZEN_BEACH", "FROZEN_BEACH", "COLD_BEACH", "COLD_BEACH", "BEACH", "BEACH", "BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH"] + - ["FROZEN_BEACH", "FROZEN_BEACH", "COLD_BEACH", "COLD_BEACH", "BEACH", "BEACH", "BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH"] + - ["FROZEN_BEACH", "FROZEN_BEACH", "COLD_BEACH", "COLD_BEACH", "BEACH", "BEACH", "BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH"] + - ["FROZEN_BEACH", "FROZEN_BEACH", "COLD_BEACH", "COLD_BEACH", "BEACH", "SWAMP", "BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH"] + - ["FROZEN_BEACH", "FROZEN_BEACH", "COLD_BEACH", "COLD_BEACH", "BEACH", "SWAMP", "SWAMP", "SWAMP", "WARM_BEACH", "WARM_BEACH", "WARM_BEACH"] + - ["FROZEN_BEACH", "FROZEN_BEACH", "COLD_BEACH", "COLD_BEACH", "BEACH", "SWAMP", "SWAMP", "SWAMP", "SWAMP", "WARM_BEACH", "WARM_BEACH"] + - ["FROZEN_BEACH", "FROZEN_BEACH", "COLD_BEACH", "COLD_BEACH", "BEACH", "SWAMP", "SWAMP", "SWAMP", "SWAMP", "WARM_BEACH", "WARM_BEACH"] +id: BEACH \ No newline at end of file diff --git a/src/main/resources/default-config/grids/land.yml b/src/main/resources/default-config/grids/land.yml new file mode 100644 index 000000000..44913f6a4 --- /dev/null +++ b/src/main/resources/default-config/grids/land.yml @@ -0,0 +1,13 @@ +grid: + - ["TUNDRA", "TUNDRA", "TAIGA", "PLAINS", "PLAINS", "SAVANNA", "SAVANNA", "DESERT", "DESERT", "MESA", "MESA"] + - ["TUNDRA", "TUNDRA", "TAIGA", "PLAINS", "PLAINS", "SAVANNA", "SAVANNA", "DESERT", "DESERT", "MESA", "MESA"] + - ["TUNDRA", "TUNDRA", "TAIGA", "PLAINS", "PLAINS", "SAVANNA", "SAVANNA", "DESERT", "DESERT", "MESA", "MESA"] + - ["TUNDRA", "TUNDRA", "TAIGA", "PLAINS", "PLAINS", "SAVANNA", "SAVANNA", "DESERT", "DESERT", "DESERT", "DESERT"] + - ["TUNDRA", "TUNDRA", "TAIGA", "PLAINS", "PLAINS", "SAVANNA", "SAVANNA", "DESERT", "DESERT", "DESERT", "DESERT"] + - ["SNOWY_TAIGA", "SNOWY_TAIGA", "TAIGA", "PLAINS", "PLAINS", "PLAINS", "PLAINS", "SAVANNA", "SAVANNA", "SAVANNA", "SAVANNA"] + - ["SNOWY_TAIGA", "SNOWY_TAIGA", "TAIGA", "PLAINS", "PLAINS", "PLAINS", "PLAINS", "PLAINS", "PLAINS", "PLAINS", "PLAINS"] + - ["SNOWY_TAIGA", "SNOWY_TAIGA", "TAIGA", "DARK_FOREST", "DARK_FOREST", "FOREST", "FOREST", "JUNGLE", "JUNGLE", "JUNGLE", "JUNGLE"] + - ["SNOWY_TAIGA", "SNOWY_TAIGA", "TAIGA", "DARK_FOREST", "DARK_FOREST", "FOREST", "FOREST", "FOREST", "JUNGLE", "JUNGLE", "JUNGLE"] + - ["SNOWY_TAIGA", "SNOWY_TAIGA", "TAIGA", "DARK_FOREST", "DARK_FOREST", "FOREST", "FOREST", "JUNGLE", "JUNGLE", "JUNGLE", "JUNGLE"] + - ["SNOWY_TAIGA", "SNOWY_TAIGA", "TAIGA", "DARK_FOREST", "DARK_FOREST", "FOREST", "FOREST", "JUNGLE", "JUNGLE", "JUNGLE", "JUNGLE"] +id: LAND \ No newline at end of file diff --git a/src/main/resources/default-config/grids/mountain.yml b/src/main/resources/default-config/grids/mountain.yml new file mode 100644 index 000000000..f817bad3f --- /dev/null +++ b/src/main/resources/default-config/grids/mountain.yml @@ -0,0 +1,13 @@ +grid: + - ["MOUNTAINS_STONE", "MOUNTAINS_STONE", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS"] + - ["MOUNTAINS_STONE", "MOUNTAINS_STONE", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS"] + - ["MOUNTAINS_STONE", "MOUNTAINS_STONE", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS"] + - ["MOUNTAINS_STONE", "MOUNTAINS_STONE", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS"] + - ["MOUNTAINS_STONE", "MOUNTAINS_STONE", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS"] + - ["MOUNTAINS_STONE", "MOUNTAINS_STONE", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS", "ARID_MOUNTAINS"] + - ["MOUNTAINS_STONE", "MOUNTAINS_STONE", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0"] + - ["MOUNTAINS_STONE", "MOUNTAINS_STONE", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1"] + - ["MOUNTAINS_STONE", "MOUNTAINS_STONE", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_JUNGLE", "MOUNTAINS_JUNGLE", "MOUNTAINS_JUNGLE"] + - ["MOUNTAINS_STONE", "MOUNTAINS_STONE", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_JUNGLE", "MOUNTAINS_JUNGLE", "MOUNTAINS_JUNGLE", "MOUNTAINS_JUNGLE"] + - ["MOUNTAINS_STONE", "MOUNTAINS_STONE", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_PRETTY", "MOUNTAINS_JUNGLE", "MOUNTAINS_JUNGLE", "MOUNTAINS_JUNGLE", "MOUNTAINS_JUNGLE"] +id: MOUNTAIN \ No newline at end of file diff --git a/src/main/resources/default-config/grids/mountain_border_flat.yml b/src/main/resources/default-config/grids/mountain_border_flat.yml new file mode 100644 index 000000000..f4b6a6537 --- /dev/null +++ b/src/main/resources/default-config/grids/mountain_border_flat.yml @@ -0,0 +1,13 @@ +grid: + - ["MOUNTAINS_STONE_0", "MOUNTAINS_STONE_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0"] + - ["MOUNTAINS_STONE_0", "MOUNTAINS_STONE_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0"] + - ["MOUNTAINS_STONE_0", "MOUNTAINS_STONE_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0"] + - ["MOUNTAINS_STONE_0", "MOUNTAINS_STONE_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0"] + - ["MOUNTAINS_STONE_0", "MOUNTAINS_STONE_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0"] + - ["MOUNTAINS_STONE_0", "MOUNTAINS_STONE_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0", "ARID_MOUNTAINS_0"] + - ["MOUNTAINS_STONE_0", "MOUNTAINS_STONE_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0"] + - ["MOUNTAINS_STONE_0", "MOUNTAINS_STONE_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_JUNGLE_0", "MOUNTAINS_JUNGLE_0", "MOUNTAINS_JUNGLE_0", "MOUNTAINS_JUNGLE_0"] + - ["MOUNTAINS_STONE_0", "MOUNTAINS_STONE_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_JUNGLE_0", "MOUNTAINS_JUNGLE_0", "MOUNTAINS_JUNGLE_0"] + - ["MOUNTAINS_STONE_0", "MOUNTAINS_STONE_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_JUNGLE_0", "MOUNTAINS_JUNGLE_0", "MOUNTAINS_JUNGLE_0", "MOUNTAINS_JUNGLE_0"] + - ["MOUNTAINS_STONE_0", "MOUNTAINS_STONE_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_JUNGLE_0", "MOUNTAINS_JUNGLE_0", "MOUNTAINS_JUNGLE_0", "MOUNTAINS_JUNGLE_0"] +id: MOUNTAIN_0 \ No newline at end of file diff --git a/src/main/resources/default-config/grids/mountain_border_mid.yml b/src/main/resources/default-config/grids/mountain_border_mid.yml new file mode 100644 index 000000000..ab0522205 --- /dev/null +++ b/src/main/resources/default-config/grids/mountain_border_mid.yml @@ -0,0 +1,13 @@ +grid: + - ["MOUNTAINS_STONE_1", "MOUNTAINS_STONE_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1"] + - ["MOUNTAINS_STONE_1", "MOUNTAINS_STONE_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1"] + - ["MOUNTAINS_STONE_1", "MOUNTAINS_STONE_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1"] + - ["MOUNTAINS_STONE_1", "MOUNTAINS_STONE_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1"] + - ["MOUNTAINS_STONE_1", "MOUNTAINS_STONE_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1"] + - ["MOUNTAINS_STONE_1", "MOUNTAINS_STONE_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1", "ARID_MOUNTAINS_1"] + - ["MOUNTAINS_STONE_1", "MOUNTAINS_STONE_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_0"] + - ["MOUNTAINS_STONE_1", "MOUNTAINS_STONE_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1"] + - ["MOUNTAINS_STONE_1", "MOUNTAINS_STONE_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1"] + - ["MOUNTAINS_STONE_1", "MOUNTAINS_STONE_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1"] + - ["MOUNTAINS_STONE_1", "MOUNTAINS_STONE_1", "MOUNTAINS_PRETTY_0", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_PRETTY_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1", "MOUNTAINS_JUNGLE_1"] +id: MOUNTAIN_1 \ No newline at end of file diff --git a/src/main/resources/default-config/grids/ocean.yml b/src/main/resources/default-config/grids/ocean.yml new file mode 100644 index 000000000..92c7bfc0d --- /dev/null +++ b/src/main/resources/default-config/grids/ocean.yml @@ -0,0 +1,13 @@ +grid: + - ["FROZEN_OCEAN", "FROZEN_OCEAN", "COLD_OCEAN", "COLD_OCEAN", "OCEAN", "OCEAN", "OCEAN", "LUKEWARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN"] + - ["FROZEN_OCEAN", "FROZEN_OCEAN", "COLD_OCEAN", "COLD_OCEAN", "OCEAN", "OCEAN", "OCEAN", "LUKEWARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN"] + - ["FROZEN_OCEAN", "FROZEN_OCEAN", "COLD_OCEAN", "COLD_OCEAN", "OCEAN", "OCEAN", "OCEAN", "LUKEWARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN"] + - ["FROZEN_OCEAN", "FROZEN_OCEAN", "COLD_OCEAN", "COLD_OCEAN", "OCEAN", "OCEAN", "OCEAN", "LUKEWARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN"] + - ["FROZEN_OCEAN", "FROZEN_OCEAN", "COLD_OCEAN", "COLD_OCEAN", "OCEAN", "OCEAN", "OCEAN", "LUKEWARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN"] + - ["FROZEN_OCEAN", "FROZEN_OCEAN", "COLD_OCEAN", "COLD_OCEAN", "OCEAN", "OCEAN", "OCEAN", "LUKEWARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN"] + - ["FROZEN_OCEAN", "FROZEN_OCEAN", "COLD_OCEAN", "COLD_OCEAN", "OCEAN", "OCEAN", "OCEAN", "LUKEWARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN"] + - ["FROZEN_OCEAN", "FROZEN_OCEAN", "COLD_OCEAN", "COLD_OCEAN", "OCEAN", "SWAMP", "OCEAN", "LUKEWARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN"] + - ["FROZEN_OCEAN", "FROZEN_OCEAN", "COLD_OCEAN", "COLD_OCEAN", "OCEAN", "SWAMP", "SWAMP", "SWAMP", "LUKEWARM_OCEAN", "WARM_OCEAN", "WARM_OCEAN"] + - ["FROZEN_OCEAN", "FROZEN_OCEAN", "COLD_OCEAN", "COLD_OCEAN", "OCEAN", "SWAMP", "SWAMP", "SWAMP", "SWAMP", "LUKEWARM_OCEAN", "WARM_OCEAN"] + - ["FROZEN_OCEAN", "FROZEN_OCEAN", "COLD_OCEAN", "COLD_OCEAN", "OCEAN", "SWAMP", "SWAMP", "SWAMP", "SWAMP", "LUKEWARM_OCEAN", "WARM_OCEAN"] +id: OCEAN \ No newline at end of file diff --git a/src/main/resources/default-config/ores/deposits/andesite_pocket.yml b/src/main/resources/default-config/ores/deposits/andesite_pocket.yml new file mode 100644 index 000000000..d4971219e --- /dev/null +++ b/src/main/resources/default-config/ores/deposits/andesite_pocket.yml @@ -0,0 +1,9 @@ +material: "minecraft:andesite" +radius: + min: 3 + max: 4 +deform: 0.75 +deform-frequency: 0.1 +id: ANDESITE +replace: + - "minecraft:stone" \ No newline at end of file diff --git a/src/main/resources/default-config/ores/deposits/diorite_pocket.yml b/src/main/resources/default-config/ores/deposits/diorite_pocket.yml new file mode 100644 index 000000000..8ed8ff4ad --- /dev/null +++ b/src/main/resources/default-config/ores/deposits/diorite_pocket.yml @@ -0,0 +1,9 @@ +material: "minecraft:diorite" +radius: + min: 3 + max: 4 +deform: 0.75 +deform-frequency: 0.1 +id: DIORITE +replace: + - "minecraft:stone" \ No newline at end of file diff --git a/src/main/resources/default-config/ores/deposits/dirt_pocket.yml b/src/main/resources/default-config/ores/deposits/dirt_pocket.yml new file mode 100644 index 000000000..495eb9e2b --- /dev/null +++ b/src/main/resources/default-config/ores/deposits/dirt_pocket.yml @@ -0,0 +1,9 @@ +material: "minecraft:dirt" +radius: + min: 3 + max: 4 +deform: 0.75 +deform-frequency: 0.1 +id: DIRT +replace: + - "minecraft:stone" \ No newline at end of file diff --git a/src/main/resources/default-config/ores/deposits/granite_pocket.yml b/src/main/resources/default-config/ores/deposits/granite_pocket.yml new file mode 100644 index 000000000..4799b821e --- /dev/null +++ b/src/main/resources/default-config/ores/deposits/granite_pocket.yml @@ -0,0 +1,9 @@ +material: "minecraft:granite" +radius: + min: 3 + max: 4 +deform: 0.75 +deform-frequency: 0.1 +id: GRANITE +replace: + - "minecraft:stone" \ No newline at end of file diff --git a/src/main/resources/default-config/ores/deposits/gravel_pocket.yml b/src/main/resources/default-config/ores/deposits/gravel_pocket.yml new file mode 100644 index 000000000..5fa8391d2 --- /dev/null +++ b/src/main/resources/default-config/ores/deposits/gravel_pocket.yml @@ -0,0 +1,9 @@ +material: "minecraft:gravel" +radius: + min: 3 + max: 4 +deform: 0.75 +deform-frequency: 0.1 +id: GRAVEL +replace: + - "minecraft:stone" \ No newline at end of file diff --git a/src/main/resources/default-config/ores/minerals/coal.yml b/src/main/resources/default-config/ores/minerals/coal.yml new file mode 100644 index 000000000..b2ffc3016 --- /dev/null +++ b/src/main/resources/default-config/ores/minerals/coal.yml @@ -0,0 +1,9 @@ +material: "minecraft:coal_ore" +radius: + min: 1 + max: 2 +deform: 0.75 +deform-frequency: 0.2 +id: COAL_ORE +replace: + - "minecraft:stone" \ No newline at end of file diff --git a/src/main/resources/default-config/ores/minerals/diamond.yml b/src/main/resources/default-config/ores/minerals/diamond.yml new file mode 100644 index 000000000..c1d9af614 --- /dev/null +++ b/src/main/resources/default-config/ores/minerals/diamond.yml @@ -0,0 +1,9 @@ +material: "minecraft:diamond_ore" +radius: + min: 0 + max: 1 +deform: 0.75 +deform-frequency: 0.2 +id: DIAMOND_ORE +replace: + - "minecraft:stone" \ No newline at end of file diff --git a/src/main/resources/default-config/ores/minerals/gold.yml b/src/main/resources/default-config/ores/minerals/gold.yml new file mode 100644 index 000000000..1292a4cd0 --- /dev/null +++ b/src/main/resources/default-config/ores/minerals/gold.yml @@ -0,0 +1,9 @@ +material: "minecraft:gold_ore" +radius: + min: 1 + max: 1 +deform: 0.75 +deform-frequency: 0.2 +id: GOLD_ORE +replace: + - "minecraft:stone" \ No newline at end of file diff --git a/src/main/resources/default-config/ores/minerals/iron.yml b/src/main/resources/default-config/ores/minerals/iron.yml new file mode 100644 index 000000000..9b51c520b --- /dev/null +++ b/src/main/resources/default-config/ores/minerals/iron.yml @@ -0,0 +1,9 @@ +material: "minecraft:iron_ore" +radius: + min: 1 + max: 1 +deform: 0.75 +deform-frequency: 0.2 +id: IRON_ORE +replace: + - "minecraft:stone" \ No newline at end of file diff --git a/src/main/resources/default-config/ores/minerals/lapis.yml b/src/main/resources/default-config/ores/minerals/lapis.yml new file mode 100644 index 000000000..7ea0629b7 --- /dev/null +++ b/src/main/resources/default-config/ores/minerals/lapis.yml @@ -0,0 +1,9 @@ +material: "minecraft:lapis_ore" +radius: + min: 1 + max: 1 +deform: 0.75 +deform-frequency: 0.2 +id: LAPIS_ORE +replace: + - "minecraft:stone" \ No newline at end of file diff --git a/src/main/resources/default-config/ores/minerals/redstone.yml b/src/main/resources/default-config/ores/minerals/redstone.yml new file mode 100644 index 000000000..479906719 --- /dev/null +++ b/src/main/resources/default-config/ores/minerals/redstone.yml @@ -0,0 +1,9 @@ +material: "minecraft:redstone_ore" +radius: + min: 1 + max: 1 +deform: 0.75 +deform-frequency: 0.2 +id: REDSTONE_ORE +replace: + - "minecraft:stone" \ No newline at end of file diff --git a/src/main/resources/default-config/pack.yml b/src/main/resources/default-config/pack.yml new file mode 100644 index 000000000..6f27044a9 --- /dev/null +++ b/src/main/resources/default-config/pack.yml @@ -0,0 +1,64 @@ +id: DEFAULT +grids: + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - OCEAN + - BEACH + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - LAND + - MOUNTAIN_0 + - MOUNTAIN_1 + - MOUNTAIN + - MOUNTAIN + - MOUNTAIN + - MOUNTAIN + - MOUNTAIN + - MOUNTAIN + - MOUNTAIN + - MOUNTAIN + - MOUNTAIN + - MOUNTAIN + - MOUNTAIN +frequencies: + grid-x: 3072 + grid-z: 2048 + zone: 4096 +blend: + enable: true + frequency: 0.125 + amplitude: 10 +erode: + enable: true + frequency: 0.002 + threshold: 0.001 + octaves: 4 + grid: "BIOME:RIVER" diff --git a/src/main/resources/default-config/palettes/bedrock/bedrock.yml b/src/main/resources/default-config/palettes/bedrock/bedrock.yml new file mode 100644 index 000000000..da59735de --- /dev/null +++ b/src/main/resources/default-config/palettes/bedrock/bedrock.yml @@ -0,0 +1,6 @@ +layers: + - materials: + - "minecraft:bedrock": 1 + layers: 1 +id: BEDROCK +name: "Bedrock Palette" \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/bedrock/bedrock_half.yml b/src/main/resources/default-config/palettes/bedrock/bedrock_half.yml new file mode 100644 index 000000000..063977812 --- /dev/null +++ b/src/main/resources/default-config/palettes/bedrock/bedrock_half.yml @@ -0,0 +1,7 @@ +layers: + - materials: + - "minecraft:bedrock": 1 + - "minecraft:stone": 1 + layers: 1 +id: BEDROCK_HALF +name: "Bedrock Palette" \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/bedrock/bedrock_little.yml b/src/main/resources/default-config/palettes/bedrock/bedrock_little.yml new file mode 100644 index 000000000..b179a7618 --- /dev/null +++ b/src/main/resources/default-config/palettes/bedrock/bedrock_little.yml @@ -0,0 +1,7 @@ +layers: + - materials: + - "minecraft:bedrock": 1 + - "minecraft:stone": 2 + layers: 1 +id: BEDROCK_LITTLE +name: "Bedrock Palette" \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/bedrock/bedrock_most.yml b/src/main/resources/default-config/palettes/bedrock/bedrock_most.yml new file mode 100644 index 000000000..bcd3363f6 --- /dev/null +++ b/src/main/resources/default-config/palettes/bedrock/bedrock_most.yml @@ -0,0 +1,7 @@ +layers: + - materials: + - "minecraft:bedrock": 2 + - "minecraft:stone": 1 + layers: 1 +id: BEDROCK_MOST +name: "Bedrock Palette" \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/cold_ocean.yml b/src/main/resources/default-config/palettes/cold_ocean.yml new file mode 100644 index 000000000..4403ee26c --- /dev/null +++ b/src/main/resources/default-config/palettes/cold_ocean.yml @@ -0,0 +1,8 @@ +layers: + - materials: + - "minecraft:ice": 1 + layers: 1 + - materials: + - "minecraft:water": 1 + layers: 1 +id: COLD_OCEAN \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/desert/desert.yml b/src/main/resources/default-config/palettes/desert/desert.yml new file mode 100644 index 000000000..e72fdaf2d --- /dev/null +++ b/src/main/resources/default-config/palettes/desert/desert.yml @@ -0,0 +1,12 @@ +layers: + - materials: + - "minecraft:sand": 1 + layers: 3 + - materials: + - "minecraft:sandstone": 1 + layers: 4 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: DESERT +name: "Sandy Palette" diff --git a/src/main/resources/default-config/palettes/desert/red_desert.yml b/src/main/resources/default-config/palettes/desert/red_desert.yml new file mode 100644 index 000000000..ef0b669d4 --- /dev/null +++ b/src/main/resources/default-config/palettes/desert/red_desert.yml @@ -0,0 +1,12 @@ +layers: + - materials: + - "minecraft:red_sand": 1 + layers: 3 + - materials: + - "minecraft:red_sandstone": 1 + layers: 4 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: RED_DESERT +name: "Sandy Palette" diff --git a/src/main/resources/default-config/palettes/grassy.yml b/src/main/resources/default-config/palettes/grassy.yml new file mode 100644 index 000000000..31e10713c --- /dev/null +++ b/src/main/resources/default-config/palettes/grassy.yml @@ -0,0 +1,11 @@ +layers: + - materials: + - "minecraft:grass_block": 1 + layers: 1 + - materials: + - "minecraft:dirt": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: GRASSY \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/gravelly.yml b/src/main/resources/default-config/palettes/gravelly.yml new file mode 100644 index 000000000..e5ffff8ce --- /dev/null +++ b/src/main/resources/default-config/palettes/gravelly.yml @@ -0,0 +1,12 @@ +layers: + - materials: + - "minecraft:gravel": 1 + layers: 1 + - materials: + - "minecraft:dirt": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: GRAVEL +name: "Sandy Palette" diff --git a/src/main/resources/default-config/palettes/mountains/arid.yml b/src/main/resources/default-config/palettes/mountains/arid.yml new file mode 100644 index 000000000..107f54796 --- /dev/null +++ b/src/main/resources/default-config/palettes/mountains/arid.yml @@ -0,0 +1,29 @@ +layers: + - materials: + - "minecraft:grass_block": 1 + - "minecraft:grass_block": 1 + - "minecraft:grass_path": 1 + - "minecraft:grass_block": 1 + - "minecraft:grass_block": 1 + - "minecraft:grass_block": 1 + - "minecraft:grass_block": 1 + - "minecraft:grass_block": 1 + - "minecraft:grass_path": 1 + - "minecraft:grass_block": 1 + - "minecraft:grass_block": 1 + - "minecraft:grass_block": 1 + - "minecraft:grass_block": 1 + - "minecraft:grass_block": 1 + - "minecraft:white_terracotta": 2 + layers: 1 + - materials: + - "minecraft:dirt": 7 + - "minecraft:white_terracotta": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: ARID +simplex: true +frequency: 0.04 +seed: 3 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/mountains/grass.yml b/src/main/resources/default-config/palettes/mountains/grass.yml new file mode 100644 index 000000000..79faa4bbf --- /dev/null +++ b/src/main/resources/default-config/palettes/mountains/grass.yml @@ -0,0 +1,18 @@ +layers: + - materials: + - "minecraft:cyan_terracotta": 1 + - "minecraft:grass_block": 2 + - "minecraft:snow_block": 3 + layers: 1 + - materials: + - "minecraft:cyan_terracotta": 1 + - "minecraft:dirt": 2 + - "minecraft:snow_block": 3 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: MOUNTAIN_GRASS +simplex: true +frequency: 0.05 +seed: 3 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/mountains/jungle.yml b/src/main/resources/default-config/palettes/mountains/jungle.yml new file mode 100644 index 000000000..430729bc0 --- /dev/null +++ b/src/main/resources/default-config/palettes/mountains/jungle.yml @@ -0,0 +1,20 @@ +layers: + - materials: + - "minecraft:brown_terracotta": 2 + - "minecraft:grass_block": 10 + - "minecraft:cobblestone": 1 + - "minecraft:stone": 1 + layers: 1 + - materials: + - "minecraft:brown_terracotta": 2 + - "minecraft:dirt": 10 + - "minecraft:cobblestone": 1 + - "minecraft:stone": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: MOUNTAIN_JUNGLE +simplex: true +frequency: 0.04 +seed: 3 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/mountains/pretty_mountains.yml b/src/main/resources/default-config/palettes/mountains/pretty_mountains.yml new file mode 100644 index 000000000..eff946ee7 --- /dev/null +++ b/src/main/resources/default-config/palettes/mountains/pretty_mountains.yml @@ -0,0 +1,25 @@ +layers: + - materials: + - "minecraft:cyan_terracotta": 2 + - "minecraft:clay": 2 + - "minecraft:light_gray_terracotta": 2 + - "minecraft:grass_block": 10 + - "minecraft:cobblestone": 1 + - "minecraft:stone": 1 + layers: 1 + - materials: + - "minecraft:cyan_terracotta": 2 + - "minecraft:clay": 2 + - "minecraft:light_gray_terracotta": 2 + - "minecraft:dirt": 10 + - "minecraft:cobblestone": 1 + - "minecraft:stone": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: MOUNTAIN_PRETTY +name: "Sandy Palette" +simplex: true +frequency: 0.02 +seed: 3 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/mountains/stone.yml b/src/main/resources/default-config/palettes/mountains/stone.yml new file mode 100644 index 000000000..7e4bdccca --- /dev/null +++ b/src/main/resources/default-config/palettes/mountains/stone.yml @@ -0,0 +1,14 @@ +layers: + - materials: + - "minecraft:cyan_terracotta": 1 + - "minecraft:stone": 2 + - "minecraft:snow_block": 3 + - "minecraft:cobblestone": 1 + layers: 3 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: MOUNTAIN_STONE +simplex: true +frequency: 0.05 +seed: 3 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/mountains/stone_grass.yml b/src/main/resources/default-config/palettes/mountains/stone_grass.yml new file mode 100644 index 000000000..daa990875 --- /dev/null +++ b/src/main/resources/default-config/palettes/mountains/stone_grass.yml @@ -0,0 +1,22 @@ +layers: + - materials: + - "minecraft:cyan_terracotta": 1 + - "minecraft:stone": 2 + - "minecraft:grass_block": 2 + - "minecraft:snow_block": 4 + - "minecraft:cobblestone": 1 + layers: 1 + - materials: + - "minecraft:cyan_terracotta": 1 + - "minecraft:stone": 2 + - "minecraft:dirt": 2 + - "minecraft:snow_block": 4 + - "minecraft:cobblestone": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: MOUNTAIN_STONE_GRASS +simplex: true +frequency: 0.05 +seed: 3 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/oceanfloor.yml b/src/main/resources/default-config/palettes/oceanfloor.yml new file mode 100644 index 000000000..19e82855c --- /dev/null +++ b/src/main/resources/default-config/palettes/oceanfloor.yml @@ -0,0 +1,14 @@ +layers: + - materials: + - "minecraft:sand": 1 + - "minecraft:gravel": 3 + layers: 3 + - materials: + - "minecraft:gravel": 2 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: OCEANFLOOR +name: "Ocean Floor Palette" + diff --git a/src/main/resources/default-config/palettes/river_bottom.yml b/src/main/resources/default-config/palettes/river_bottom.yml new file mode 100644 index 000000000..2e42a919a --- /dev/null +++ b/src/main/resources/default-config/palettes/river_bottom.yml @@ -0,0 +1,13 @@ +layers: + - materials: + - "minecraft:gravel": 1 + - "minecraft:dirt": 4 + - "minecraft:sand": 2 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: RIVER_BOTTOM +simplex: true +frequency: 0.05 +seed: 3 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/river_shore.yml b/src/main/resources/default-config/palettes/river_shore.yml new file mode 100644 index 000000000..f760c8d33 --- /dev/null +++ b/src/main/resources/default-config/palettes/river_shore.yml @@ -0,0 +1,17 @@ +layers: + - materials: + - "minecraft:gravel": 1 + - "minecraft:grass_block": 4 + - "minecraft:sand": 2 + layers: 1 + - materials: + - "minecraft:dirt": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: RIVER_SHORE +name: "Sandy Palette" +simplex: true +frequency: 0.05 +seed: 3 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/sand_all.yml b/src/main/resources/default-config/palettes/sand_all.yml new file mode 100644 index 000000000..6a001dd31 --- /dev/null +++ b/src/main/resources/default-config/palettes/sand_all.yml @@ -0,0 +1,9 @@ +layers: + - materials: + - "minecraft:sand": 1 + layers: 3 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: SAND_ALL +name: "Sandy Palette" diff --git a/src/main/resources/default-config/palettes/sandy.yml b/src/main/resources/default-config/palettes/sandy.yml new file mode 100644 index 000000000..9748ba2a0 --- /dev/null +++ b/src/main/resources/default-config/palettes/sandy.yml @@ -0,0 +1,13 @@ +layers: + - materials: + - "minecraft:sand": 4 + - "minecraft:gravel": 1 + layers: 1 + - materials: + - "minecraft:dirt": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: SANDY +name: "Sandy Palette" diff --git a/src/main/resources/default-config/palettes/slabs/mountainslabs.yml b/src/main/resources/default-config/palettes/slabs/mountainslabs.yml new file mode 100644 index 000000000..2870d97e4 --- /dev/null +++ b/src/main/resources/default-config/palettes/slabs/mountainslabs.yml @@ -0,0 +1,10 @@ +layers: + - materials: + - "minecraft:cobblestone_slab": 1 + - "minecraft:stone_slab": 3 + layers: 1 +id: MOUNTAIN_SLABS +name: "Mountain Slabs palette" +simplex: true +frequency: 0.1 +seed: 4 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/slabs/mountainstairs.yml b/src/main/resources/default-config/palettes/slabs/mountainstairs.yml new file mode 100644 index 000000000..f959ff775 --- /dev/null +++ b/src/main/resources/default-config/palettes/slabs/mountainstairs.yml @@ -0,0 +1,10 @@ +layers: + - materials: + - "minecraft:cobblestone_stairs": 1 + - "minecraft:stone_stairs": 3 + layers: 1 +id: MOUNTAIN_STAIRS +name: "Mountain Stairs palette" +simplex: true +frequency: 0.1 +seed: 4 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/slabs/snow.yml b/src/main/resources/default-config/palettes/slabs/snow.yml new file mode 100644 index 000000000..20fef3999 --- /dev/null +++ b/src/main/resources/default-config/palettes/slabs/snow.yml @@ -0,0 +1,8 @@ +layers: + - materials: + - "minecraft:snow[layers=3]": 1 + - "minecraft:snow[layers=4]": 1 + - "minecraft:snow[layers=5]": 1 + layers: 1 +id: SNOW_LAYERS +name: "Mountain Snow palette" \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/snow.yml b/src/main/resources/default-config/palettes/snow.yml new file mode 100644 index 000000000..a3f85ff3f --- /dev/null +++ b/src/main/resources/default-config/palettes/snow.yml @@ -0,0 +1,12 @@ +layers: + - materials: + - "minecraft:snow_block": 2 + layers: 3 + - materials: + - "minecraft:stone": 1 + layers: 4 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: SNOW +name: "Snowy Palette" \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/swamp.yml b/src/main/resources/default-config/palettes/swamp.yml new file mode 100644 index 000000000..d7dfff67f --- /dev/null +++ b/src/main/resources/default-config/palettes/swamp.yml @@ -0,0 +1,13 @@ +layers: + - materials: + - "minecraft:grass_block": 4 + - "minecraft:coarse_dirt": 1 + layers: 1 + - materials: + - "minecraft:dirt": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: SWAMP +name: "Grassy Palette" \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/swamp_border.yml b/src/main/resources/default-config/palettes/swamp_border.yml new file mode 100644 index 000000000..8c9d57341 --- /dev/null +++ b/src/main/resources/default-config/palettes/swamp_border.yml @@ -0,0 +1,27 @@ +layers: + - materials: + - "minecraft:grass_block": 1 + - "minecraft:coarse_dirt": 1 + - "minecraft:grass_block": 1 + - "minecraft:coarse_dirt": 1 + - "minecraft:grass_block": 1 + - "minecraft:coarse_dirt": 1 + - "minecraft:grass_block": 1 + - "minecraft:coarse_dirt": 1 + - "minecraft:grass_block": 1 + - "minecraft:coarse_dirt": 1 + - "minecraft:grass_block": 1 + - "minecraft:coarse_dirt": 1 + - "minecraft:grass_block": 12 + layers: 1 + - materials: + - "minecraft:dirt": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: SWAMP_BORDER +name: "Grassy Palette" +simplex: true +frequency: 0.1 +seed: 3 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/swamp_bottom.yml b/src/main/resources/default-config/palettes/swamp_bottom.yml new file mode 100644 index 000000000..0ea10b005 --- /dev/null +++ b/src/main/resources/default-config/palettes/swamp_bottom.yml @@ -0,0 +1,14 @@ +layers: + - materials: + - "minecraft:dirt": 2 + - "minecraft:coarse_dirt": 1 + - "minecraft:gravel": 2 + layers: 1 + - materials: + - "minecraft:dirt": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: SWAMP_BOTTOM +name: "Grassy Palette" \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/taiga.yml b/src/main/resources/default-config/palettes/taiga.yml new file mode 100644 index 000000000..06bb5dd52 --- /dev/null +++ b/src/main/resources/default-config/palettes/taiga.yml @@ -0,0 +1,16 @@ +layers: + - materials: + - "minecraft:grass_block": 2 + - "minecraft:podzol": 1 + layers: 1 + - materials: + - "minecraft:dirt": 1 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: TAIGA +name: "Taiga Palette" +simplex: true +frequency: 0.03 +seed: 3 \ No newline at end of file diff --git a/src/main/resources/default-config/palettes/tundra.yml b/src/main/resources/default-config/palettes/tundra.yml new file mode 100644 index 000000000..544a667e2 --- /dev/null +++ b/src/main/resources/default-config/palettes/tundra.yml @@ -0,0 +1,22 @@ +layers: + - materials: + - "minecraft:gravel": 1 + - "minecraft:stone": 1 + - "minecraft:gravel": 1 + - "minecraft:gravel": 1 + - "minecraft:stone": 1 + - "minecraft:snow_block": 2 + - "minecraft:gravel": 1 + - "minecraft:snow_block": 2 + layers: 2 + - materials: + - "minecraft:stone": 1 + layers: 4 + - materials: + - "minecraft:stone": 1 + layers: 1 +id: TUNDRA +name: "Tundra Palette" +simplex: true +frequency: 0.04 +seed: 4 \ No newline at end of file diff --git a/src/main/resources/default-config/structures/data/jungle1.tstructure b/src/main/resources/default-config/structures/data/jungle1.tstructure new file mode 100644 index 0000000000000000000000000000000000000000..591c473897ed57705e34aeac2a3d0b075be22af9 GIT binary patch literal 842837 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π#VfjARy+H#axr|?*v!edg!mce7Pk;n2h9?R2sEKlRHJdMZl zG#<;-c&wRjcH7MqQ-IBk^0Y_f5W;54boX?Yr_6CLv0a|Vc6l1x1D=zO*Av6lDNHAIrZ3M^ z6K7gCdE^Rh3UmdIHuE&v%+qMInQmzFd$Tr+LxRhAvhk2Wn{^6pN)^`=d5*FuR5sp5 zvZaUA zrthfS|6bhU_fn{WsZU=8!&_x(u4x$l`-5GM;YV3KKgwcz*;o^JUaGib;Cb1&BA%~P z7`{$nc&XU%3t#=%8-D56jb_7JDsBwiE>&!P3@;m3#PCwZig;djX?L1-83aO$;CIvK zcs-S(Ob-?J$@$RB;>W9NBn1v9(mOA`X^a=b`F`wSRDgwMSX3 zJ<4Kj*|9#83Hhre&%h0|xH zal|PIQ-*by`l2xb{P2hgKsIh&)L*BNew{-4bqd`}75g9E%f@Yj?&}nympZ-ZEfsGT zqL(T*B)T7E(Y@@_&T#Lb8{Ow=bf2fueV#_!c^duZY4n??5vS?@^uV_wYCl-Y>S9(G z8xJF#D%I^yOxR2}O!%WCOeh;~7bdJzn6OS^!a9Ws>l6;GQ#eqnC<{y|dwLUED(-4b zC{^4zOeh;y#DP+a2b$BtW%l0eg9neE-j@u#nXY)@Z>ImIenF*B!_ zUUyD$vGMM~oFY|t)n=9Z1x!&EUuw6;6!q>AQ`9KSL^aAXU5&C#TB9semux&Nn7Zl| zQ&*j0(vmv;q-CkNF_^TZ1}3dhmZ?j&@QKLXuRraz5534WjocB&1n3`PIZkj13 zPcv2IY1Z9z@>B`-7U-@z_BOrt$16B5aN+Uz#Nkri4M4ihbVIuD9UXkjcdMy=q1?rV5HY(=}qb%x`jn|g50IBGr=Q^rJzSivu z0Qu%=laWpYOSa)eOH71B3A2C75#;wcL zP^Xv_q>6pQ)F2zLCsTt|u_9B0Y+R8^L8@4hNkR6QNum9#;;4dW8!Z)Y9Fu}napRa2 zMp-6>QI@GeHr`UiF155P-a7_I?0Fio=V^M&bo4~w{$m{bk0!r-^=fnT^ycM@PwyUm z!4KM9UcGqn(2vzo64P6@*wq}VkFt1sl*QY!aaUtqsbfD3+A#D_jxe-ryj2)ls@Q*c zS~jkTp{0ry@w9AQ5kpHAE8=O{xFUwGQ^>YXA=^5IX6qD!ty8GAPN7z*Gag+bY3p{C zj-*XT4?-TCQS7~&|L!-^o&KFQ5f4gK?Wz`c15_;=%`U54f5!5b?e+y;&(rw4nQl1x zr{%`y$#JP-wkM93joSoAOBE|( z>QNS7kFr>Ml*PQGEFPAPTX;Hxo%iKvj#=j+I8^M~cD;st^EA%P(>OCvoDI0Gi{*)@NE&d#3 z@#iRuKV{=B#hi5tXG(P~ge&tjhRf3!E>B~)JdNS~ZjfM}MuK@73Fc`en5U6o zo<@Rs8VNSj4GI3@2nou@eU1L=6#A2DD{Oi>c=zn->+46=Peb5J3w4Jg!ZRH=0phDu zC{L=W1C%$)B0kx88&O`JLU~ffZA5vp@p>XVsbWQBH_D zMtOM}<>hIV*GxB*_sdy%@i^g#uTCL5sp9BDd9ugcGwy#a0qI#PZW81tRoplfILabI z*?4VHpj2^fQJ`#G5d}&`SK#;ecaL~o6Ng&%Oi%LQUTYQ`7X!=2jf;Eh6xNlBtedB? zZl1=vc^d2HX{?*4v2LEmy3KUMy6+EJw@zW*I)!hgPVZYw6?Ye`D;w`F__j`A+B$`4 zrHWgJX-8RnD_eN)W;N?t{OmtKX60gY24{+gBt918b44J3VW1dEjc^coDj(ZE= zNv+yj*w7_++YuY)X>6FMv0}G8gb=m#FeKJSDvOn^EBeh z(}*iiBd$D+xSHvPuD(_l54w^n9DUKcNNbcuU9z!UQI}M4Z4sDkToF0dDXdecu#Z&q z{=~uCZ-aNG=|?4v1gK1;edW>B?kEHET3Rji1l zW#fuSTB=wPNz29+k+f8?BC3{+E28Q;g=p&(;*>h$w19%G`!D-f6aI8{d;8|;!D8oB0a z%3`}w7Td|jTZ-qTid%~9Mp@h^yXplfJn53V4#tyt8c*hFJejBQWHa6H8>J-kCD(-EV zZqnTsX>NMA_IbxKOItv$$}S#f76RMjU1FqHOfc!O@THBPPUZ z*{=A|WS&Nod78D!)Bk^Q_p&3|b!TV1L|sUU6e(Ur>N4@f@PuH)=!OIsDi~->fYs=k zTJ4sq1$MHSRV=AgRmx0~O%Hm|famtihW!d2dgg)WegjYZ7#g~r(~G^Sh8m{z%mp>ehgjk8^7OjkcrP)zHfPe*YtTUPG*H17E{?)fzC`84kN zH17E{?hVre_gFT}2En(k6 zyuO8XeGBFK7Rsen9(^2}?Q%Dl?y7;P=F_O=)2QatsOHnC=F_M)Ob=9hX;G~_hP>!E z+eNr^^_7HhX_c!*xODYIgzH<_mR7k=Y)ejh4goK+A9Lp=G-IY{$v8%Cj9U zXS-;bu3jx#_ARvRTR7RbaI$Y9WLo7>K*)6Up2Wtq%83X$+eOIPE<&cOA1OBWEmTaa z+&`!|+eN%|5Bkg=9kbTahM+H_^m}pef+tLOshPS=$Njah>Lv-5z{Ky ziHoycbWB%2Ms!T8TrEburd1wOyqxXgZ3u=zv_AB+cZE0cr)bI z&m~0MJRVeX9|hN97cLwA)iR-ar5N zl zz6JMv3-0?C(DyBfPwUnz?hyK7{PCw?e5R~k*BI~90H5@)cEGQFOltQYso76S@iQQk z_4$gXX|3)Hy!UC8_Gz^BX|x@t2iksn(N^yzob6jUn^q|o&dzpmHeLM~aW<`TwKzN5 z#o5^|+NP@?Dcbfev`wqrKbV`YUMJ?JwR&x0r%z*`Ph+4@V_?#U{t6eE%f`#Y0Cwr# z`a|pxw~Ziq{3+mi{3)QEDXXU-C=b&ElwX}fIj!30j{6oIr&aC~I8ImZ6F5#wJ=wkX+4nuZkOkN?cl82CO=7S1zw^$@|bPs8#sJz)7ed$63YzPJE6t@5bDa=LmVAg5JM zgynSgL|9I%oCwb8>WQ%2w*a|s0diX9qXXo0^`isiz6Ho>mFtAlbXTucIQ3~bO?rdB z%!ie{u#uU1ztikn_?njT^>Dwp%UtvOQix6AX!qC9e3U5z(qG?$^mO%U0_lAV%+o3_ zPe@N!uM^DEDknmEx_Tm*r&Ugb^mO$^NKdPr2<++ViICp6AiZxvdRpb9gYY0|vjl2ZOU+Fr4jzVY+|5dlU89>9f<5%RiBM@59r_C!gK@ zvv)uLbDCFgo__rF{_jpd{QN^c&z^pIdba%AZJ+JH%#0|nQ{fiIf$GgM8HN#h}L{^{X2GggJ)u)lw zr;*jCk=3V>b(kK=`t}~O&UTS?wu`K@UC5m6LT0-9q6Evd%8L>#)72AUGOcnVSf;Bd z!emjcPj^*WI)t%JVghl1Jis+lP0(VW@+`)`*)IOgc2O{0{YdezZ{c5B<^I9H*)9sEs~;o&^)3AC zTlkk&xo7Y%UH$0rFRgMS!lkPxB3)WXcp(5Av;9?fvC*fo(WkM|r?GLE9@zN3J#3uq zVq?1c=woAA;#oIer15V5tUDvhQyN0k)ej0h`xbbnRjw04XS)!Zu6~T*nU;Fn%wgWm z2fvwH{7KMj(`P^Ij^Pt1?+T>@PrN8v;D(;tPu6H z+0_dQ=Y1NNeHveV8ee@HUws-9eHsdV8o+!SzX)f8o+!SzX)p=_|l~ zcA5I&EtK&%uKu%7rZ}PnVt48mh^19<#6&2Y?Lt|)`Z0o7S_ejqM+9Qo{vkiF!N#F1 z8y`|e8p?bc%6uBid>YDp8p?bc%6uBid>YDp8p?bc%6uBie43;0(@^HqQ0CK6HcSry z`^rL5i3*IRt6_k#z6D@umFons*)EKws~;mcrB$vLduF>xl&*R%wf{%$xCSsSb635@ zG@r&apT@ML|7!QHof}`pd~x#V?EK#6Z!^2L2WDQk^=A$lxUMX`uFLp!R8?9;OFSe|3SnJVtPxu0EH5I<0adT+env zJ6*k6&`zsdEp*Rz0erR#;ImyApY4MAY!`~t)kggX)GM32Nr&9u~0v56iln!(^xp$#lqPx7N)BoDHirE z6zp60msYt~@h@Hd=#Z~(VP0D0Ix#O@y-v(atDJ~@vt8ty?c!g$`jH}E-$K5$4)(Tt zbi>7Lc~v+XK8=SyjfXyshr{&1!>>ea|@gF=KBGKGrc@pusGc#yw?M@v;CvID;Eb*K2uiD z1XT8ERQ73BIq7Om&)0WzQMdh>Vb+A^nWDaI{_2x= zADujYaP=3W&p$f3{9DoI7iTAr9)5JO{s*I(iQ$=9o)Z|J?uNfw!uHHvJ$4xF(-`g3 z812*SZ=c3!pT=mP#^_;sVDw9i(b^sEnfn$l_bo(Dt300(dA5tlvt3-C?c#E}`iLNM zTIF8C=h-gm&UP_4UHwQgHLdcIVq>~`A}aPROiQa=C&HzB&=+daFk4=g77cwG4SgC7 zeHsmY8V!f(frj6l(y(u#Vc$Z-w92yz4b#h&$W zORL-`s5je1y>#{dM7_R+dVLG;`WBX@b%a+O&@bCxwG#b&8vT44{d^kzhUtNR-E79nHj6d^l8ZSX~^_x$Q-5zWWGE_W?JQ` z1e~*7_?+#+XS(_{1kSz%nQ4{#2Qt&u>x9g-%88IU+Xc?qE^y9v;d8bNpR-*MO;@pW z^#$NpFNp5J68>hadL4E*cJ_S`xSg5$M8xg1er4Rg_Lhwsd+6!MmtUv;{^QdJ@^xeA z&SXWmPeZp)L$^;u_b@%6`;~?6@{;HE&)F`3r>oBk=uWF#Ep*Rz0erR#w94ZG;OXjhLU-Q+?X=2uf_A#wqMflDqMe!gkbrhtYkviW*9ovT1!b*I zW35kPtxsd^Fg>vL+k03$+r`@1F5;%EPX(;)TPWMN@U?FtYv01uzJ;lM3sci7t-{oF z^-;srzJ;lM3r*A7R@02#P}9sT4FUP_ zv1x5fY{qU#Y-Z{m1g>c*Tzwi`eHvVS8eDxET!-lauCGnunpSy*+P7det#W_DYPx!#0BTz0L|C2ef@`{ZwXoW^0JU!cYFgWZnz0*#nwk1w0BTx) zw|m)k?e7F$`?{Q4Uc5c?@A~BiI14!1`vSJB#h*HO}pG zy86_>_P&McX_f25_Sr7N&vtP>UA=#BKCSYR;{0qE?bFq(#rd?#)#7}*dLqvEEu2rQ zTqoM6yRG&ayP@`(S?(sxPq+Bnum^jiMTQ^M`%F>Z`!wGBG~N%>1Mgqo!~1mg^@{g> z3-8k^Pei;=SFaQ4`xeIcEsRgAd~_I}u6}gr-nY;_t#X~{KHJ6k*)GzjtM?Dar={L! zuzN?ujXTvxPo7-9&7inb<-Hi0ydm?MsrM1Ur*+UzVQ{yeEw8%DUAIqj*X`3N?9(Vb zOb--(V^LV|f9|*Y7XGGHUc)Gyu3jhprd3Wv;n^-0&vp@cwu{KKU0hCA?_pf-TZo)i zd0Y^Awu{K=>c@!4X_c$R)O7Vk-l3M(L48BcY}vjcA_WDaPXnS)1ENm@;xIh`@y#g^ z`xYSfEhtQ@JRJdXwhM^q>QfmC`xXeMRX#=#On3E+g*~5!JD-L*p9Z$1)$P~r`ReRj zVF58S%l!8h_J__8;|c3-0ashPWae4*5*;nAnLS@dac7JV8UeHt5m8XJe{fsJo1 zHkM}#w~Vu0oJ?2CgOhy=A=4@!BSNOD*NKpQ3nBX!Hm0Sn*)RJ&NO#SmZ04?BvncD+ zDC^TGn{>MecFfjKu8}r#^|^tuX&v-N5Jj`))gywUK8>P2jiNq{qCSnHK8>P2jiST! zK+*5+p=i4LEW*#eg`a&3Kl>JPrd6topXus-f}d%X6Hzo>JrM)@78a(}dUfOVz)oyb z&0O^jwby=9?40a|f^&wJ2L)hfyD&T31=4i&$pENnZFpFrIdfOphi0FKW}k*;pN3|i zhUQ^ytKC~$&Q715o?L#!@ZN`~k54|k`)BXo_)~h1pWgr7 z>4$fpe_7tMr=OmlE&ukLKiv6;JAe7?>hWJa{kYsdoM%RPMS}Wl7u3_$dj!<`7M!P5 zK1NVaSFaP)(<&zd^K2Ji)77g**0jpiBI|4yS!cWWI@`s_bPsydji=di_1=Ky`!;bn zQ&x@VO803T_Gug*rUwqcvpB5JQ(j`|TiDyTus5wE+M5}AFQ9H(<<*M1vt8^>SFaX( z(<)bsy|Y~ePFJrMd($dci@oXUiP)P~IT3r))e}*-Z{clPEQoKzOFF zVhr6r&26nuL$^;u_b@%6`}=#)J=+EFboChp-D#EQKXj+7Cqj4M0`0y9+G&-K4z$x% zFWy~4Y>(Gu0Y7tBpFUnaWxRS(_VX8eZvJJ2s~3Q7d&!3%5Sg-iRRX$Ca}%8OR{R5b zhU$|M!qeKEMt%rn`szUdf1d_@p9X2425FxLX`cpZp9bk+dVur~7Nqsr!ku+mB`5Ga z+Xd;_E=Z@VA1O$ub%gJBhVyLyN4r$Fjjuipj6MyBJ`G?#4PZVEU_K3CJ`G?# z4PZVEU_K3C!}JwkKf6r*@D|Eg+0}m*$_kX|0@|I)E}+eJ0WDpH603!>w8}>cXzBjy zOTf7}d31Ju@AF@zeaQ!Io`0{W{J;&XhPq5HKBu^wzk5bp4+q2yAA-nI0nw)c(We2? zrvcHY0nw)c(We2?rvcHY0nw)c(We2?rvcHYIahod5PcdDhv@->Uzwx~2Gi9X0bp7s zM*uk6g~4?7Y5_2tl{xX&qtT zqg}SYy6@4>r_s)*(axvQ&Zjxcd>ZY18tsPZfp#w}+UfHF=lT}TrB%v-bLr}JB3$1> zxU|Z3B3!z9o!FLEIgxvvvGlLZ1E``;LAMTPq%oBbVfs5H} zc?8gLwu^k}9`rb%WVURM15l>0dK`e#r-9O^IUqg_ls*lV!}I{kuTDXkR(V>%i$Ir&SV1=kF}_HxDA7uxNH z?_MiGoY+B_+xJ`HK(*nISeARmN_Gu2jPouX_ zqxUd9(EDqP-sOSfW;b1ZYM^)D!tK6=+kFeS`xb8ZEyV6yh~2lax^JO$TI$R4c0}&! zbH;A)G5$s7%+x0|Cig8&POH4|FnP9%%;~NIhs8b(o<0qpKF#s*Y4G%E@EoQGcz%7s zQ=c!enO1q^!82Vw5j@i>CqihtdLo3TRZaxbboE3a?OQO=lihFXZn^dC-XOp=iiX*^K6+@_w{S46)i-iI|ES)VzmtnMdVTSYTs$Jg z%#_umftWsxm_Ch|KF!*F8ZmtuF^B1anBQ2$EM36OboH5qm}!+0aWh>#5i$D~V)iYp zOsjl!h?(vY6vNhRfAzY-RG&sjpGL@}|8xi5Z$EzW@bT&8pAbFyPUpt3}jwk9I$T ztC_NT#o?+?BIV%&Fb?I8PnSCRbPnB*rS~*(3~l&M-iHR8k&6?ntd9YeHxm58k&dc0nOiB zXx66}DEBQmPOJPe0LQakP@e5VbGmx}Ky%-M=Dvl`X{l$9*S?}|kKgbhcIK{Lg~;pE z$eXnKfaJBuw9ha0GgKdHp7i%Ed`_#p6hJmzy-v_fYrCHa=$o;tX9@cHH2V59`ua5b z`ZW3u(*u3KHKlLgLf^iHyJ?jtD(FSBN+qZDHZ=q)2LeI3yeS)Rw z>V3l9Y+B_+NK98xgv7oDhG~`Sgv4}@cDIUvnW6;rX$16X1oUYH^l1bfrUwGPJSAY? zLcp}ja|H*})#o$<_ALbLTiBOY`REWZUH#|~ux}w?-$KB?g?)Vs`_d}+B=*gA5inhS z6c8}2alL7++anEDtMB&(qZ>5nnhn6q8LobAG9y87tAX5WI%w8~=&p6Tj!f@fOgMDU#Lg6C`(LT9@Wn(nG% znCH_x9rkI=^J&cUY0UF!%p0Z$=6!oHPoHsU*SFBFZ{b{8<=KsMvt67^SMM2w>s#2C zR{0pQEnU4%Z0lRt*0)eCt@6=f+iVxxX1myyuHLJtmR9*lQ7zpgytxbqv;9>yanPr6 z(5G?Gr*Y7yad4O(IQZ(6gK3q=8x3c>n3%3UJJB$$aMF)^)jA|}puk#V+*jOnh*g>ycQb3To8K8studx3Dd(@(e||*)GD(b`dUJeJvtfTIC}}xODYIZ0lRt*0-=Nt@6=f+iVx% z($#wg+tMmmi*4!ZiKv#=w!a-*{3nnr?JncvCpTmFXxJYiGNNo37qV zh?`cqmoRmHwlC9OKz^HeMbL?k>~S#~%^X`swZl`IARa zPVe#e>^}b+#aFNOe*VwTzwz?wb>^FYy71F25~sZRsx zFg<|u?FCYOm?5-pL1^Cs&$P;u7(CO}j}A8b7GS1Tt`jzAyRezAevE*bR=HY8On2+w zMj&j4Z}`3InOW{E?r781hX;MrDkoxax_Tn0rlnBzX;AfPQ1xk0^=VM`X;2-e2dKWY zpjsY1XiZliJ!tJ)(3)1cPH0V6uM=9+DklQ$Y!_f>y8xT6exv}~x1cqx?S6*=su{Z> zs+p;GE1afPo=l`odGo4U%geBeLE@OX3FYy$!)YxgQ!n~ zs84ghnzTONsF>Cfjv0Pt`>T5s6MY&JeHs&e8WVjQ6MY&JeHs&o>4AwqSWGOhWNsVN z)#nm2rd3YF$8_~Xd`zpHh>z+1&F&WnH{M}$aq{Tw{N96;`;VSHyvuJD-u>w0@q@cJ zev|w3%gzdu{V)1+h5(A$mr9^=+nsP)5z%4$mrAT7oSGPVR|6rR~H%e`M_OS-@?SS zN-vNxUA<0B>|1D2CR+i3P(9KN`6pnklPDfT&M{Xwtv(uLFE~ zy1WEC`!WC^XRww8`09Z`YoA7IpGIq+Mr)r&YoF#a@M*LjrUzPoZPB`v z3A5AHCmLp_RZhh0boE5cPOF@V-0A9xnBBL~I<0b@Xr1mhZ+2Xq&e)?mohhq4;IvQU zbkdtUoyq0lM(cF9JKQ*(v8x9Hr+pfyeHy2I8mE04r+u2sz^8F~m>xL&^~GuJ5JLAY zgifnGF%ddly-tMgTiBddxlV+h?c#L0M|kdv<=Ot~RmSTEKFuw!PeZ9sL#a=5o0_yf zQ-Ck6gTBgxZQ1hbUdJ|{#x|eEHlM~epT;(y#x|eEwqbf;+c&0cORK#45pK4NaOvvv z7UB99!u2g|ORL;7*p}|AD>1apGF^_MxUh1V}U{Gu6>0Dmm3VFuzCPs$fse*r(wvaVaTUp$fwyaJ`F>| z^njt4rWop5FqBq#N`XW>F8m4?2rhFQve42gl(=atm519Jq!c=)7^J>&= z7qVu%kTu%{uGubd&31unwhLeB9_>YW*vpjFD;D;A8upStz}Gf%ZGhvUw+W$#-X?x# zo0Xqw9pN=e#Lf0sk2d1^G~)U+;`%h=`ZVJDG-s7hBknLg5cgYqh?}lHm#{Xi(s-;* zS5HLQw91JnJKIIsboFZSHLW9DYsi}IAI)z>&Xm!ZvaX7q(E2pc`ZUn`GzZbAfp(Z4K>P9ntv*e-sZFb-3ux2T z6CpOOaw5>Ct0zKi-vZaP%5_3)x_X_!nby|tVZ+l5KbqP&eEcc+ohh5XDTW^enXC^y z_snUPry9=BcDXA~_Xu|a@Sg3j{xE=dpN4mzhIgNacb~p`cDBH~`Y7Rjxa|S&uPjr_ za|Gnm)n_HV_bqr&t6V3%&vrpRUHuqAzHh;M--7qF$~}Y5>27y72iF<9!Iwc^T}szy z>H`V9S!ua*;dizRzv*uMGaJ7%d{rJa_GvWsX*Bj}H1=sU_GwNbpGMK|h{k;jjr$f3r?sua8M~pwnW+y34)-ktPOCg= z5I9}EPUuW)y90^A8M`Vr2KzJy`!ojoGzR-L2KzJy57PsKUtJ8=2cCQ3w8~QrgJ-)) zoUUFi2KOxt?px@aR=H;|I9>hdFgUGpA`+*&-381YamH>aab}jg36E#Hs65+6<#e|@ zJg}aztG=SKPouFDJr>o^b_098Rk|3TT|}c9$%WXY5g5cs~9VUU<%wjea^Hd}itk0Nc|lPZVrVS5JiIw2t&* zbGE-qKbZS8nEN!C`!tyQG?@D|m=Dtf%)hf>u8%N`_bmWVt2`57e6|bbvt3A^?E?F3 z7v9r7=*I`aKU-eCdNA9kxo1xLXu@Of@u#3|ru=C4y(l-nl=|_>2lp;MdvU8x_6pZd$=-jt(xo;tITB}z9%K9|Q`ZUV=G+HM8r#r`f`|*>9k54bZ zEdS(_)AM^DK03cRd2;{s?vLMnc6xSx`ERFBF7Dp;$9OsOvGLH``SXWm#}ZPi+$- z`ZNyuG{Pl)jQ9CwFSBVl~y?sxYE@Vfvayp zR$8mq3}pE`s%=#y6I2nMCAC!$Z^LZ7~cK54C9Gw9>f=;PDqaW$aea`%Dy`KW4^}=6Rz3|@J`Gkr4OTu4Rz3|@J`GmG^Z={x?txXh`pkf-z6Dch zO)xdv1*_REWTmV34`iivgx6C*F56$dGC|I#LC&W^&Zj}nr@6&Sx;$U7E8T z<<)(Ub3To8K8GNKAU8H^KmGW|pTHu%^59VZ+`GKicodF*{RM zPY%rXY0UO%%=T%__G!%aY0Ms`2WG#sn5{+O1-!J%6BMn})e~_#t#Tq-r>iI8bXw&^ zoK9Cy#ObukiD;efc5j`)>5N^y6mi<8aoVSGI_XV6DUa5ftPeI$r?uSyL+Fe>s?eFT zdRic~Pb0KXBeYK=v`-_nPb2g&JrMePi_oPCI6d3N>2&pJjniqBtHtTrE?Uoa(K=oI zNYOg2gFb`B@@#qa>VaUNhG3tDV4sHIq~~nm4LR@fm)GuI{q@e@{Nc_&-1*CAS7-m# zGv3PyaGNRR83wxP9^rK#bj|ixj~w^0K8=z-jgmf%l0MCm@M)CvX_OqM2TFc_QBq&S z_?T9CF5zRkdLlmdEo4lqTqiQ7d+jUW9-dvkG4Am#7Z@C-P!0pdbXP9`pz~><^J$>- zX`u6Ipz~?K@@a_jX~6Mm!0~Co@oB*EX~6Mm!0~Co@oB&rrU&5sU<#bH%4-X7X1lPH zuEq*>(kfRAJL&$L-P>|+e7xY|e zch5gMx%}wC`Ni4EqlX_|xX&M;SLXgzId}Fiy~19GD)xLD_Iw)ld>ZzA8uok|_Iw)l zd>ZzA8uok|_Iw)ld>ZzA8uok|_Iw)lhUqKzes-Dq;SNA<7XC?Y#@PfnPD!*u@i<6B|6{J&4n-am6Tv36|A0+fl@ zM(=Dgb9wat;>M%rW-G&oMzK`X@oCiYY1Hv))bVN5@oCiYY1Hv))bVN5@oCiYY1Hv) z)bVN5@oCPiVR~oHjdPdUR~BYUFd%BS3skdRpqlM+4-_qLhSAUCb8NS); z?@Z?AE0b4YgF&B$L7#>}pN2u7hC!c(L7#>}pN2u7hC!c(L7#>}pN2u7hC!c(L7(QV z9i|5izOXQ;SpdMk1$}9i{BQuwa0Q@G1E5a>picv!PXnM&1E5a>picv!PXnM&1E5a>picv!PXnM&1E5cH z$qds20KYl~VBZ43z6E`0m25)aY!?92J=kv}7uvGrpA2d3zAc1}LsvGg=<;dk@@eSu zY3TB4=<;dk@@eSuY3TB4=<;dk@@eSuY3TB4=<;dk@@dZ6VR}H<*A}`;7`TI*?ZVh> z7tGSt_hK-XR{2O_EZqbDf_}j)+dl?o*|@^Yr@_pp!OW+@%%{Q3r@_pp!OW+@%%{Q3 zr@_pp!OW+@%%{Q3r@_ppxg>_^0cKy{1G98BDlpc!0IY8TSl@!Kv<`j;mMtFxt!!MO z<577F?9%#*W zp(|Yt9(1Ku-bDe}Y!}ATJ<=Umwto!FvT=o(PlK6HgPBi*nNNe6PlK6HgPBi*nNNe6 zPlK6HgPBi*nNNe6PlK6HUp*;VP`d4m9boq2($lE$L^7=s6&OobPlU0w%84*G+l8@o z4}Le6Egu80Z2Y#<;p&icLUQ8pyG)-3FrNl6p9V0W1~8unFrNl6p9V0W1~8unFrNl6 zp9V0W=6vyK0P|_i!(n;=*h^D@^)2X1t3(LEX1f43+Xb+6k8~fF?H}grzpqY(>&sSv zWf7}s0P|@8^JxI{X#n$S0P|@8^JxI{X#n$S0P|@8^JxI{X#n$S0Q2dqAEXOJx1ECn zz`nWk^!*TbU}=>U!PsmU#?sZR1+cWr)dE<$M*=L{KgNAnHh$Yl@&Db2`816AG>rK) zjQKQ-`816AG>rK)jQKQ-`816AG>rK)jQKQ-`816AG>i??1IE6!FjijTU^d$Yvvf5` zFqT%iS};pjPlU0we!YA9!$uz$$mrkfMi-w~_~M(&iVrLB){IP71o|`t`ZNUkGz9uI z1o|`t`ZNUkGz9uI1o|`t`ZNUkGz9uI1o|`t`ZNR%(*puuUI^4MfM4H&y}ku|X-%*< z+XcULxA~G94kDkE%GeFQbB&pBmzjz?pN2c1hC82zJD-L-pN2c1hP$NazW(FtOFy1} z|Ho~Anup^AlbN!5oM6(YVbZ5z(x+k4r(x2kVbZ7Bi^KGQ$ycVBOsk{|EYsC6gJoLf zMD7vO)e~Vdt-tj*YJAbnULSa0u*~qyKX{eNtCu3btng{b^l8ZSX~^_x$V__E{R_XD ze9+%vL3OsgdgLJ2rynbYN~5ucuZ@P#jP;;cj66pnUNhSr&~>Iqu= zG+HOU>CQ&}OfJuA>`r&<^Ap}PeD!d^yHCTrPs6)U!@EzzyHCTrPs6)UbD<5>1KwX< zc-Qm+ds^jb3GcIAkWW{y7T)_7yr;GG<-^Ml8NT7m51Dy1r}=4c{3-l2$dpxn_-WwN z{50@s1W$USBZ>T(dGNdTY zaG&jh`)n87XS)!euKvLQ@o8=Q+H%HjL;`p1nYnu5g0xSAtxtokPlK&bgRM`)q)&54 z>(kKZ)6nPB(C5?8=hM*V)6nPB(C5?8H%t%c`_3Np&32)0whMjfYQ8`(trB_YOZVDS z+An`k!L{#+x$)hoGv8B_$qLI=+gk`(*Wqx0O->I z=+gk`(*Wqx0O->I=+gk`(*Wqx060t!0DOH90B5@Zn65?)`qC;91HjoX0H%AS_l9Qs zhkbKfira9rsYu|#dz6D)<3$*$cT%~m+uCo1~4BtO6_Z3^&xI)XPLCdE>%cnuhr$Ni7 zLCdE>%cnuhr$Ni7LCdE>%cnuhr$Ni7LCdE>YnUFO_2v{>X_fat(3P%c61w^pbfs0U z6Ts3v=xfsat|VJN?44FNtI+ak(DG@}@@dfWY0&a%(DG@}@@dfWY0&a%(DG@}@@dfW zY0&a%(DG@}8m0$my)}haS|tXcm2QPr-vX_)%5{QPx(7!qTRz79RyMBa@@eSuY3TB4 z=<;dk@@eSuY3TB4=<;dk@@eSuY3TB4=<;dk@@eSuY3LfJ2XuXRp{u;Od8#rK)jQKQ-`816AG>rK)jQKQ-`816AG>rK) zjQKQ-`816AG>rK)j1AKR#@=2S(-${@^)2Y?TRdS*Yl5!XE`X(bB*3!$!#;V;W))pN z4P8DBT|Nz6J`G(y4P8DBT|Nz6J`G(y4P8DBT|Nz6J`G(y4P8DBUBmQ%u6L&B>RZs& zx1cMn3A$#x(3S4NpFC#Ehea!!RcQG%X!$f~`7~(xG-&xWX!$f~`7~(xG-&xWX!$f~ z`7~(xG-&xWX!$f~4bua(zPF%NlE7WpY!|?0yD*lnzDML~W8Z?Vw6_1onT-CUeB(@} zD*}BQ0(}|+eHsFN8UlS90(}|+eHsFN8UlS90(}|+eHsFN8UlS90(}|+hv@-<-`|74 zbTvibmsW``_|0}9FkQV`2u$mb@$s(=zxM9jwXfaUeVfDXjk4z#XD9yegY!9oOjZE; zGywWE0Qxil`ZNIgGywWE0Qxil`ZNIgGywWE0Qxil`ZNIgGywWE01neT0QqqGKff~X z>Y4Oqk(;?6EDCBHkSwhU$GB#$q8U)%S<*(YiQ!basC4!O8tcPafXA_Wt?3 z-?^Xpf4!TpJ~OZbNqk^{$Nu9RkDX5>W%jB|NaNE;F?kB@WJ`%@7}vOJv%#j@AAj*$M-KjK0AHy z7t25W{KA%T8{rcyZe_rU(zdgPDf3E)b zSD*jyumAqpwkXwwYPuw+yDLE OfB6sp@(=&|7yl1@&{U%U literal 0 HcmV?d00001 diff --git a/src/main/resources/default-config/structures/data/pull.tstructure b/src/main/resources/default-config/structures/data/pull.tstructure new file mode 100644 index 0000000000000000000000000000000000000000..683ef1825346e774d2c229135c9fc7f2e193c1a2 GIT binary patch literal 18789 zcmb`P-)~b@9Kg@YHZ}(1mkAMxJZNInq>T|!~ik++a_Jh*3aqZe0%!| zu;xF<=BjwsMIdSwWQvx#I3~a?L4HNRH~(uQR}VwII)izZ8f6H zwbn(mZVC%#oF_}nk%fhY87ostWlE_`iLbk7>1Z9V*OI7Gi$|ph^5I)|erkQUx8R=2u0Ls)I@}pl&Xvx8 z{or3eUfKJEUuoQ~bSRy8&V_z`|I9N-H!M+4XH-8COws_AWmEZed{l+`byjw6sc3ew#Z0_wjh5v(F6H*}P+~@=W?r0qxskp-cmHcI-Ny{M+w`;h60>h(yY|&?Mt;X`jRWq(!A9HN z?6gdwvs8B(e>3Ely65D2*14w$v|gm6XZIu$f!2#`QB4F|FEXqWf!2$Rs6?RkBBLr1 zXuZf*l?b$6WK1Oj9V)WJW@CJlqNHJRS;?nl0Y~~PbdS@Y zBvKi_4ZR3)5{W?TMTnC~1X?dboJ1nfdJ*Cz5`or>5GRocv|fZbiA13FBE(4~0v#%n zl{Wh?ht9<}A(xV)(>QuMRH^@OZC*r{HZKCL7a>lfi9qW`h?7VJS}#JJL?Y075#l5g zf!2!5GRocv|fZbiA13FBE(4~0<9MzP9hQLP?4;(4Xe`T=mDk8 zix8(=v+*L(p|j~vn-?KYA`xi42yqgLKo1+JmHZMY)a?QqzK!?tzKW$!wIEh4{^&-ScBm%7$Ax5lSl+wFG8P0BG7sf`Xmy84i(9&+nB0ujvi3mya;{D zH5)Gi9Xgx-x_J@$Bocwvi_j;L2((^=IEh4{^&-ScBm%7$AxD$(14^40Ax^nw<3*rDXVafHFG8F|BG7sf z;v^D*){77)kqES2ggA*rp!FieNhAWT7a>j}5oo;#aT19@hl*sSZ95GRocv|fZbiA13FBE(4~ z0v#%nl{WV)-08*tNEie#nDeJ#C+(&p#^rOk^Fr(Cn~BG93;=}(&% zAx5GRocv|fZbiA10SMC>_D9t$}4 zhdYzcKiADySHJlFYQc<@&DKSGo|d@z2KUaE?a5c{DPrtr(%UoL+q3C;RNOcC-4F6l z+N=AG&T;#^oimf9r~GlJ1G@9cmcKt literal 0 HcmV?d00001 diff --git a/src/main/resources/default-config/structures/data/swamp1.tstructure b/src/main/resources/default-config/structures/data/swamp1.tstructure new file mode 100644 index 0000000000000000000000000000000000000000..fda1890f7d5b8c1689e503726f6113130e98c38b GIT binary patch literal 126887 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/default-config/structures/data/swamp2.tstructure b/src/main/resources/default-config/structures/data/swamp2.tstructure new file mode 100644 index 0000000000000000000000000000000000000000..5c34d3861d6e0e2d43404c4679f18506888978e7 GIT binary patch literal 147551 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%0D3H8SAbF!e@+M&MEkU@- z1?~4C{b?>dbps+bR7FxFU^z8H9!dq?8f4JQnIi}S?hAqgJP;rVQtwc&o*>Ael~+#? zw1N{s(As4;3IYWZ1PUYw6i5&#kRS+H41#c9TW?r4Zu#Y{%Cnn%d%tJ};rrh9gCK!jExLMsrV6^PKS;FhJozx3S*tsQDnv`FRIU-xqClcWfkcY} ziI!GyB3fGe3rEqSK%zx~M2iB676lS50UP(Jt9%GonS11e0;#G%ln;2cU_tp*shkij zRv;ED5Q`Ov#R|mYR&c`N*1p4$#R|k?1!A!Ru~>mv9I$9{xXPr(Vg+Kc0ObR#hph?ojQOa&sQ0ueJ{QOs~vF%^iI3Pj9+N8R_PO67!L zu>!GJfmp0SELI>Ew}KNEw|2mdELI>ED-eqnh{X!T;($eq!&N3N`(6cNu>!GJfh?~I zL`(%DrUDUDfrzO<#B2p8#BA+28;Pkv#8e<+DiARhh?oJ3Vuq`VsX)Y3AYv*IF%^iI z3Pj9+N81TtajI0V9TqDPi(A17i(C80Miwg&ixr5)3dCXsVsXHt#o;P5f#p?!Sgb%S zRv;ED5Q_sIO-7VYmC7Z+Vg+Kc0ED-eqnh?ojQOa&sQ0ui$noDj3M)oUcC0ufVzh^autR3Kt1aHC1HYNo1) znF_>A1!ATGF;jtRze0^(?EzgSWM5Jwe= zqYA`P1*#58UL&igs)(Zsq^bgORDn3EKpa&djw%pG6^Ns);Fi_1zbM@Zt<6sxo~Wis zDq^Oph?xq+Oa)@50#$3{%1l)eGZjcx1!ATGF;jtEB&GrpQ-O%7K*UraVg@|Kcb=`5(+pa*R)JWnKn_=dSgSy+RUpA z1!ATGF|!ry&D_;K$XV`x_3{;NDFCYWK|maB?W{^F0OF_uaa4ggszB8~$ZJ&XgMc`y z4i!fgNL2;mr~+|RfjFu_991BWwt`z$&;HzYBeeE8ZFr*E2dRjesv>485Hl5snF>_x zgPa`9R24B(ftaa44p)JgsX)wBAZ98MGZl!Lt>A>2t&L72GZl!L3dBqWVx|HyGvHC) zo-(~vv*AkP9A4}DT0k^bAQ~%>stQD71){M6(O7|KtUxqw1t&CaZEhNAtUxqYAQ~$W zjTMN-3dBqWvcM`3GZl!L3dBqWVx|HyQ-PSNK+IGiX10P8X0~=Wjm%UaW-1Uf6^NM% z#LR$4U0_qCvQDD00?}B3XskdqRv;QH5RDax#tKAZ1)^~)IH7TCFVsk51){M6(O7|K ztUxplcvOv3rK+(4(O7|KtUxqYAQ~$WjTMN-3PfWCqH!xYp>b<})JS6mqOk(eSb=D) zKr~h$`(y>Oz$y?k6^NM%#7qTZrUEfjftaa4%v2y|wt^F8wl+wO%v2y|DiAXjh?xq+ z%z#H-U{j^Kz$y@p6^O#RpfoQBiG*%!Qw}KNIw{}d8G*%!QD-ewph{g&; zV+FFnDv$+Mftaa4%v2y|DiAXjh?xq+Oa)@50x`1{oG`Ps32J1f0x?s8n5jU_R3K(5 z5Hl5snF_>A1!ATGF;jtA>2txZrPGZl!L3dBqWVx|HyQ-PSN zK+IGiW-1Uf6^NM%#7qTZrUEfjftaa4%xnhFXMg$b*~44+?q4k4zqMSPpU-bybU#S< z?()g`;?_6ki}~BD|M%vj`)B{}AJ2a4d;j)#zIS8x;+wP2-d#NEh`*IT{py?DZK{)x z7u~<<|M|C{{qt9!KJE?)6PVOof>-$G#rf>z@611#-+HnE-~Q3>|LcGGhrjc8e(L={ K`}cnG5C1>^P)lh5 literal 0 HcmV?d00001 diff --git a/src/main/resources/default-config/structures/data/swamp5.tstructure b/src/main/resources/default-config/structures/data/swamp5.tstructure new file mode 100644 index 0000000000000000000000000000000000000000..8d6af79bef5a8ecd1873d30ab124fe73041eb34b GIT binary patch literal 121900 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ˆ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 UH-C8VfB(jBzy1gR^V@I!e~IJRZ~y=R literal 0 HcmV?d00001 diff --git a/src/main/resources/default-config/structures/data/swamp7.tstructure b/src/main/resources/default-config/structures/data/swamp7.tstructure new file mode 100644 index 0000000000000000000000000000000000000000..8aa06238a5d11f83bbcbf74028b112f7f4820a3b GIT binary patch literal 135706 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 JKY0E3|37r@Ip+WX literal 0 HcmV?d00001 diff --git a/src/main/resources/default-config/structures/data/testloot.tstructure b/src/main/resources/default-config/structures/data/testloot.tstructure new file mode 100644 index 0000000000000000000000000000000000000000..49e27e6caff79111b7fd9b26bfce31315d799e21 GIT binary patch literal 2618 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 V{;z%Q5B}a?_=ErYi@)*T|37Q46C3~l literal 0 HcmV?d00001 diff --git a/src/main/resources/default-config/trees/data/spruce2.tstructure b/src/main/resources/default-config/trees/data/spruce2.tstructure new file mode 100644 index 0000000000000000000000000000000000000000..9b43d6191f39d5230d251bb4fcbd89d7002cd11d GIT binary patch literal 16788 zcmb`P-)kII6vuD2+5T=?6Obxm9|g6$v`H;B6k{4`Q-gvbpbaHVvXi*YW_LR?o2C)+ zP^c)12x7JL&A#e`h(FLi2*tmkuL|O$Ao!$Dg7T1qnFL-WixtN9!JQ{JkB-hNl>kamGN3*VOfuHNS-uVUu-1mcuthe9Po6__qSTe z|H!rsXJ#fRM%S8&+8a0Zu;JWEy)=(uekIJH^l%10PTc(T)(_v0>{4p2dF`N5>c~rD z`nytn`uQiiFJ+g>%$&Rb_0n&D+%2fxld5k`e_hvK>w1CbYl#}onO7V})u2{g56jaJ ze+uSnp;@7cAPMv=4@BYBRy7J&!g`XZQ#r9DxoPa(8(Wx;QjC)z2@^G*!*As>j~!~y zXc{r}^6GUeV6AYk*XvC8^^%aKj?dIOKGXjK-X zU@>{I5=6^$jbM51TBA{!4c4mh+3S}#A~oE7+^$QZQ#Q9jz4MV8FlNB~(ku1W%Jv6! z3jI?rzc$faYek}Xmjg^jdqnXIPk(doLHyH@UM#a{MIGwY=E33_>B@Ic{PWBD(6iek zjhLg(GtloJe)0EH=U*R81MQEo;``H?RYGnh+V4{lSdVyYT zW+K1|djteHmIWac1?pp%1N&L9$b!3Ba1RUaWx;(OU<=#%qz2k$>a)t!K?OKOfpCZd z;SdGFAqs>;6bOeX5Drlw9HKxt0p2CHE_TdC@rtiBMQJ^g$$jAH$puJF$4D{XkW!$}c( zNzAU7<_;kAqCn_HfzXQrp%(>0FA9WSu3(N{{j6RT2)!r}4pAT+qChxAfpCZd;SdGF zAqs>;uAp(~s0NB1Y%;a8e$2ZJHU$$4!X|1&*hGP_i2`901;Qo@giRC(n+k zxz=6g#D(@Rb%+Atkbph7;2|04B{5wucmSc7fc9ig+OEEc3G*bTPckr%0%0Bn!aNFu zd9GlNd9Kx3n|Txn^C%E{323+Ego`CGuh%hQUaw<9N{Q)XGo%#IzG%ZPiw0jMrcW~P z)fLR~)wTR<^OXYOD+R(=0qslgbXJ3}64PhtA*FylN(NF&OrK;RB?ZDf3WRyCV2*jN zMPr+J6bSPKwC|a zUBMhFr82brL-OYN4c`Ycf?^V$K{9-%!Ej3=!)KZaf`?%{$saZeZx zDw;=3CwbwZN6e8feNK*^Qa%zpYbr0}isyA3%OwN*9Fv~Shm#AL=A%b`!Ficrk7D9D z@QCT;ERF+@m`=`8-3*L??2?SdiX5X|%hJqA4k}Y15~o0@Oo5q}#j;G9IYLTmM3_f` z(2D}8z9eLfC%Zu=d7?X=cLAf@)bX8bp&>xEcx& zqER43qd=-zFW4V)`tpXM5vxXhBLU z8AwTinMTDj{SLKTDy3`r*LFIjKuAe}NLN6+lumn=X+tb4n3+Dz>vb}jUc)CDm?z2j zfH02&ci1(g=D8M)nWd+?28;;vWJJ3_&UK!|^jUhUp};I)9yKD>P+&ypMU4o(C=hzN zg1HTasit)>?=scYNh}D_s1eO^kyd=JHW`!H5n&URD%CY0RoFz02%9JnHo1ZwE|aN4 z-UVms5Cy^^0qrNNZZAU0nG?xCFNx`^7X?Bu3WQ!12)!r}dQl+sas_kr@~!|=y(kcR z324{L`Wj@amq$!%frgm)l9)cq!aNFuc@zlqC=ljRAk1?GbIkLu08{fQ5av-J&R!H~ z+)S^kcGs0FIO-}FV{jYbE%?=d~>qUNmC<2FABt{6bOeX z5Drlw9HKxtM1gR~8I06(-QU#R_89>GeXPE{@zu{a^k*4Nsyz$(?Ned&ru=kiQork6 zzq4Nd#oWL3@cxp#fgL9zYytlNJ3d2U^X=f~g97kD0{3q3`uFpdo8^KkTvP}3ySCzF ly1F!8P2!8{z)C}YTWfxF{Da#k{=D<+op%Zk9v>Sk{txvy?xFwy literal 0 HcmV?d00001 diff --git a/src/main/resources/default-config/trees/trees/spruce.yml b/src/main/resources/default-config/trees/trees/spruce.yml new file mode 100644 index 000000000..f651b6272 --- /dev/null +++ b/src/main/resources/default-config/trees/trees/spruce.yml @@ -0,0 +1,7 @@ +files: + spruce1: 1 + spruce2: 2 +id: SPRUCE_CUSTOM +y-offset: 0 +spawnable: + - "minecraft:grass_block" \ No newline at end of file