Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

(Solved) [1.14.4] How do I add my custom biome to the default-worldtype?

Featured Replies

Posted

(Sorry for bad english)

Hey guys, I'm new here, please be lenient with me if I say something stupid. I'm currently working on a custom biome. In the Buffet-worldtype, I can choose my biome and it already works as I want. The only problem is, that it does not generate in the "default" world type. I'm pretty sure about that, because I made it generate the EndCity-structure in said biome, which I can find via /locate in the "Buffet-world", but I cannot find it in the "Default-world".

 

This is my custom biomes' class:

public class WetForestBiome extends WoodsBiome {
    public WetForestBiome() {
        super((new Biome.Builder()).surfaceBuilder(new ConfiguredSurfaceBuilder<SurfaceBuilderConfig>(SurfaceBuilder.DEFAULT, new SurfaceBuilderConfig(Blocks.GRASS_BLOCK.getDefaultState(), Blocks.DIRT.getDefaultState(), Blocks.DIRT.getDefaultState()))).precipitation(Biome.RainType.RAIN).category(Biome.Category.FOREST).depth(-0.05F).scale(0.1F).temperature(0.7F).downfall(0.8F).waterColor(0x007a49).waterFogColor(0x007a49).parent("forest"));
        this.addStructure(Feature.END_CITY, IFeatureConfig.NO_FEATURE_CONFIG);
        //some irrelevant this.addSpawn() and DefaultBiomeFeature features
   

 

This is the class above my custom biome (not sure how to say it in english)

public class WoodsBiome extends Biome {

    protected WoodsBiome(Builder biomeBuilder) {
        super(biomeBuilder);
    }

    public boolean doesMossGenerate(IWorldReader worldIn, BlockPos pos) { //I don't think this function is relevant for my problem but I'll leave it here ^^
        if (this.func_225486_c(pos) >= 0.15F) {
            return false;
        } else {
            BlockState blockstate = worldIn.getBlockState(pos);
            if (blockstate.isAir(worldIn, pos) && BlockList.moss.getDefaultState().isValidPosition(worldIn, pos)) {
                return true;
            }
            return true;
        }
    }
}

 

And this is my biomes class, where the biome is registered:

@net.minecraftforge.registries.ObjectHolder(WoodsMain.MOD_ID)
public class Biomes {
    public static Biome WET_FOREST_BIOME = new WetForestBiome();

    public static void registerBiomes() {
        registerBiome(WET_FOREST_BIOME, Type.FOREST);
    }

    public static void registerBiome(Biome biome, Type...types) {
        BiomeDictionary.addTypes(biome, types);
        BiomeManager.addSpawnBiome(biome);
    }

    static {
        Collections.addAll(Biome.BIOMES, WET_FOREST_BIOME);
    }
}

 

As I said, it completely works in Buffet-mode. How can I make it to be generated in normal Minecraft-worlds?

Do you need any more files/classes? Many thanks in advance for your effort :)

Best regards, Manu

 

Edit: forgot to say I'm using Forge 28.1.107 for Minecraft 1.14.4

Edited by PianoManu

  • Author

Nevermind, I found a solution.

I made a class with a setup() method (which I call in my main class)  that uses the BiomeManager.addBiome-function and it works now

 

public static void setup() {
    for(Biome biome : ForgeRegistries.BIOMES) {
        BiomeManager.addBiome(BiomeManager.BiomeType.WARM, new BiomeManager.BiomeEntry(BiomesList.WET_FOREST_BIOME, 20));
        BiomeManager.addSpawnBiome(BiomesList.WET_FOREST_BIOME);
        BiomeProvider.BIOMES_TO_SPAWN_IN.add(BiomesList.WET_FOREST_BIOME);
    }
}

Thanks Y'all, see you

  • 4 months later...
  • Author
On 1/27/2020 at 10:55 AM, Ommina said:

I'm... confused by this.  Why the loop?

 

To be honest, I don't know anymore why I used the loop. It's not necessary. I guess I was very tired when I created this :D

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

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.