Posted April 5, 20169 yr In 1.8 i used this to let a custom biome spawn in a world without making a new World Type WorldChunkManager.allowedBiomes.add(AppleForest); But in 1.9 i can't find the WorldChunkManager class. So how can i add a custom biome in the world? I'm using the Forge version 12.16.0.1767 Don't blame me if i always ask for your help. I just want to learn to be better
April 5, 20169 yr WorldChunkManager was renamed to BiomeProvider in 1.9. BiomeProvider#allowedBiomes doesn't control which biomes generate, it only controls which biomes can be used as the world spawn point. To allow a biome to generate, call BiomeManager.addBiome . To allow a biome to used as the world spawn point, call BiomeManager.addSpawnBiome . Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
April 5, 20169 yr Author Thanks for the quick answer Also is there an easy way to check if a biome has generated in the world? Just to avoid the "exploring world for 20 minutes found nothing so create a new world and see if i find it"? Don't blame me if i always ask for your help. I just want to learn to be better
April 5, 20169 yr BiomeProvider#findBiomePosition will try to find the position of one of the specified biomes in a fixed range around the starting coordinates and return null if none was found. Note that this uses the biomes that would currently generate at each position rather than the biomes that have already generated at each position. This is an important distinction if the world was generated with a different set of biomes to those currently registered. To check for biomes that have already generated, use World#getBiomeGenForCoords. BlockPos.getAllInBoxMutable can be used to create an Iterable<BlockPos> that iterates through every BlockPos between two positions. Edited February 21, 20178 yr by Choonster Fixed formatting errors caused by forum migration Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
April 7, 20169 yr Author Thanks for the answer. After generating several worlds it looks like the biome isn't spawing, even if it have a really high weight. Maybe i'm wrong registering it, this is the class i'm using for that package com.mineworld.core; import com.mineworld.world.WorldGenMinableMW; import com.mineworld.world.biomes.BiomeGenAppleForest; import com.mojang.realmsclient.util.RealmsTasks.WorldCreationTask; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.world.WorldManager; import net.minecraft.world.WorldProvider; import net.minecraft.world.WorldSettings; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.BiomeProvider; import net.minecraft.world.gen.ChunkProviderSettings; import net.minecraft.world.gen.feature.WorldGenerator; import net.minecraftforge.common.BiomeDictionary; import net.minecraftforge.common.BiomeDictionary.Type; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.common.BiomeManager.BiomeType; import net.minecraftforge.event.terraingen.ChunkGeneratorEvent; import net.minecraftforge.event.terraingen.WorldTypeEvent; import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.fml.common.registry.GameRegistry; public class MWWorld { public static BiomeGenBase appleForest; //Called by preInit public static void addComponents() { appleForest = new BiomeGenAppleForest(); } //Called by Init public static void registerComponents() { BiomeDictionary.registerBiomeType(appleForest, Type.FOREST); BiomeManager.addSpawnBiome(appleForest); } //Called by postInit public static void addBiomesToWorld() { BiomeManager.addBiome(BiomeType.WARM, new BiomeManager.BiomeEntry(appleForest,1000000000)); BiomeProvider.allowedBiomes.add(appleForest); } } And this is the biome class package com.mineworld.world.biomes; import java.util.Random; import com.mineworld.world.gen.feature.WorldGenAppleTree; import com.mineworld.world.gen.feature.WorldGenBigAppleTree; import net.minecraft.block.BlockDoublePlant; import net.minecraft.block.BlockFlower; import net.minecraft.entity.passive.EntityRabbit; import net.minecraft.entity.passive.EntityWolf; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.feature.WorldGenAbstractTree; import net.minecraft.world.gen.feature.WorldGenBigMushroom; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class BiomeGenAppleForest extends BiomeGenBase { protected static final WorldGenAppleTree worldGenAppleTree = new WorldGenAppleTree(false); protected static final WorldGenBigAppleTree worldGenBigAppleTree = new WorldGenBigAppleTree(false); public BiomeGenAppleForest() { super(new BiomeProperties("Apple Forest")); this.theBiomeDecorator.treesPerChunk = 10; this.theBiomeDecorator.grassPerChunk = 2; } public WorldGenAbstractTree genBigTreeChance(Random rand) { return (WorldGenAbstractTree) ((rand.nextInt(10) == 0 ? worldGenBigAppleTree : worldGenAppleTree)); } public void decorate(World worldIn, Random rand, BlockPos pos) { this.decorateBiome(worldIn, rand, pos); super.decorate(worldIn, rand, pos); } public void decorateBiome(World worldIn, Random rand, BlockPos pos) { for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { int k = i * 4 + 1 + 8 + rand.nextInt(3); int l = j * 4 + 1 + 8 + rand.nextInt(3); BlockPos blockpos = worldIn.getHeight(pos.add(k, 0, l)); WorldGenAbstractTree worldgenabstracttree = this.genBigTreeChance(rand); worldgenabstracttree.func_175904_e(); if (worldgenabstracttree.generate(worldIn, rand, blockpos)) { worldgenabstracttree.func_180711_a(worldIn, rand, blockpos); } } } } } Is there something wrong with this class? Because otherwise i can't undesrtand why a biome with that high probability of spawning doesn't spawn Don't blame me if i always ask for your help. I just want to learn to be better
April 7, 20169 yr You need to register your biome with GameRegistry.register in preInit, just like every other singleton class that implements IForgeRegistryEntry . Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
April 7, 20169 yr Author GameRegistry only allows me to register blocks, items, fuelhandler, worldgen and tileentity Don't blame me if i always ask for your help. I just want to learn to be better
April 7, 20169 yr If you're not using the latest version of Forge, update. Recent versions overhauled the registry system, adding the GameRegistry.register method to register any IForgeRegistryEntry object (e.g. Block , Item , BiomeGenBase ). Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
April 7, 20169 yr Author Thanks Upgrading has solved the problem But i also found a bug wich i'm gonna report in the related section Thanks for the help Don't blame me if i always ask for your help. I just want to learn to be better
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.