summaryrefslogtreecommitdiffstats
path: root/src/Entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/Entities')
-rw-r--r--src/Entities/Entity.cpp5
-rw-r--r--src/Entities/Entity.h7
-rw-r--r--src/Entities/ProjectileEntity.cpp2
3 files changed, 10 insertions, 4 deletions
diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp
index c4fe1fffd..38443793e 100644
--- a/src/Entities/Entity.cpp
+++ b/src/Entities/Entity.cpp
@@ -1355,12 +1355,13 @@ void cEntity::DetectCacti(void)
-void cEntity::ScheduleMoveToWorld(cWorld * a_World, Vector3d a_NewPosition, bool a_SetPortalCooldown)
+void cEntity::ScheduleMoveToWorld(cWorld * a_World, Vector3d a_NewPosition, bool a_SetPortalCooldown, bool a_ShouldSendRespawn)
{
m_NewWorld = a_World;
m_NewWorldPosition = a_NewPosition;
m_IsWorldChangeScheduled = true;
m_WorldChangeSetPortalCooldown = a_SetPortalCooldown;
+ m_WorldChangeSendRespawn = a_ShouldSendRespawn;
}
@@ -1380,7 +1381,7 @@ bool cEntity::DetectPortal()
m_PortalCooldownData.m_ShouldPreventTeleportation = true;
}
- MoveToWorld(m_NewWorld, false, m_NewWorldPosition);
+ MoveToWorld(m_NewWorld, m_WorldChangeSendRespawn, m_NewWorldPosition);
return true;
}
diff --git a/src/Entities/Entity.h b/src/Entities/Entity.h
index ace2eb6d7..f39039183 100644
--- a/src/Entities/Entity.h
+++ b/src/Entities/Entity.h
@@ -306,6 +306,10 @@ public:
/** Exported in ManualBindings */
const Vector3d & GetSpeed(void) const { return m_Speed; }
+ /** Returns the last position we sent to all the clients. Use this to
+ initialize clients with our position. */
+ Vector3d GetLastSentPos(void) const { return m_LastSentPosition; }
+
/** Destroy the entity without scheduling memory freeing. This should only be used by cChunk or cClientHandle for internal memory management. */
void DestroyNoScheduling(bool a_ShouldBroadcast);
@@ -428,7 +432,7 @@ public:
virtual void TeleportToCoords(double a_PosX, double a_PosY, double a_PosZ);
/** Schedules a MoveToWorld call to occur on the next Tick of the entity */
- void ScheduleMoveToWorld(cWorld * a_World, Vector3d a_NewPosition, bool a_ShouldSetPortalCooldown = false);
+ void ScheduleMoveToWorld(cWorld * a_World, Vector3d a_NewPosition, bool a_ShouldSetPortalCooldown = false, bool a_ShouldSendRespawn = false);
bool MoveToWorld(cWorld * a_World, bool a_ShouldSendRespawn, Vector3d a_NewPosition);
@@ -592,6 +596,7 @@ protected:
/** State variables for ScheduleMoveToWorld. */
bool m_IsWorldChangeScheduled;
bool m_WorldChangeSetPortalCooldown;
+ bool m_WorldChangeSendRespawn;
cWorld * m_NewWorld;
Vector3d m_NewWorldPosition;
diff --git a/src/Entities/ProjectileEntity.cpp b/src/Entities/ProjectileEntity.cpp
index d1e101964..c2a1f782d 100644
--- a/src/Entities/ProjectileEntity.cpp
+++ b/src/Entities/ProjectileEntity.cpp
@@ -81,7 +81,7 @@ protected:
{
Vector3d Intersection = LineStart + m_Projectile->GetSpeed() * LineCoeff; // Point where projectile goes into the hit block
- if (cPluginManager::Get()->CallHookProjectileHitBlock(*m_Projectile, a_BlockX, a_BlockY, a_BlockZ, Face, &Intersection))
+ if (cPluginManager::Get()->CallHookProjectileHitBlock(*m_Projectile, a_BlockX, a_BlockY, a_BlockZ, Face, Intersection))
{
return false;
}