Damage Boost/zh

伤害跳跃是一种机制，通过以某种方式受到伤害以提升跳跃高度.

本页面仍需要一个清晰的解释以及代码分析，但主要的想法列在此处.

玩家可以由自然因素受到伤害：摔落，火焰，仙人掌，药水等等……

有意思的是，溺水并不影响玩家的速度. 在旧版本的游戏中，溺水会不断地将玩家向下压而使他们困在水中. 但是在 1.8 中受到其他种类的伤害，例如药水，同样会使你面对这样的困境.

在跑酷服务器中通常会禁用伤害，但这个机制在其它地方有很大作用，例如速通跑酷地图.

介绍：
当受伤时，信息会通过数据包传递给服务器，然后再返回给玩家. 对于集成服务器（单人）和专用服务器（多人）都是如此. 在这个过程中，玩家的运动被修改：


 * 当玩家的速度与服务器同步时，玩家在受到伤害时保持近似相同的速度.


 * 当玩家的速度与服务器不同步时，玩家似乎会在受到伤害时加速，因为它是以预期的速度更新的.

目前还不清楚玩家的速度何时和如何失去同步，但这里有一些已知的情况：


 * 跑出一个方块，并在最后一刻跳跃


 * 跳到黏液块上


 * 从梯子上下来


 * 处于水中或岩浆中

我们怀疑，失去同步与 NetHandler 独立于移动代码调用 jump 方法有关.

注意：


 * 近似这个词特指由于双精度值在数据包中的储存方式，速度是以1/8000为单位向下取整的.
 * 自然原因造成的伤害与击退不同，击退是在玩家被实体击中时应用的.



同步伤害跳跃
https://youtu.be/oXZ4oFz_K1w

在与服务器同步的情况下受到伤害时可以保持玩家在下一刻的速度.

目的是利用这种速度守恒来保持尽可能多的向上速度，即跳跃最开始的速度（0.42m/t）. 在最佳情况下，跳跃高度的最大值达到约 1.6685 米，使玩家能跳上 1.625 格高的方块.



不同步时的伤害跳跃
https://youtu.be/9HxDTb4QNIc

不同步的伤害让玩家原地加速（实际上仅仅是玩家的速度被更新）. 通过在粘液块（或 1.12+ 中的床）上反弹，可以将向下加速度转为向上加速度.

需要注意的是，通过在方块边缘落地，玩家可以在粘液块上受到摔落伤害的同时反弹.

在非同步状态下受到伤害可能会产生尚未完全了解的其他影响. 特别是，玩家可能会从跳跃中过早落地，甚至激活假跳跃.



与跳跃提升的联动
https://youtu.be/FFvNmZ-Zssk

显然，跳跃提升效果可以与伤害跳跃相结合，以实现更高的跳跃或反弹. 但尚不清楚游戏如何处理超过 129 级的跳跃提升，因为这反而为跳跃带来负面影响. 其所涉及的确切机制仍不清楚.

此种情况下，当玩家跳跃或从跳跃中降落并受到伤害时，他们将以 3.9 m/t 的初始速度向上运动（该上限被硬编码到速度包中）.

具体来说，对于252 - 256级的跳跃提升，玩家可以跳跃，尽管初始速度较低. 在这种情况下，可以很容易地激活该故障.

注意： 129 - 249 级的跳跃提升仅通过在黏液块上跳跃就可起效，因为负速度会被转换成正向的垂直速度.