Damage Boost/ja

ダメージブーストとは、何らかの方法でダメージを受けるとジャンプ力が上昇するという仕組みである.

明確な説明とソースコードの解析がなされていないため、このページには大筋を記載している.

プレイヤーは複数の種類の自然ダメージを受けることができる: 落下、炎上、サボテン、毒など.

興味深い点として、溺水ダメージは速度に影響を与えない. より古いバージョンでは、継続的に溺水ダメージを受け下方向に押されることで、水から抜け出せなくなることがあった. ただし、1.8でも毒などその他の種類のダメージによって、同様の問題に直面することがある.

アスレチックサーバーでは通常はダメージが無効化されているが、この仕組みはアスレチックマップのタイムアタックなどで非常に有用な場合がある.

導入:
When taking damage, the information is passed to the server through packets, and then back to the player. That is true for both integrated servers (Singleplayer) and dedicated servers (Multiplayer). In the process, the player's movement is modified:


 * When the player's velocity is synchronized with the server, the player keeps approximately the same speed when damaged.


 * When the player's velocity is desynchronized from the server, the player seemingly accelerates when damaged, because it is updated with the expected velocity.

It's not clear when and how the player's velocity gets desynchronized, but here are some known cases:


 * Running off a block and jumping at the last tick
 * Jumping on a slime block
 * Getting off a ladder
 * Being in water or lava

It's suspected that desynchronisation is linked to the fact that the NetHandler calls the jump method independently from the movement code.

注:


 * The phrase "approximately" captures the fact that speed is rounded by 1/8000 towards 0, due to how doubles are stored in the velocity packet
 * Damage taken from natural causes is not the same as knockback, which is applied when the player is hit by an entity.

同期型ダメージブースト
https://youtu.be/oXZ4oFz_K1w

Taking damage while synchronized with the server conserves the player's velocity over the next tick.

The idea is to use this speed conservation to maintain as much upward speed as possible, which is at the very start of a jump (0.42m/t). When done optimally, the peak of the jump reaches ~1.6685m, allowing the player to jump up 1.625 blocks.

非同期型ダメージブースト
https://youtu.be/9HxDTb4QNIc

Desynchronized damage makes the player "accelerate in place" (in reality the player's velocity is simply updated). This downward acceleration can be used by redirecting it the other way around by bouncing on a slime block (or a bed, in 1.12+).

Note that you can take fall damage on a slime block and still bounce, by landing on the outline of the block.

Taking damage in a desynchronized state can have other effects which have yet to be fully understood. In particular, the player can prematurely land from a jump, or even activate an artificial jump.

跳躍力上昇との相互作用
https://youtu.be/FFvNmZ-Zssk

Obviously, the jump boost effect can be combined with damage boost to jump or bounce even higher. What isn't obvious is how the game handles jump boost past level 129, which wraps around to become negative. The exact mechanics involved are still blurry.

In that case, when the player jumps or lands from a jump and takes damage, they can be be flung upwards, with up to 3.9 m/t of initial speed (this upper bound is hard-coded into the velocity packet).

Specifically, for jump boost levels 252 - 256, the player is able to jump, though with less initial speed. In this situation, the glitch can be activated very easily.

Note: jump boost levels 129 - 249 can be abused on slime blocks by simply jumping, as the negative speed is converted into a massive bounce.