Jump to content

Recommended Posts

Posted (edited)

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
Posted (edited)

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
Posted

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

Posted (edited)
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...

×   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



×
×
  • Create New...

Important Information

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