diff options
author | Mattes D <github@xoft.cz> | 2014-06-08 21:58:08 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-06-08 21:58:30 +0200 |
commit | af4a21ea0689107b377818574cb07dc4a2e8b755 (patch) | |
tree | f4e6b11522a8c32ca9ae0b457d30bc893b18a653 /src/Protocol/Protocol125.cpp | |
parent | Added queue for adding entities to cWorld. (diff) | |
download | cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar.gz cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar.bz2 cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar.lz cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar.xz cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar.zst cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.zip |
Diffstat (limited to 'src/Protocol/Protocol125.cpp')
-rw-r--r-- | src/Protocol/Protocol125.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/Protocol/Protocol125.cpp b/src/Protocol/Protocol125.cpp index f3bdae3ac..491058919 100644 --- a/src/Protocol/Protocol125.cpp +++ b/src/Protocol/Protocol125.cpp @@ -133,7 +133,8 @@ typedef unsigned char Byte; cProtocol125::cProtocol125(cClientHandle * a_Client) : super(a_Client), - m_ReceivedData(32 KiB) + m_ReceivedData(32 KiB), + m_LastSentDimension(dimNotSet) { } @@ -591,6 +592,7 @@ void cProtocol125::SendLogin(const cPlayer & a_Player, const cWorld & a_World) WriteByte (0); // Unused WriteByte (60); // Client list width or something Flush(); + m_LastSentDimension = a_World.GetDimension(); } @@ -831,16 +833,23 @@ void cProtocol125::SendRemoveEntityEffect(const cEntity & a_Entity, int a_Effect -void cProtocol125::SendRespawn(void) +void cProtocol125::SendRespawn(const cWorld & a_World) { cCSLock Lock(m_CSPacket); + if (m_LastSentDimension == a_World.GetDimension()) + { + // Must not send a respawn for the world with the same dimension, the client goes cuckoo if we do + return; + } cPlayer * Player = m_Client->GetPlayer(); WriteByte (PACKET_RESPAWN); - WriteInt ((int)(Player->GetWorld()->GetDimension())); + WriteInt (a_World.GetDimension()); WriteByte (2); // TODO: Difficulty; 2 = Normal WriteChar ((char)Player->GetGameMode()); WriteShort (256); // Current world height WriteString("default"); + Flush(); + m_LastSentDimension = a_World.GetDimension(); } |