Collisions

From Minecraft Parkour Wiki
Revision as of 11:41, 23 May 2021 by MCPK (talk | contribs) (completed text, visuals needed)

Minecraft's collision physics is very simplistic, yet it contains many glitches.

Instead of ray-tracing the collisions, the game simply moves the player sequentially along each axis.

As a reminder, Minecraft's physics is updated 20 ticks per second. The player's movement and collisions are updated once per tick.


Order of collisions

Every tick, after the player's velocity has been updated, the game does these steps to check collisions:

  • Move the player along the Y axis. If a vertical collision is detected when falling, the player is now considered to be on ground.
  • Move the player along the X axis.
  • Move the player along the Z axis.
  • If the player is on ground and collided with a wall, perhaps they could step on top of it (e.g. if the wall is just a slab).
    • See Stepping for explanations and visuals.
    • This mechanic is responsible for Blips and Jump-Cancel, and their glitched variants.

Vertical Collisions

Vertical movement is processed before horizontal movement. Due to this:

  • The player is able to jump one tick after running off a block. In particular, this is why headhitter timing works.
  • To land on a block, the player must be above its surface on the final tick of the jump.

X/Z Facing

Due to the X axis being processed before the Z axis, they are fundamentally asymetric: it's important to distinguish "X-facing" jumps from "Z-facing" ones.

  • X-facing refers to jumps that point towards East/West.
  • Z-facing refers to jumps that point towards North/South.


Players tend to find Z-facing neos more intuitive, but X-facing neos can actually be a bit easier:

  • Z-facing neos are very similar to linear jumps. To convert a neo to its equivalent, simply add 1.2 to its distance and increase its tier by one. For example, a triple neo is equivalent to a "4.2+0.25" (which cannot be built, but this sort of comparison is useful for analysis)
  • X-facing neos don't have a linear equivalent. Compared to Z-facing neos, they are "shifted" by 1 tick (wall collision begins and ends 1 tick earlier). This shift reduces the momentum, but makes it more efficient as the player typically has more speed at the end of their jump than at the start.

Some jumps are only possible when facing one axis or the other.

The axis of a jump can be checked with F3.

1.14+

In 1.14, the collision physics were updated. The collision order now depends on the player's velocity:

  • If the player has more Z speed than X speed, the collision order is Y-X-Z.
  • Otherwise, the collision order is Y-Z-X.

In most cases, all collisions now resemble X-facing. Some jumps which involve cutting corners may become very different compared to pre-1.14.