-
Bug
-
Resolution: Fixed
-
Minecraft 1.8
-
None
-
doesn't matter
-
Unconfirmed
I dug into the minecraft source and found out that in the class PacketDataSerializer (Obfuscated class name: hd) the method writeVarLong (Obfuscated method name: public void b(long paramLong)) is using the same bitmask as the write variant int method (bitmask: 0xFFFFFF80) (Obfuscated method name: public void b(int paramInt)) but because a long has 64 bit in java this bitmask has to be (0xFFFFFFFFFFFFFF80l)
current source in 1.8
public void b(long paramLong) { for ( ; ; ) { if ((paramLong & 0xFFFFFF80) == 0L) { writeByte((int)paramLong); return; } writeByte((int)(paramLong & 0x7F) | 0x80); paramLong >>>= 7; } }
Solution
public void b(long paramLong) { for ( ; ; ) { if ((paramLong & 0xFFFFFFFFFFFFFF80l) == 0L) { writeByte((int)paramLong); return; } writeByte((int)(paramLong & 0x7F) | 0x80); paramLong >>>= 7; } }