Minecraft's collision physics is very simplistic in nature, yet it contains many glitches.
As a reminder, Minecraft's physics is updated 20 ticks per second. The player's movement and collisions are calculated once every tick.
Order of collisions and X/Z Facing
Movement is not checked linearly: instead, the game does # steps:
- Move the player along the Y axis until there is a vertical collision. In that last case, if the player's Y speed is negative,
- Move the player along the X axis until there is a horizontal collision.
- Move the player along the Z axis until there is a horizontal collision.
- If a horizontal collision was detected, we know a wall is blocking the player's path, but perhaps it's low enough that the player can simply.
- The game does another calculation to see if the player could go further when taking stepping into account.
- Otherwise, the wall is considered too tall to step onto.