Riyoze Posted April 2, 2017 Posted April 2, 2017 (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: 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 April 2, 2017 by Riyoze Quote
TheMasterGabriel Posted April 2, 2017 Posted April 2, 2017 (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 April 2, 2017 by TheMasterGabriel Quote
Riyoze Posted April 3, 2017 Author Posted April 3, 2017 Whew! I spent all day on this and finally figured it out! Thank you for your help! //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. Quote
TheMasterGabriel Posted April 3, 2017 Posted April 3, 2017 (edited) On 4/3/2017 at 2:44 AM, Riyoze said: (receiveCanceled=true) Expand 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 April 3, 2017 by TheMasterGabriel Quote
Recommended Posts
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.