The growth probability is 1/(floor(25/points) + 1)
However, this doesn't seem to apply to trees. Since, the point system used in that formula references features like, fertilized soil, which is not relavent to trees. Does anyone know where the formula is for trees? Assuming all conditions are met (light, space, ect) what is the formula for it to "grow" into a full tree?
found on the wiki for the tree :
All trees in the active chunk radius around the player make attempts to grow at random intervals. For any given tree this can work out to about 3 growth attempts per minute.
okay, so I now know it'll try roughly 3 times to grow - but this does not inform me the chance it'll grow.
Lets take best case scenario, open field, no obstruction, can grow at a regular/perfect rate.
the 1st attempt happens, it passes all growth requirements - now what is the chance this will follow through and grow completely is what I want to know.
The Wiki is incorrect about "3 growth attempts per minute" - every block receives a random block update on average once every 68.27 seconds:
Because random block ticks are granted randomly, there is no way to predict when a block will get its next tick. The median time between ticks is 47.35 seconds. That is, there is a 50% chance that the interval will be equal or shorter than 47.35 seconds, and a 50% chance it will be equal or longer than 47.35. However, sometimes it is much longer or shorter: for example, there is a 1.5% chance that the interval will be less than one second, and a 1% chance that the interval will be over five minutes. On average, blocks are updated every 68.27 seconds.
Each tick also has a 1/7 chance of successfully going to the next growth stage or attempting to grow a tree:
if (par1World.getBlockLightValue(par2, par3 + 1, par4) >= 9 && par5Random.nextInt(7) == 0)
this.markOrGrowMarked(par1World, par2, par3, par4, par5Random);
public void markOrGrowMarked(World par1World, int par2, int par3, int par4, Random par5Random)
int var6 = par1World.getBlockMetadata(par2, par3, par4);
if ((var6 & 8) == 0)
par1World.setBlockMetadataWithNotify(par2, par3, par4, var6 | 8, 4);
this.growTree(par1World, par2, par3, par4, par5Random);
Putting all of this together, a sapling takes an average of 68.27 * 2 * 7 = 955.78 seconds or about 16 minutes to grow into a tree, provided that the tree itself is able to grow (if height is restricted to less than the highest variant but more than the lowest variant only attempts which randomly choose a variant that is small enough will succeed; for example, oaks have a 1/10 chance of choosing a big oak variant so forcing only those to grow will take about 10 times longer to grow a tree).
Also, 2x2 trees take less time to grow (the Wiki claims that dark oaks grow faster than other trees, but so do big spruce and jungle) since any sapling can grow into a tree regardless of whether its neighbors are ready, though the time isn't 1/4 as long; I wrote a simple program that calculates the average time needed for a tree with x saplings to grow with the following results:
Tree with 1 saplings took an average of 13.989961 ticks to grow [about 16 minutes]
Minimum time was 2 ticks and maximum time was 120 ticks
Tree with 4 saplings took an average of 6.272572 ticks to grow [about 7 minutes]
Minimum time was 2 ticks and maximum time was 39 ticks
Tree with 9 saplings took an average of 4.289533 ticks to grow [about 5 minutes]
Minimum time was 2 ticks and maximum time was 21 ticks
3x3 trees do not exist in vanilla but I have them in my own mod, which is why they are included, and this shows that even with 9 saplings they still take more than 1/4 as long to grow as a single sapling. All times are in block ticks, times 68.27 seconds to get actual time. For nonstandard values of randomTickSpeed, multiply time by (3 / randomTickSpeed); e.g. setting it to 30 will result in 1/10 the time needed. Also, the same block can be ticked up to 3 times (or randomTickSpeed) in one game tick so it is possible for a sapling to grow within a single tick, 0.05 seconds.