diff --git a/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java index fff49b990..89e4178e6 100644 --- a/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java +++ b/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java @@ -1,11 +1,13 @@ package com.dfsek.terra.carving; import com.dfsek.terra.TerraWorld; -import com.dfsek.terra.config.base.ConfigPack; +import com.dfsek.terra.biome.UserDefinedBiome; +import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.CarverTemplate; import net.jafama.FastMath; import org.bukkit.World; import org.bukkit.util.Vector; +import org.polydev.gaea.generation.GenerationPhase; import org.polydev.gaea.math.Range; import org.polydev.gaea.util.FastRandom; import org.polydev.gaea.world.carving.Carver; @@ -60,9 +62,11 @@ public class UserDefinedCarver extends Carver { @Override public boolean isChunkCarved(World w, int chunkX, int chunkZ, Random random) { - ConfigPack c = TerraWorld.getWorld(w).getConfig(); + BiomeTemplate conf = ((UserDefinedBiome) TerraWorld.getWorld(w).getGrid().getBiome(chunkX << 4, chunkZ << 4, GenerationPhase.POPULATE)).getConfig(); + if(conf.getCarvers().get(this) != null) { + return new FastRandom(random.nextLong() + hash).nextInt(100) < conf.getCarvers().get(this); + } return false; - //return new FastRandom(random.nextLong() + hash).nextInt(100) < ((UserDefinedBiome) TerraWorld.getWorld(w).getGrid().getBiome(chunkX << 4, chunkZ << 4, GenerationPhase.POPULATE)).getConfig().getCarvers().get(this); } public CarverTemplate getConfig() { diff --git a/src/main/java/com/dfsek/terra/config/base/ConfigPack.java b/src/main/java/com/dfsek/terra/config/base/ConfigPack.java index a3bcb3b3e..f4be5e8bc 100644 --- a/src/main/java/com/dfsek/terra/config/base/ConfigPack.java +++ b/src/main/java/com/dfsek/terra/config/base/ConfigPack.java @@ -76,7 +76,8 @@ public class ConfigPack { AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); abstractConfigLoader .registerLoader(Palette.class, paletteRegistry) - .registerLoader(Biome.class, biomeRegistry); + .registerLoader(Biome.class, biomeRegistry) + .registerLoader(UserDefinedCarver.class, carverRegistry); ConfigUtil.registerAllLoaders(abstractConfigLoader); List paletteTemplates = abstractConfigLoader.load(ConfigUtil.loadFromPath(new File(folder, "palettes").toPath()), PaletteTemplate::new); diff --git a/src/main/java/com/dfsek/terra/config/loaders/base/CarverPaletteLoader.java b/src/main/java/com/dfsek/terra/config/loaders/base/CarverPaletteLoader.java index 773bbcd1b..c0daa9a36 100644 --- a/src/main/java/com/dfsek/terra/config/loaders/base/CarverPaletteLoader.java +++ b/src/main/java/com/dfsek/terra/config/loaders/base/CarverPaletteLoader.java @@ -25,9 +25,10 @@ public class CarverPaletteLoader implements TypeLoader { CarverPalette palette = new CarverPalette((Set) configLoader.loadType(Types.MATERIAL_SET_TYPE, configuration.get("replace")), (Boolean) configuration.get("replace-blacklist")); for(Map map : (List>) configuration.get("layers")) { - ProbabilityCollection layer = (ProbabilityCollection) configLoader.loadType(Types.MATERIAL_PROBABILITY_COLLECTION_TYPE, map.get("materials")); + ProbabilityCollection layer = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); palette.add(layer, (Integer) map.get("y")); } + palette.build(); return palette; } }