diff --git a/MinecraftClient/Protocol/Handlers/Protocol18.cs b/MinecraftClient/Protocol/Handlers/Protocol18.cs index a9c42996..2f4c261e 100644 --- a/MinecraftClient/Protocol/Handlers/Protocol18.cs +++ b/MinecraftClient/Protocol/Handlers/Protocol18.cs @@ -1368,7 +1368,39 @@ namespace MinecraftClient.Protocol.Handlers /// The uuid private static Guid readNextUUID(List cache) { - return new Guid(readData(16, cache)); + byte[] javaUUID = readData(16, cache); + Guid guid; + if (BitConverter.IsLittleEndian) + { + guid = ToLittleEndian(javaUUID); + } + else + { + guid = new Guid(javaUUID); + } + return guid; + } + + /// + /// convert a Java big-endian Guid to a .NET little-endian Guid. + /// + /// GUID in little endian. + private static Guid ToLittleEndian(byte[] java) + { + byte[] net = new byte[16]; + for (int i = 8; i < 16; i++) + { + net[i] = java[i]; + } + net[3] = java[0]; + net[2] = java[1]; + net[1] = java[2]; + net[0] = java[3]; + net[5] = java[4]; + net[4] = java[5]; + net[6] = java[7]; + net[7] = java[6]; + return new Guid(net); } ///