@Mod.EventBusSubscriber(modid = Reference.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class WorldGenHandler {
// Vanilla Fillers
public static OreFeatureConfig.FillerBlockType ANDESITE = OreFeatureConfig.FillerBlockType.create("ANDESITE", "andesite", new BlockMatcher(Blocks.ANDESITE));
public static OreFeatureConfig.FillerBlockType STONE = OreFeatureConfig.FillerBlockType.create("STONE", "stone", new BlockMatcher(Blocks.STONE));
private static OreFeatureConfig.FillerBlockType CREATE_GABBRO = null;
private static OreFeatureConfig.FillerBlockType CREATE_LIMESTONE = null;
private static OreFeatureConfig.FillerBlockType CREATE_SCORIA = null;
@ObjectHolder("create:gabbro")
public static final Block blockCreateGabbro = null;
@ObjectHolder("create:limestone")
public static final Block blockCreateLimestone = null;
@ObjectHolder("create:natural_scoria")
public static final Block blockCreateScoria = null;
@SubscribeEvent
public static void generateWorld(FMLLoadCompleteEvent event) {
if (blockCreateGabbro != null) {
CREATE_GABBRO = OreFeatureConfig.FillerBlockType.create("GABBRO", "gabbro", new BlockMatcher(blockCreateGabbro.getBlock()));
}
if (blockCreateLimestone != null) {
CREATE_LIMESTONE = OreFeatureConfig.FillerBlockType.create("LIMESTONE", "limestone", new BlockMatcher(blockCreateLimestone.getBlock()));
}
if (blockCreateScoria != null) {
CREATE_SCORIA = OreFeatureConfig.FillerBlockType.create("SCORIA", "scoria", new BlockMatcher(blockCreateScoria.getBlock()));
}
for (Biome biome : ForgeRegistries.BIOMES) {
biome.getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES).remove(Feature.ORE.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, Blocks.COAL_ORE.getDefaultState(), 17)));
//biome.getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES).clear();
// Sediment Disks
/*genSedimentDisks(biome, Blocks.SAND.getDefaultState(), 7, 2, Lists.newArrayList(Blocks.DIRT.getDefaultState(), Blocks.GRASS_BLOCK.getDefaultState()), 3);
genSedimentDisks(biome, Blocks.CLAY.getDefaultState(), 4, 1, Lists.newArrayList(Blocks.DIRT.getDefaultState(), Blocks.CLAY.getDefaultState()), 1);
genSedimentDisks(biome, Blocks.GRAVEL.getDefaultState(), 6, 2, Lists.newArrayList(Blocks.DIRT.getDefaultState(), Blocks.GRASS_BLOCK.getDefaultState()), 1);
/*if (biome == Biomes.SWAMP || biome == Biomes.SWAMP_HILLS) {
genSedimentDisks(biome, Blocks.CLAY.getDefaultState(), 4, 1, Lists.newArrayList(Blocks.DIRT.getDefaultState(), Blocks.CLAY.getDefaultState()), 1);
}*/
// Stone Variant
/*genStoneVariant(biome, 10, 0, 0, 256, STONE, Blocks.DIRT.getDefaultState(), 33);
genStoneVariant(biome, 8, 0, 0, 256, STONE, Blocks.GRAVEL.getDefaultState(), 33);
genStoneVariant(biome, 10, 0, 0, 80, STONE, Blocks.GRANITE.getDefaultState(), 33);
genStoneVariant(biome, 10, 0, 0, 80, STONE, Blocks.DIORITE.getDefaultState(), 33);
genStoneVariant(biome, 10, 0, 0, 80, STONE, Blocks.ANDESITE.getDefaultState(), 33);*/
// For custom biome gen, use: if (biome == Biomes.DESERT) {genOre ...}
// Furthermore, you can use if (biome.getCategory() == Biome.Category.NETHER) {genOre ...} to generate these ores in the Nether, or THEEND for The End
genOre(biome, 20, 0, 0, 128, STONE, Blocks.COAL_ORE.getDefaultState(), 17);
genOre(biome, 20, 0, 0, 64, STONE, Blocks.IRON_ORE.getDefaultState(), 9);
genOre(biome, 2, 0, 0, 32, STONE, Blocks.GOLD_ORE.getDefaultState(), 9);
genOre(biome, 1, 0, 0, 16, STONE, Blocks.DIAMOND_ORE.getDefaultState(), 8);
genOre(biome, 1, 0, 0, 16, STONE, Blocks.EMERALD_ORE.getDefaultState(), 4);
genOre(biome, 2, 0, 0, 16, STONE, Blocks.LAPIS_ORE.getDefaultState(), 7);
genOre(biome, 8, 0, 0, 16, STONE, Blocks.REDSTONE_ORE.getDefaultState(), 8);
genOre(biome, 20, 45, 0, 60, STONE, BlockHandler.ORE_COPPER.get().getDefaultState(), 7);
genOre(biome, 8, 50, 0, 70, STONE, BlockHandler.ORE_ALUMINUM.get().getDefaultState(), 3);
genOre(biome, 8, 30, 0, 38, STONE, BlockHandler.ORE_SILVER.get().getDefaultState(), 4);
genOre(biome, 8, 32, 0, 40, STONE, BlockHandler.ORE_LEAD.get().getDefaultState(), 3);
genOre(biome, 8, 25, 0, 40, STONE, BlockHandler.ORE_NICKEL.get().getDefaultState(), 3);
genOre(biome, 4, 5, 0, 20, STONE, BlockHandler.ORE_URANIUM.get().getDefaultState(), 3);
genOre(biome, 20, 20, 0, 45, STONE, BlockHandler.ORE_OSMIUM.get().getDefaultState(), 6);
genOre(biome, 20, 40, 0, 55, STONE, BlockHandler.ORE_TIN.get().getDefaultState(), 6);
genOre(biome, 8, 35, 0, 50, STONE, BlockHandler.ORE_ZINC.get().getDefaultState(), 4);
// Strata Ores - Andesite
genOre(biome, 20, 0, 0, 128, ANDESITE, BlockHandler.ORE_COAL_ANDESITE.get().getDefaultState(), 17);
genOre(biome, 20, 0, 0, 64, ANDESITE, BlockHandler.ORE_IRON_ANDESITE.get().getDefaultState(), 9);
genOre(biome, 2, 0, 0, 32, ANDESITE, BlockHandler.ORE_GOLD_ANDESITE.get().getDefaultState(), 9);
genOre(biome, 1, 0, 0, 16, ANDESITE, BlockHandler.ORE_DIAMOND_ANDESITE.get().getDefaultState(), 8);
genOre(biome, 1, 0, 0, 16, ANDESITE, BlockHandler.ORE_EMERALD_ANDESITE.get().getDefaultState(), 4);
genOre(biome, 2, 0, 0, 16, ANDESITE, BlockHandler.ORE_LAPIS_ANDESITE.get().getDefaultState(), 7);
genOre(biome, 8, 0, 0, 16, ANDESITE, BlockHandler.ORE_REDSTONE_ANDESITE.get().getDefaultState(), 8);
genOre(biome, 20, 45, 0, 60, ANDESITE, BlockHandler.ORE_COPPER_ANDESITE.get().getDefaultState(), 7);
genOre(biome, 8, 50, 0, 70, ANDESITE, BlockHandler.ORE_ALUMINUM_ANDESITE.get().getDefaultState(), 3);
genOre(biome, 8, 30, 0, 38, ANDESITE, BlockHandler.ORE_SILVER_ANDESITE.get().getDefaultState(), 4);
genOre(biome, 8, 32, 0, 40, ANDESITE, BlockHandler.ORE_LEAD_ANDESITE.get().getDefaultState(), 3);
genOre(biome, 8, 25, 0, 40, ANDESITE, BlockHandler.ORE_NICKEL_ANDESITE.get().getDefaultState(), 3);
genOre(biome, 4, 5, 0, 20, ANDESITE, BlockHandler.ORE_URANIUM_ANDESITE.get().getDefaultState(), 3);
genOre(biome, 20, 20, 0, 45, ANDESITE, BlockHandler.ORE_OSMIUM_ANDESITE.get().getDefaultState(), 6);
genOre(biome, 20, 40, 0, 55, ANDESITE, BlockHandler.ORE_TIN_ANDESITE.get().getDefaultState(), 6);
genOre(biome, 8, 35, 0, 50, ANDESITE, BlockHandler.ORE_ZINC_ANDESITE.get().getDefaultState(), 4);
if(blockCreateGabbro != null) {
// Strata Ores - Gabbro
genOre(biome, 20, 0, 0, 128, CREATE_GABBRO, BlockHandler.ORE_COAL_GABBRO.get().getDefaultState(), 17);
genOre(biome, 20, 0, 0, 64, CREATE_GABBRO, BlockHandler.ORE_IRON_GABBRO.get().getDefaultState(), 9);
genOre(biome, 2, 0, 0, 32, CREATE_GABBRO, BlockHandler.ORE_GOLD_GABBRO.get().getDefaultState(), 9);
genOre(biome, 1, 0, 0, 16, CREATE_GABBRO, BlockHandler.ORE_DIAMOND_GABBRO.get().getDefaultState(), 8);
genOre(biome, 1, 0, 0, 16, CREATE_GABBRO, BlockHandler.ORE_EMERALD_GABBRO.get().getDefaultState(), 4);
genOre(biome, 2, 0, 0, 16, CREATE_GABBRO, BlockHandler.ORE_LAPIS_GABBRO.get().getDefaultState(), 7);
genOre(biome, 8, 0, 0, 16, CREATE_GABBRO, BlockHandler.ORE_REDSTONE_GABBRO.get().getDefaultState(), 8);
genOre(biome, 20, 45, 0, 60, CREATE_GABBRO, BlockHandler.ORE_COPPER_GABBRO.get().getDefaultState(), 7);
genOre(biome, 8, 50, 0, 70, CREATE_GABBRO, BlockHandler.ORE_ALUMINUM_GABBRO.get().getDefaultState(), 3);
genOre(biome, 8, 30, 0, 38, CREATE_GABBRO, BlockHandler.ORE_SILVER_GABBRO.get().getDefaultState(), 4);
genOre(biome, 8, 32, 0, 40, CREATE_GABBRO, BlockHandler.ORE_LEAD_GABBRO.get().getDefaultState(), 3);
genOre(biome, 8, 25, 0, 40, CREATE_GABBRO, BlockHandler.ORE_NICKEL_GABBRO.get().getDefaultState(), 3);
genOre(biome, 4, 5, 0, 20, CREATE_GABBRO, BlockHandler.ORE_URANIUM_GABBRO.get().getDefaultState(), 3);
genOre(biome, 20, 20, 0, 45, CREATE_GABBRO, BlockHandler.ORE_OSMIUM_GABBRO.get().getDefaultState(), 6);
genOre(biome, 20, 40, 0, 55, CREATE_GABBRO, BlockHandler.ORE_TIN_GABBRO.get().getDefaultState(), 6);
genOre(biome, 8, 35, 0, 50, CREATE_GABBRO, BlockHandler.ORE_ZINC_GABBRO.get().getDefaultState(), 4);
}
if(blockCreateLimestone != null) {
// Strata Ores - Limestone
genOre(biome, 20, 0, 0, 128, CREATE_LIMESTONE, BlockHandler.ORE_COAL_C_LIMESTONE.get().getDefaultState(), 17);
genOre(biome, 20, 0, 0, 64, CREATE_LIMESTONE, BlockHandler.ORE_IRON_C_LIMESTONE.get().getDefaultState(), 9);
genOre(biome, 2, 0, 0, 32, CREATE_LIMESTONE, BlockHandler.ORE_GOLD_C_LIMESTONE.get().getDefaultState(), 9);
genOre(biome, 1, 0, 0, 16, CREATE_LIMESTONE, BlockHandler.ORE_DIAMOND_C_LIMESTONE.get().getDefaultState(), 8);
genOre(biome, 1, 0, 0, 16, CREATE_LIMESTONE, BlockHandler.ORE_EMERALD_C_LIMESTONE.get().getDefaultState(), 4);
genOre(biome, 2, 0, 0, 16, CREATE_LIMESTONE, BlockHandler.ORE_LAPIS_C_LIMESTONE.get().getDefaultState(), 7);
genOre(biome, 8, 0, 0, 16, CREATE_LIMESTONE, BlockHandler.ORE_REDSTONE_C_LIMESTONE.get().getDefaultState(), 8);
genOre(biome, 20, 45, 0, 60, CREATE_LIMESTONE, BlockHandler.ORE_COPPER_C_LIMESTONE.get().getDefaultState(), 7);
genOre(biome, 8, 50, 0, 70, CREATE_LIMESTONE, BlockHandler.ORE_ALUMINUM_C_LIMESTONE.get().getDefaultState(), 3);
genOre(biome, 8, 30, 0, 38, CREATE_LIMESTONE, BlockHandler.ORE_SILVER_C_LIMESTONE.get().getDefaultState(), 4);
genOre(biome, 8, 32, 0, 40, CREATE_LIMESTONE, BlockHandler.ORE_LEAD_C_LIMESTONE.get().getDefaultState(), 3);
genOre(biome, 8, 25, 0, 40, CREATE_LIMESTONE, BlockHandler.ORE_NICKEL_C_LIMESTONE.get().getDefaultState(), 3);
genOre(biome, 4, 5, 0, 20, CREATE_LIMESTONE, BlockHandler.ORE_URANIUM_C_LIMESTONE.get().getDefaultState(), 3);
genOre(biome, 20, 20, 0, 45, CREATE_LIMESTONE, BlockHandler.ORE_OSMIUM_C_LIMESTONE.get().getDefaultState(), 6);
genOre(biome, 20, 40, 0, 55, CREATE_LIMESTONE, BlockHandler.ORE_TIN_C_LIMESTONE.get().getDefaultState(), 6);
genOre(biome, 8, 35, 0, 50, CREATE_LIMESTONE, BlockHandler.ORE_ZINC_C_LIMESTONE.get().getDefaultState(), 4);
}
if(blockCreateScoria != null) {
// Strata Ores - Scoria
genOre(biome, 20, 0, 0, 128, CREATE_SCORIA, BlockHandler.ORE_COAL_SCORIA.get().getDefaultState(), 17);
genOre(biome, 20, 0, 0, 64, CREATE_SCORIA, BlockHandler.ORE_IRON_SCORIA.get().getDefaultState(), 9);
genOre(biome, 2, 0, 0, 32, CREATE_SCORIA, BlockHandler.ORE_GOLD_SCORIA.get().getDefaultState(), 9);
genOre(biome, 1, 0, 0, 16, CREATE_SCORIA, BlockHandler.ORE_DIAMOND_SCORIA.get().getDefaultState(), 8);
genOre(biome, 1, 0, 0, 16, CREATE_SCORIA, BlockHandler.ORE_EMERALD_SCORIA.get().getDefaultState(), 4);
genOre(biome, 2, 0, 0, 16, CREATE_SCORIA, BlockHandler.ORE_LAPIS_SCORIA.get().getDefaultState(), 7);
genOre(biome, 8, 0, 0, 16, CREATE_SCORIA, BlockHandler.ORE_REDSTONE_SCORIA.get().getDefaultState(), 8);
genOre(biome, 20, 45, 0, 60, CREATE_SCORIA, BlockHandler.ORE_COPPER_SCORIA.get().getDefaultState(), 7);
genOre(biome, 8, 50, 0, 70, CREATE_SCORIA, BlockHandler.ORE_ALUMINUM_SCORIA.get().getDefaultState(), 3);
genOre(biome, 8, 30, 0, 38, CREATE_SCORIA, BlockHandler.ORE_SILVER_SCORIA.get().getDefaultState(), 4);
genOre(biome, 8, 32, 0, 40, CREATE_SCORIA, BlockHandler.ORE_LEAD_SCORIA.get().getDefaultState(), 3);
genOre(biome, 8, 25, 0, 40, CREATE_SCORIA, BlockHandler.ORE_NICKEL_SCORIA.get().getDefaultState(), 3);
genOre(biome, 4, 5, 0, 20, CREATE_SCORIA, BlockHandler.ORE_URANIUM_SCORIA.get().getDefaultState(), 3);
genOre(biome, 20, 20, 0, 45, CREATE_SCORIA, BlockHandler.ORE_OSMIUM_SCORIA.get().getDefaultState(), 6);
genOre(biome, 20, 40, 0, 55, CREATE_SCORIA, BlockHandler.ORE_TIN_SCORIA.get().getDefaultState(), 6);
genOre(biome, 8, 35, 0, 50, CREATE_SCORIA, BlockHandler.ORE_ZINC_SCORIA.get().getDefaultState(), 4);
}
}
}
private static void genOre(Biome biome, int count, int bottomOffset, int topOffset, int max, OreFeatureConfig.FillerBlockType filler, BlockState defaultBlockstate, int size) {
CountRangeConfig range = new CountRangeConfig(count, bottomOffset, topOffset, max);
OreFeatureConfig feature = new OreFeatureConfig(filler, defaultBlockstate, size);
ConfiguredPlacement config = Placement.COUNT_RANGE.configure(range);
biome.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE.withConfiguration(feature).withPlacement(config));
}
public static void genSedimentDisks(Biome biome, BlockState state, int radiusIn, int ySizeIn, List<BlockState> targetsIn, int count) {
SphereReplaceConfig sphere = new SphereReplaceConfig(state, radiusIn, ySizeIn, targetsIn);
FrequencyConfig frequency = new FrequencyConfig(count);
ConfiguredPlacement config = Placement.COUNT_TOP_SOLID.configure(frequency);
biome.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.DISK.withConfiguration(sphere).withPlacement(config));
}
private static void genStoneVariant(Biome biome, int count, int bottomOffset, int topOffset, int max, OreFeatureConfig.FillerBlockType filler, BlockState defaultBlockstate, int size) {
CountRangeConfig range = new CountRangeConfig(count, bottomOffset, topOffset, max);
OreFeatureConfig feature = new OreFeatureConfig(filler, defaultBlockstate, size);
ConfiguredPlacement config = Placement.COUNT_RANGE.configure(range);
biome.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE.withConfiguration(feature).withPlacement(config));
}
}
At the moment, I'm trying with this
biome.getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES).remove(Feature.ORE.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, Blocks.COAL_ORE.getDefaultState(), 17)));
but needless to say, that has failed.
I also found this topic:
which seems to be close to what I need, but I just couldn't figure out the solution code, or how to use it.
List<ConfiguredFeature> features = new ArrayList<ConfiguredFeature>();
for (ConfiguredFeature<?> f : biome.getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES)) {
if (((DecoratedFeatureConfig)f.config).feature.feature instanceof OreFeature) {
if (((OreFeatureConfig)((DecoratedFeatureConfig)f.config).feature.config).state.getBlock() == Blocks.IRON_ORE) {
features.add(f);
}
}
}
biome.getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES).removeAll(features);
Whenever I tried that, I kept getting an error on the <?> 'Wrong number of type argument'