Take the 2-minute tour ×
Arqade is a question and answer site for passionate videogamers on all platforms. It's 100% free, no registration required.

A line of dirt surrounded by water.

I've built those corridors that let me go across the lake. As I went back and forth on them to reach my mine and shelter, I noticed the grass slowly advancing over the area. This gave me a crazy idea for time tracking: the stochastic calendar.

To make sense of it all, however, I need this piece of information:

What is the rate at which sufficiently illuminated grass spreads on a single line?

If I built a dirt line long 30 blocks, with one block at one end covered in grass, how much time would it take on average for this stochastic calendar to be fully covered in grass?

share|improve this question
    
Unfortunately, I think it's variable. Fortunately, the code behind minecraft is floating around, so the possibility exists that you can get a definite answer. –  Raven Dreamer Nov 6 '10 at 20:24
    
@Raven variable as in the chance of the next tile becoming grass in the next tick changes based on biome/etc.? –  badp Nov 6 '10 at 20:30
    
@badp more like "every x amount of time in sunlight means a y% chance of grass to spread." As opposed to "after z time in sunlight, grass" –  Raven Dreamer Nov 6 '10 at 20:31
1  
@Raven that's exactly what I was thinking! If there's a y chance of grass appearing every ingame day, after x days grass will have advanced by xy tiles, on average. The higher the x, the more likely it is the actual time required is xy. –  badp Nov 6 '10 at 20:38
2  
Bit of an old post, but I just saw this on the forums.. It tracks the day night cycle and in theory could potentially be used for some form of calendar.. provided you had enough mushrooms :) minecraftforum.net/viewtopic.php?f=1020&t=165642 –  James Apr 27 '11 at 22:32

4 Answers 4

up vote 23 down vote accepted
+50

Watching grass grow will not help you tell the time.

Digging through the Minecraft source code to find an answer to your question revealed the following problems with calculating an average time for grass to grow:

  • It checks for grass two blocks in the North and East direction but only one block in the South and West. On the surface this appears to double the rate of growth depending on the direction your dirt column is oriented, but it is more complicated than this because the grass may actually skip a dirt block, creating random acceleration in the growth as well as a random interval.
  • The test for a nearby grass block to 'grow off' is from a randomly selected cube 4*4*6 blocks around the dirt block (it seems that grass grows downwards faster than any other direction. Interesting but irrelevant). You would need to provide a totally grass free area around the start of your dirt column EXCEPT for one grass block at the beginning of it, otherwise it will start off faster and then slow down. If the starting grass block decides to grow of it another direction you are back to square one with an uneven growth probability.
  • The actual time taken between these random checks is buried deep inside the Entity Renderer. Both the frame-rate (for every single frame for the duration of the growing period) and the rendering quality (from the option menu) will have a significant impact on how often it will check for a nearby grass block.

So what we have is a cascading series of random probabilities tied in with the rendering speed of your computer defining the 'average' speed that grass grows.

Okay, but what is the average time it takes grass to grow

After about 20 samples of the growth rate in game I calculated an average speed of one growth every 2 minutes 45 seconds. However, this figure is only accurate on my PC, was calculated by ignoring blocks that were way outside of the standard deviation (grew too fast or slow) and is a very rough approximation.

There is still hope!

So your hopes of telling time stochastically from grass are riddled with problems, but there are other methods of building giant in-game clocks. Since redstone repeaters are Turing complete and perfectly timed, it is entirely possible to build a fully functional clock in Minecraft.

share|improve this answer
7  
Did you typo turing complete or did a joke go over my head? –  CruelCow Jul 26 '11 at 16:37
    
@CruelCow There is a question on this. Also, there are plenty of youtube videos illustrating addition and branching which prove turning completeness. One of the splash screen messages even state "Turing complete!" –  Christopher Jul 27 '11 at 2:04
    
Very interesting. I find it intriguing that you found that the NE directions will check for two blocks. If you can absolutely confirm your findings, I think the Minecraft Wiki page is in need of an update. :) –  Kevin Y Jul 27 '11 at 5:33
    
@Christoper But you wrote turNing complete –  CruelCow Jul 27 '11 at 11:12
    
@CruelCow typeo corrected. –  Christopher Jul 27 '11 at 11:19

Poisson Process

http://en.wikipedia.org/wiki/Poisson_process

With a long enough row, you should be able to calculate time reasonably well assuming that grass growth is a homogenous Poisson process. It would need to be set up so it only has one direction to grow in, and that direction must be South or West.

It's probably easiest just to calibrate this empirically rather than trying to calculate it.

share|improve this answer

Tested this yesterday (wanted to know it aswell) and the result is:

It's apparently random

5 lines each with 10 blocks.

Some blocks began to spread grass after about 10secs others need several minutes or even (in game) days.

It seems that there is no scheme to when grass grows.

share|improve this answer
1  
I think it's very unlikely that it is totally random. –  clweeks Dec 7 '10 at 14:04
    
Perhaps you should say "apparently" random. –  ChrisF Dec 7 '10 at 14:30
3  
I know it is random -- that's why I'm asking about its average rate. Although, the variance here might be a problem indeed... –  badp Dec 7 '10 at 15:03
    
@ChrisF yes you are right, "apparently" fits better here thanks –  Iceag Dec 8 '10 at 13:24
3  
If it sometimes takes in-game days, then even knowing the average will not be very helpful in creating an in-game calendar.. –  BlueRaja - Danny Pflughoeft Dec 8 '10 at 21:00

Time it. Make something like a dozen long lanes of soil, then leave minecraft running and record the time it takes each one to get to the end. Then do some math to find the average time for each block.

share|improve this answer
    
It takes too long for measurement to work properly. –  badp Nov 7 '10 at 8:49
1  
How does how long it take affect your ability to measure it? –  Sparr Nov 12 '10 at 10:14
3  
He asked how long it takes, not how to find out how long it takes. –  StrixVaria Nov 14 '10 at 2:43
2  
Running it overnight implies you're not watching it. How could you measure it if you don't watch it? –  Jasarien Dec 7 '10 at 17:09
3  
You'd come back in the morning, measure the results and interpolate the rate. Right? –  clweeks Dec 8 '10 at 14:08

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.