From 286a12f1429de98c6eb93f67821004b320374902 Mon Sep 17 00:00:00 2001 From: TechnoVisionDev Date: Sat, 11 Jul 2020 20:35:36 -0700 Subject: [PATCH] Ore Generation --- .../com/technovision/tutorial/Tutorial.java | 2 - .../tutorial/world/ModOreGen.java | 53 +++++++++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/technovision/tutorial/world/ModOreGen.java diff --git a/src/main/java/com/technovision/tutorial/Tutorial.java b/src/main/java/com/technovision/tutorial/Tutorial.java index 892cfe5..19f5980 100644 --- a/src/main/java/com/technovision/tutorial/Tutorial.java +++ b/src/main/java/com/technovision/tutorial/Tutorial.java @@ -1,10 +1,8 @@ package com.technovision.tutorial; import com.technovision.tutorial.util.RegistryHandler; -import net.minecraft.block.Blocks; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; diff --git a/src/main/java/com/technovision/tutorial/world/ModOreGen.java b/src/main/java/com/technovision/tutorial/world/ModOreGen.java new file mode 100644 index 0000000..93a447d --- /dev/null +++ b/src/main/java/com/technovision/tutorial/world/ModOreGen.java @@ -0,0 +1,53 @@ +package com.technovision.tutorial.world; + +import com.technovision.tutorial.Tutorial; +import com.technovision.tutorial.util.RegistryHandler; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.pattern.BlockMatcher; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.OreFeatureConfig; +import net.minecraft.world.gen.placement.ConfiguredPlacement; +import net.minecraft.world.gen.placement.CountRangeConfig; +import net.minecraft.world.gen.placement.Placement; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent; +import net.minecraftforge.registries.ForgeRegistries; + +@Mod.EventBusSubscriber(modid = Tutorial.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModOreGen { + + public static OreFeatureConfig.FillerBlockType END_STONE = OreFeatureConfig.FillerBlockType.create("END_STONE","end_stone", new BlockMatcher(Blocks.END_STONE)); + + @SubscribeEvent + public static void generateOres(FMLLoadCompleteEvent event) { + for (Biome biome : ForgeRegistries.BIOMES) { + + //World Generation + if (biome.getCategory() == Biome.Category.NETHER) { + genOre(biome, 15, 20, 5, 50, OreFeatureConfig.FillerBlockType.NETHERRACK, RegistryHandler.RUBY_BLOCK.get().getDefaultState(), 6); + + //End Generation + } else if (biome.getCategory() == Biome.Category.THEEND) { + genOre(biome, 15, 5, 5, 80, END_STONE, RegistryHandler.RUBY_BLOCK.get().getDefaultState(), 8); + + //Nether Generation + } else { + genOre(biome, 15, 5, 5, 80, OreFeatureConfig.FillerBlockType.NATURAL_STONE, RegistryHandler.RUBY_BLOCK.get().getDefaultState(), 12); + } + } + } + + private static void genOre(Biome biome, int count, int bottomOffset, int topOffset, int max, OreFeatureConfig.FillerBlockType filler, BlockState defaultBlockstate, int size) { + System.out.println("STARTING: " + biome.getCategory().getName()); + 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)); + System.out.println("FINISHED: " + biome.getCategory().getName()); + } + +}