1
0

A client UUID is generated when the server is in offline mode.

1.7.9 client works with these changes in offline mode.
This commit is contained in:
madmaxoft
2014-04-14 20:21:00 +02:00
parent ffe65b6a18
commit d505ffc704
3 changed files with 40 additions and 5 deletions

View File

@@ -31,6 +31,8 @@
#include "CompositeChat.h"
#include "Items/ItemSword.h"
#include "md5/md5.h"
/** Maximum number of explosions to send this tick, server will start dropping if exceeded */
@@ -175,6 +177,28 @@ void cClientHandle::Destroy(void)
void cClientHandle::GenerateOfflineUUID(void)
{
// Proper format for a version 3 UUID is:
// xxxxxxxx-xxxx-3xxx-yxxx-xxxxxxxxxxxx where x is any hexadecimal digit and y is one of 8, 9, A, or B
// Generate an md5 checksum, and use it as base for the ID:
MD5 Checksum(m_Username);
m_UUID = Checksum.hexdigest();
m_UUID[12] = '3'; // Version 3 UUID
m_UUID[16] = '8'; // Variant 1 UUID
// Now the digest doesn't have the UUID slashes, but the client requires them, so add them into the appropriate positions:
m_UUID.insert(8, "-");
m_UUID.insert(13, "-");
m_UUID.insert(18, "-");
m_UUID.insert(23, "-");
}
void cClientHandle::Kick(const AString & a_Reason)
{
if (m_State >= csAuthenticating) // Don't log pings