mojira.dev

magicus

Assigned

No issues.

Reported

MC-178141 Piglin, hoglin, zoglin and zombified piglin desperately need better names Invalid

Comments

The solution though, seems simple enough. The replacement of the boat with planks and sticks is a remnant from a very old behavior. There is no need to check anything else apart from the onGround argument, and then always reset the fall distance, regardless of the value of this.status.

One could hope that a Minecraft engineer gets to spend a few minutes on fixing this.

I was intrigued by this. Adding to @Avoma's analysis, the problem is that there is a discrepancy between the 
onGround argument, which is true when the boat has landed, and this.status. The status is updated every tick, to either IN_AIR or ON_LAND (for the relevant problem; other values are possible otherwise).

So most of the time, we're entering checkFallDamage with onGround true, and the boat's status says it is in the air, so we reset the fall distance and do nothing else. But due to timing, in some situations the tick update has managed to set our status to ON_LAND, and we go on to do the "deal damage to passengers, replace boat with planks and sticks".

The correlation with heights is therefore more incidental; the real cause of when this happens is how the call to checkFallDamage correlates to how the last tick has set the status to ON_LAND.