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.

Featured Replies

Posted

Hi everyone! This is my first post here...

 

I'm trying to figure out how to overwrite or prevent vanilla tree generation so I can replace it with my own trees, which use vanilla wood/leaf blocks. I've already managed to figure out how to write my own tree generation and limit it to certain biomes:

 

tumblr_inline_onrn46Xq3p1r233f7_500.png

 

But as you can see in the screenshot, vanilla minecraft trees generate alongside mine. How can I prevent that and/or replace vanilla tree generation with my own? My assumption is that I need to iterate through the biome generation defaults and remove them or something...

 

I've done some research and I've found previous source code that used BiomeGenBase.getBiomeArray:

https://gitlab.prok.pw/Mirrors/SpongeCommon/commit/0ec7ffd0822d78ebbca0278939c6cda631faf62c?expand_all_diffs=1#3fef1ae77a8885b7b6135dc763b287f7902bddd0_64_65

But this no longer exists in 1.11.2.

 

I've also found GameRegistry.worldGenerators, which is where it would seem one would add moded biomes to the biome generation list, but it's private...

 

Can anyone help me out here?

 

Thanks! 

 

Edited by Riyoze

DecorateBiomeEvent.Decorate gets called for all vanilla chunk decoration. You can listen to the event and cancel it if the EventType is TREE. Doing so will prevent all vanilla trees from spawning.

Edited by TheMasterGabriel

  • Author

Whew! I spent all day on this and finally figured it out! Thank you for your help! :D

 

//In a new class called ModEventHandler:

@SubscribeEvent(receiveCanceled=true)
    public void onEvent(Decorate event){
        if(event.getType() == Decorate.EventType.TREE){
            event.setResult(Event.Result.DENY);
        }
    }

 

In my main class in the init method:

MinecraftForge.TERRAIN_GEN_BUS.register(new ModEventHandler());

 

It seems so easy now looking at the end result but I banged my head over this for hours. xD

57 minutes ago, Riyoze said:

(receiveCanceled=true)

 
 

You are a rare occurrence, as lots of people just try once, can't figure it out, and come back here in frustration. Thanks. As for that phrase, you don't need it. The Decorate event is not a cancelable event, so checking for receivedCanceled doesn't do anything.

Edited by TheMasterGabriel

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.