Jump to content

Recommended Posts

Posted

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 :)

Posted

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

.

  • Like 1

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.

Posted

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 :)

Posted (edited)
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#getBiomeGenForCoordsBlockPos.getAllInBoxMutable can be used to create an Iterable<BlockPos> that iterates through every BlockPos between two positions.

Edited 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.

Posted

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 :)

Posted

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.

Posted

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 :)

Posted

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

).

  • Like 1

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.

Posted

Thanks :D 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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • When I first heard about Bitcoin back in 2018, I was skeptical. The idea of a decentralized, digital currency seemed too good to be true. But I was intrigued as I learned more about the technology behind it and its potential. I started small, investing just a few hundred dollars, dipping my toes into the cryptocurrency waters. At first, it was exhilarating to watch the value of my investment grow exponentially. I felt like I was part of the future, an early adopter of this revolutionary new asset. But that euphoria was short-lived. One day, I logged into my digital wallet only to find it empty - my Bitcoin had vanished without a trace. It turned out that the online exchange I had trusted had been hacked, and my funds were stolen. I was devastated, both financially and emotionally. All the potential I had seen in Bitcoin was tainted by the harsh reality that with decentralization came a lack of regulation and oversight. My hard-earned money was gone, lost to the ether of the digital world. This experience taught me a painful lesson about the price of trust in the uncharted territory of cryptocurrency. While the technology holds incredible promise, the risks can be catastrophic if you don't approach it with extreme caution. My Bitcoin investment gamble had failed, and I was left to pick up the pieces, wiser but poorer for having placed my faith in the wrong hands. My sincere appreciation goes to MUYERN TRUST HACKER. You are my hero in recovering my lost funds. Send a direct m a i l ( muyerntrusted ( @ ) mail-me ( . )c o m ) or message on whats app : + 1 ( 4-4-0 ) ( 3 -3 -5 ) ( 0-2-0-5 )
    • You could try posting a log (if there is no log at all, it may be the launcher you are using, the FAQ may have info on how to enable the log) as described in the FAQ, however this will probably need to be reported to/remedied by the mod author.
    • So me and a couple of friends are playing with a shitpost mod pack and one of the mods in the pack is corail tombstone and for some reason there is a problem with it, where on death to fire the player will get kicked out of the server and the tombstone will not spawn basically deleting an entire inventory, it doesn't matter what type of fire it is, whether it's from vanilla fire/lava, or from modded fire like ice&fire/lycanites and it's common enough to where everyone on the server has experienced at least once or twice and it doesn't give any crash log. a solution to this would be much appreciated thank you!
    • It is 1.12.2 - I have no idea if there is a 1.12 pack
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.