天花板悬停
天花板悬停是一个能使玩家在天花板和有弹性的方块(史莱姆,或者 1.12 以上的床)之间空中“悬停”的故障。它可以通过跳入天花板执行(跳跃取消),使天花板下方 2.001b 的方块可以反弹。
解释
每当玩家与一个方块(地板或天花板)垂直碰撞时,游戏将应用碰撞物理。
对于几乎所有的方块来说,这意味着将垂直速度设为 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)
- 否则,会检查玩家的速度是否为负,然后将其反转。
请注意,如果玩家以某种方式以正速度移动(且没有潜行),则什么都不会发生。
实际上,这就是这个小故障的原因。
当游戏检测到垂直碰撞时,它会考虑在玩家位置下 0.2 米的方块应用碰撞物理(就算是天花板碰撞……)
让我们回顾一下1.8125bc天花板悬停设置的步骤:
- 在1.8125bc下跳跃会与玩家下方0.2米的方块发生垂直碰撞(在地面)
- 如果下方方块是黏液块,那么垂直速度不会设置为0,玩家仍然悬停在天花板下。
- 重复步骤(2),直到玩家的垂直速度由于重力而变为负值。
注意:这个小故障只会发生几Ticks,但是通过跳跃提升,持续的时间会更长。天花板悬停可以随时通过潜行中断。
结论
这个故障非常微不足道:它不会以任何方式破坏游戏,并且需要使用非常精准的设置