From 957ef3b2974991ca940fc8a78e518304377d8e6d Mon Sep 17 00:00:00 2001 From: faketruth Date: Thu, 1 Mar 2012 17:07:41 +0000 Subject: Started carefully moving to 1.2.2 Clients can get up to the login packet, after which the server tries to send chunks but in the wrong format and the client disconnects git-svn-id: http://mc-server.googlecode.com/svn/trunk@347 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cClientHandle.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'source/cClientHandle.cpp') diff --git a/source/cClientHandle.cpp b/source/cClientHandle.cpp index fbbe6b89d..11dbffa4c 100644 --- a/source/cClientHandle.cpp +++ b/source/cClientHandle.cpp @@ -89,7 +89,11 @@ cClientHandle::cClientHandle(const cSocket & a_Socket, int a_ViewDistance) : m_ViewDistance(a_ViewDistance) +#if (MINECRAFT_1_2_2 == 1) + , m_ProtocolVersion(28) +#else , m_ProtocolVersion(23) +#endif , m_Socket(a_Socket) , m_bDestroyed(false) , m_Player(NULL) @@ -288,7 +292,9 @@ void cClientHandle::Authenticate(void) LoginResponse.m_ProtocolVersion = m_Player->GetUniqueID(); //LoginResponse.m_Username = ""; LoginResponse.m_ServerMode = m_Player->GetGameMode(); // set gamemode from player. +#if (MINECRAFT_1_2_2 != 1) LoginResponse.m_MapSeed = cRoot::Get()->GetWorld()->GetWorldSeed(); +#endif LoginResponse.m_Dimension = 0; LoginResponse.m_MaxPlayers = (unsigned char)cRoot::Get()->GetWorld()->GetMaxPlayers(); LoginResponse.m_Difficulty = 2; @@ -620,7 +626,18 @@ void cClientHandle::HandlePing(void) void cClientHandle::HandleHandshake(cPacket_Handshake * a_Packet) { +#if (MINECRAFT_1_2_2 == 1) + AStringVector UserData = StringSplit( a_Packet->m_Username, ";" ); // "FakeTruth;localhost:25565" + if( UserData.size() == 0 ) + { + Kick("Could not receive username"); + return; + } + m_Username = UserData[0]; +#else m_Username = a_Packet->m_Username; +#endif + LOG("HANDSHAKE %s", m_Username.c_str()); if (cRoot::Get()->GetWorld()->GetNumPlayers() >= cRoot::Get()->GetWorld()->GetMaxPlayers()) @@ -1786,7 +1803,7 @@ void cClientHandle::CheckIfWorldDownloaded(void) return; } cCSLock Lock(m_CSChunkLists); - if (m_ChunksToSend.empty()) + if (m_ChunksToSend.size() < 4*4) { SendConfirmPosition(); } -- cgit v1.2.3