Jumping/zh

跳跃是一个无须过多解释的基本机制.

触发
To start a jump, the player must have been on ground the previous tick. This is why the player is able to run off a block for 1 tick (e.g. with a headhitter timing) and still be able to jump.

When the Jump key is held, the player jumps at most once every 10 ticks (0.5s)


 * Holding jump is not optimal when going up by more than 0.75b per jump. (consequence: towering is faster when jumping manually)
 * Releasing jump resets the cooldown, making the player able to jump again on the next tick.

When a jump is initiated, the player's vertical speed is set to 0.42. On every following tick, it is decreased by 0.08 (gravity), then multiplied by 0.98 (drag).

Jumping in water or lava makes the player move upward.
 * When the player hits a ceiling, their vertical speed is set to 0 and they immediately start falling.
 * When the player hits the ground, their vertical speed is set to 0 and the  flag is set as true.

Jump Height
Prior to 1.9, the maximum jump height is 1.249b. It is increased in 1.9+ by ~0.003b, making the player able to jump 1.252b high.

On flat ground, a jump lasts 12 ticks (0.6s).

Speed
When combined with Sprinting, jumping adds 0.2 units of acceleration towards the player's facing.

In air, the player accelerates less quickly (only 20% of the base acceleration value), but conserves more speed (91% every tick, instead of 54.6%).

Therefore, sprint-jumping is a very efficient way to build and conserve speed.

Code
The following snippets of code deal with how jump is activated.