summaryrefslogtreecommitdiffstats
path: root/src/Entities/Player.cpp
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2014-06-08 21:58:08 +0200
committerMattes D <github@xoft.cz>2014-06-08 21:58:30 +0200
commitaf4a21ea0689107b377818574cb07dc4a2e8b755 (patch)
treef4e6b11522a8c32ca9ae0b457d30bc893b18a653 /src/Entities/Player.cpp
parentAdded queue for adding entities to cWorld. (diff)
downloadcuberite-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.cpp18
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;