The bug
You can grow jungle and oak sapling with certain blocks above or around it. It will not remove the them but it will replace the sapling with the log and create leafs.
How to reproduce
Video demonstrating the issue: http://www.youtube.com/watch?v=eSZwNo37FQY
Code analysis
The following is based on a decompiled version of Minecraft 1.10 using MCP 9.30.
The reason for this is that the method net.minecraft.world.gen.feature.WorldGenAbstractTree.canGrowInto(Block)
allows a tree to generate even if one of the following blocks is in the way:
Block / Material 1 | Gets replaced |
---|---|
air (material) | Yes ✔ |
leaves (material) | Yes ✔ |
grass | No ✔ |
dirt | No ✔ |
log | Yes ❌ |
log2 | Yes ❌ |
sapling | No ✔ |
vine | Yes ✔ |
1 Multiple blocks can be out of the same material. For example "leaves" includes the blocks "leaves" and "leaves2"
Basically all blocks or materials with ❌ should be removed. Even though for logs it sounds reasonable having a oak tree with a single jungle log in the middle is pretty strange.
Linked issues
is duplicated by
relates to
Attachments
Comments
Confirmed in 13w18c.
Confirmed for 1.7.4, 1.7.5, 14w08a and 14w10c
Confirmed for 14w19a.
Confirmed for 14w20a and b.
Confirmed for 14w25b.
The attached image is the result of trees growing through a height limiter. Confirmed in 1.8.1 -pre4
Confirmed still in Minecraft version 1.8.
I tested to see if this happens with every block. The only blocks that the trees managed to grow through were dirt, grass, and oak tree leaves and wood. The trees were unable to grow through wood planks or cobble, so if you're making a tree farm and trying to limit tree size, use those materials.
16W06A Confirmed. This has plagued my vertical apple farm for years. If fixed, I'm willing to share it via Reddit. It has a secret dual purpose that's pretty cool....

Please link to this comment in the description
The following is based on a decompiled version of Minecraft 1.10 using MCP 9.30.
The reason for this is that the method net.minecraft.world.gen.feature.WorldGenAbstractTree.canGrowInto(Block)
allows a tree to generate even if one of the following blocks is in the way:
Block / Material 1 | Gets replaced |
---|---|
air (material) | ✔ |
leaves (material) | ✔ |
grass | ❌ |
dirt | ❌ |
log | ❌ |
log2 | ❌ |
sapling | ❌ |
vine | ✔ |
1 Multiple blocks can be out of the same material. For example "leaves" includes the blocks "leaves" and "leaves2"
Basically all blocks or materials with ❌ should be removed. Even though for logs it sounds reasonable having a oak tree with a single jungle log in the middle is pretty strange.
Confirmed for 1.13.1.

This no longer happens in 1.16. Not sure which version fixed it exactly. It does work in 1.15.2
Hi there!
This looks like it was fixed in 1.16 pre-release 3; I'll attach videos of prerelease 2 and 3 as evidence.

Can still reproduce in 1.16.1 and 20w28a using wooden logs.
[media][media]

Can't reproduce with some blocks in 1.16.1 and 20w28a, but with others I can.
Reopened based on user comments.
Can confirm in 20w48a.
Can confirm in 20w51a.
Can confirm in 21w03a.
Can confirm in 21w05b.
Can confirm in 21w06a.
Can confirm in 21w07a.
Can confirm in 21w11a.
Can confirm in 21w14a.
Can confirm in 21w17a.
Can confirm in 1.17.
Can confirm in 1.17.1.
Can confirm in 1.17.1.
Can confirm in 1.18.1.
Can confirm in 1.18.2.
Can confirm in 1.19.
Can confirm in 1.19.2.
Please do not mark unreleased versions as affected. You do not have access to this yet.