天花板懸停

From Minecraft Parkour Wiki
Revision as of 11:39, 26 August 2021 by Pjx1314 (talk | contribs) (Created page with "* 如果玩家正在潜行,它将被视为常规碰撞(垂直移动设置为0) * 否则,它将检查玩家的速度是否为负,然后将其反转。")
Other languages:
在 1.8 中,這是唯一可用於執行天懸停的設置 (1.8125bc 下面有史萊姆)

Ceiling Hover is a glitch that makes the player "hover" between a ceiling and a bouncy block (slime, or beds since 1.12). It can be performed by jumping under a ceiling such that the block 2.001b below the ceiling has bouncing properties.




解釋

每當玩家與一個方塊(地板或天花板)垂直碰撞時,遊戲將應用碰撞物理。

對於幾乎每個方塊,這只是意味着將玩家的垂直速度設置為 0。

/* in class Block */
public void onVerticalCollision(Entity entityIn)
{
    entityIn.motionY = 0.0D;
}


但有一個例外:粘液塊(和 1.12+ 中的床)。

/* in class BlockSlime */
public void onVerticalCollision(Entity entityIn)
{
    if (entityIn.isSneaking())
        super.onVerticalCollision(entityIn);
    else if (entityIn.motionY < 0.0D)
        entityIn.motionY = -entityIn.motionY;
}


  • 如果玩家正在潛行,它將被視為常規碰撞(垂直移動設置為0)
  • 否則,它將檢查玩家的速度是否為負,然後將其反轉。


Note that nothing would happen if the player is somehow moving at a positive speed (and not sneaking).

In fact, that's exactly what happens with this glitch.


When the game detects a vertical collision, it will consider the block 0.2m under the player's position to apply collision physics (even for ceiling collisions...)


Let's review the steps for the 1.8125bc Ceiling Hover setup:

  1. Jumping under 1.8125bc applies vertical collision with the block 0.2m below the player (at ground level).
  2. If that block is a slime block, then vertical speed won't be set to 0, and the player remains suspended under the ceiling.
  3. Repeat step (2) until the player's vertical speed becomes negative due to gravity.


Note: This glitch happens for a few ticks, but with Jump Boost it would take longer. Ceiling hover can be interrupted at any time by sneaking.



Consequences

This glitch is pretty insignificant: it isn't game-breaking in any way, and requires very specific setups to be made use of.