mojira.dev

Hunter M

Assigned

No issues.

Reported

MC-221447 root.scheduledExecutables causing rendering lag spike Awaiting Response MC-150053 Game Crash during World Generation - ConcurrentModificationExeption Duplicate MC-138221 View jumps when exiting from a boat onto the same boat Duplicate

Comments

Dhranios is wrong about this.  This is caused by the player's xo, yo, and zo variables being set to the updated position on teleport, which screws with the renderer's interpolation.  There isn't really a good fix other than hardcoding not to set these variables when the relative teleport amount is 0.  This is more of a feature request than a bug report.

Here are some issues 0.03 causes with the MOJANG anticheat (vanilla)

  • A player is standing and starts sneaking.  The player moves < 0.03 blocks and goes under a block over their head and releases shift.  They have the STANDING pose on the server and the CROUCHING pose on the client, which means that the vanilla anticheat will teleport the player for phasing into a block.

  • A player has a high speed potion and is on the corner of an object.  The player moves 0.03 blocks so they can move past this object.  They then go past this object.  The movement was 0.02, 0, 0.  Then the next movement was 0, 0, 0.6.  This causes issues because the server tries running ZX collision order (as Z > X), meaning the player tries to move 0.6 blocks in the Z direction, and then 0.02 blocks in the X direction.  This also causes the vanilla anticheat to teleport the player for phasing into a block.

  • A player moves slightly, places a block and fails client side because they are in it because of 0.03, while server side it places.  The player then runs through this block and falses phase on the vanilla anticheat once again.

 

Additionally, yes the client MUST send 20 movement packets a second in order to not cause desync's between the client and server, take for example.

  • Poses are done at the end of the tick.  This means the player can sneak on the client, and not send a movement packet.  They then move under a block, which the server gets the movement packet of.  Client sided when they move, they have the CROUCHING pose.  Server sided, they have the STANDING pose.  This falses phase as the player has two different poses as there is no packet indicating that the client ticked and changed their pose.

 

Sending an idle packet was done in 1.8, and worked well.  Both removing 0.03 and re-adding the idle movement packet is needed to fix desync's between the client and server.

This bug seems to occur because the client and server disagree on the client's position, because of this line in ClientPlayerEntity:

boolean flag1 = d4 * d4 + d0 * d0 + d1 * d1 > 9.0E-4D || this.positionReminder >= 20;

This stops the client sending small movements under 0.03 blocks to the server.  The easiest fix would be changing that line to this line:

boolean flag1 = d4 * d4 + d0 * d0 + d1 * d1 > 0 || this.positionReminder >= 20;

This would send all movements to the server and would prevent this desync.

 

Affects 1.17.1

I've seen the 0.03 thing cause a ton of issues such as with tridents and the status of being in water.  It would be great to have the 0.03 thing removed.

You need 105 megabytes of free storage to start minecraft.  You have 81 megabytes free.

This is still an issue on 1.16.5.  Hitting a player with a knockback 2 sword while the player is shifting on the edge of a block, hitting the player towards air.  Attached video is on a spigot server, but this issue also occurs on vanilla LAN server: https://www.youtube.com/watch?v=KU8On7tw9M0

This is not a duplicate of MC-162253 because it occurs even when the server has a patch that fixes this, and the issue occurs even when the client has the mod that fixes the other bug.

Screenshots taken on seed 4937013984516022960 at spawn with same view angle.  Game restarted after generating world and I waited for FPS to stabilize.  FPS decreased from 230 to 100 with this new update.