If you join with a newer version on an older server, via tries to simulate configuration stage. Via queues sent packets from the server whilst waiting for the configuration ack. This means we think the player has entered play stage due to the server sending JOIN_GAME and we send a bypassing viaversion packet, but this bypasses the viaversion queue, which means the client has in fact not entered play stage when they receive the packet...
If you join with a newer version on an older server, via tries to simulate configuration stage. Via queues sent packets from the server whilst waiting for the configuration ack. This means we think the player has entered play stage due to the server sending JOIN_GAME and we send a bypassing viaversion packet, but this bypasses the viaversion queue, which means the client has in fact not entered play stage when they receive the packet...
I spent months trying to fix this and gave up