34

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?

8
  • 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. Nov 6, 2010 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, 2010 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" Nov 6, 2010 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, 2010 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, 2011 at 22:32

4 Answers 4

25
+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.

7
  • 7
    Did you typo turing complete or did a joke go over my head?
    – CruelCow
    Jul 26, 2011 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!" Jul 27, 2011 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 Yap
    Jul 27, 2011 at 5:33
  • 1
    @Christoper But you wrote turNing complete
    – CruelCow
    Jul 27, 2011 at 11:12
  • @CruelCow typeo corrected. Jul 27, 2011 at 11:19
5

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.

5
  • 1
    I think it's very unlikely that it is totally random.
    – clweeks
    Dec 7, 2010 at 14:04
  • Perhaps you should say "apparently" random.
    – ChrisF
    Dec 7, 2010 at 14:30
  • 4
    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, 2010 at 15:03
  • @ChrisF yes you are right, "apparently" fits better here thanks
    – Iceag
    Dec 8, 2010 at 13:24
  • 4
    If it sometimes takes in-game days, then even knowing the average will not be very helpful in creating an in-game calendar.. Dec 8, 2010 at 21:00
2

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.

7
  • It takes too long for measurement to work properly.
    – badp
    Nov 7, 2010 at 8:49
  • 1
    How does how long it take affect your ability to measure it?
    – Sparr
    Nov 12, 2010 at 10:14
  • 3
    He asked how long it takes, not how to find out how long it takes. Nov 14, 2010 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, 2010 at 17:09
  • 4
    You'd come back in the morning, measure the results and interpolate the rate. Right?
    – clweeks
    Dec 8, 2010 at 14:08
1

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .