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/Entities/Player.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/Entities/Player.cpp')
-rw-r--r-- | src/Entities/Player.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp index b83419903..feb09b5d2 100644 --- a/src/Entities/Player.cpp +++ b/src/Entities/Player.cpp @@ -940,6 +940,8 @@ void cPlayer::Killed(cEntity * a_Victim) void cPlayer::Respawn(void) { + ASSERT(m_World != NULL); + m_Health = GetMaxHealth(); SetInvulnerableTicks(20); @@ -952,7 +954,7 @@ void cPlayer::Respawn(void) m_LifetimeTotalXp = 0; // ToDo: send score to client? How? - m_ClientHandle->SendRespawn(); + m_ClientHandle->SendRespawn(*m_World); // Extinguish the fire: StopBurning(); @@ -1583,19 +1585,19 @@ bool cPlayer::MoveToWorld(const char * a_WorldName) return false; } - eDimension OldDimension = m_World->GetDimension(); - + // Send the respawn packet: + if (m_ClientHandle != NULL) + { + m_ClientHandle->SendRespawn(*World); + } + // Remove all links to the old world m_World->RemovePlayer(this); - m_ClientHandle->RemoveFromAllChunks(); - m_World->RemoveEntity(this); // If the dimension is different, we can send the respawn packet // http://wiki.vg/Protocol#0x09 says "don't send if dimension is the same" as of 2013_07_02 - m_ClientHandle->MoveToWorld(*World, (OldDimension != World->GetDimension())); - // Add player to all the necessary parts of the new world - World->AddEntity(this); + // Queue adding player to the new world, including all the necessary adjustments to the object World->AddPlayer(this); return true; |