Slipperiness/zh

Each block in the game has a Slipperiness factor, noted S. The greater is S, the slipperier the block becomes.

By default, a block's slipperiness is set to 0.6. This notably includes air, soulsand, cobwebs, and fluids.

In 1.8, the only blocks that have a different slipperiness are:


 * Ice and Packed Ice, S = 0.98
 * Slime Blocks, S = 0.8

In 1.13, another slippery block was added: Blue Ice, with a slipperiness of 0.989, making it the most slippery block in the game.

Effect on Movement
When moving, the player loses some speed in between ticks to simulate drag, and gains some acceleration.

When the player is on ground, drag and acceleration are calculated as so:


 * The amount of speed conserved on ground is scaled by $$0.91 \times S$$.
 * The acceleration gained on ground is proportional to $$\left ( \frac{0.6}{S} \right )^3$$.

When the player is airborne, slipperiness is ignored (see Movement Formulas)

Application
Every tick, if on ground, the game checks for the block directly 1b below the player's position to get the slipperiness.

This means that partial blocks are affected by the slipperiness of the block below them.

For example, the surface of a slab above Ice has the same slipperiness as the Ice itself.

Finally, we can explain how Soulsand is affected by slippery blocks:

Soulsand is a non-full block (14px in height), meaning it gets its slipperiness from the block below it.

Let's consider the effects at work:


 * Slippery blocks grant less acceleration.
 * Soulsand reduces speed conservation.

These two effects combined create an net negative impact on the player's movement, compared to regular Soulsand movement.

Therefore, walking on soulsand with ice below is noticeably slower.

Changes
In 1.15, slipperiness is now taken 0.5m below the Player (instead of 1.0m). This means soulsand is no longer affected by slipperiness, among other blocks.


 * A slab (0.5b height) is still affected by slippery blocks.
 * A bed (0.5625b height) is no longer affected by slippery blocks.