Nearly all video games (including Minecraft) are driven by one big program loop. Just as every gear in a clock is synchronized with the pendulum, every task involved in advancing a game simulation is synchronized with the game loop. Appropriately, one cycle of the game loop is called a tick.
Game tick[edit | edit source]
Minecraft's game loop normally runs at a fixed rate of 20 ticks per second, so one tick happens every 0.05 seconds. An in-game day lasts exactly 24000 ticks, or 20 minutes.
However, if the computer is unable to keep up with this speed, there will be fewer game ticks per unit time. As the vast majority of actions are timed based on tick count rather than on wall clock time, this means that many things will take longer on a slower computer.
On each tick, various aspects of the game advance a little bit: moving objects change position, mobs check their surroundings and update their behavior, health and hunger are affected by the player's circumstances, and much more.
One thing that does not happen as part of a tick is drawing graphics. Rendering happens after updating. This is why there can be a variance in fps (if vsync is not enabled) but the tps (ticks per second) will stay constant. This prevents video performance from affecting game mechanics, and vice-versa.
Note that a multiplayer server may be "slow" at initial startup; this is partially due to the java virtual machine taking longer by default to optimize java code at runtime.
Chunk tick[edit | edit source]
On every game tick, each chunk within the render distance of a player and with centers within 128 blocks of a player are ticked.
This may have various effects:
- If thunderstorming, lightning may strike somewhere in the chunk (1⁄100000 chance).
- 1⁄16 chance that one column is chosen for weather checks on the topmost block:
- A certain number of blocks within the chunk will receive random block ticks, as described below.
Block tick[edit | edit source]
Chunks are comprised of sixteen so-called sections, each one a 16×16×16 block cube. 3 block positions (or the number set by
/gamerule randomTickSpeed) are chosen at random from each section in the chunk. The blocks at those positions are given a "random block tick". Most blocks ignore this tick, but some use it to do something:
- Crops may grow or uproot.
- Mushrooms may spread or uproot.
- Vines may spread.
- Fire may burn out or spread.
- Ice and snow layers may melt.
- Leaves may decay.
- Farmland hydration is updated.
- Cacti, sugar cane and chorus flowers may grow.
- Grass blocks and mycelium may spread or turn to dirt.
- Saplings may grow into a tree.
- Lava may set fires nearby.
- Lit redstone ore will turn off.
- Nether portal blocks may spawn a zombie pigman.
Other blocks can request a tick sometime in the future. These "scheduled ticks" are used for things that have to happen in a predictable pattern—for instance, redstone repeaters will schedule a tick to change state and water will schedule a tick when it needs to move. A scheduled tick and a random tick may do different things on the same block.
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 seconds. That is, there is a 50% chance that the interval will be equal or shorter than 47 seconds, and a 50% chance it will be equal or longer than 47. However, sometimes it is much longer or shorter: for example, there is a 1% chance that the interval will be over five minutes. On average, blocks are updated every 68.27 seconds. For the math behind these numbers, see the Wikipedia entries for the Binomial and Poisson distributions.
The maximum number of block ticks per game tick is 65,536.
Redstone tick[edit | edit source]
A redstone tick describes two game ticks. This creates a 1/10 of a second delay in the signal of a redstone circuit. That is, the signal's time to travel from a location A to location B is increased by 0.1 seconds. A tick only pertains to the increase in signal time, thus, a signal's travel time can never be decreased in reference to ticks.