summaryrefslogtreecommitdiffstats
path: root/src/Protocol
diff options
context:
space:
mode:
Diffstat (limited to 'src/Protocol')
-rw-r--r--src/Protocol/Protocol.h1
-rw-r--r--src/Protocol/Protocol_1_8.cpp33
-rw-r--r--src/Protocol/Protocol_1_8.h1
-rw-r--r--src/Protocol/Protocol_1_9.cpp36
-rw-r--r--src/Protocol/Protocol_1_9.h1
5 files changed, 57 insertions, 15 deletions
diff --git a/src/Protocol/Protocol.h b/src/Protocol/Protocol.h
index 4f7590c2c..f1d85f014 100644
--- a/src/Protocol/Protocol.h
+++ b/src/Protocol/Protocol.h
@@ -422,6 +422,7 @@ public:
virtual void SendPlayerListUpdateGameMode (const cPlayer & a_Player) = 0;
virtual void SendPlayerListUpdatePing () = 0;
virtual void SendPlayerListUpdateDisplayName(const cPlayer & a_Player, const AString & a_CustomName) = 0;
+ virtual void SendPlayerMoveLook (Vector3d a_Pos, float a_Yaw, float a_Pitch, bool a_IsRelative) = 0;
virtual void SendPlayerMoveLook (void) = 0;
virtual void SendPlayerPermissionLevel (void) = 0;
virtual void SendPlayerPosition (void) = 0;
diff --git a/src/Protocol/Protocol_1_8.cpp b/src/Protocol/Protocol_1_8.cpp
index 7a3cd3b90..cbb13e68e 100644
--- a/src/Protocol/Protocol_1_8.cpp
+++ b/src/Protocol/Protocol_1_8.cpp
@@ -1136,18 +1136,37 @@ void cProtocol_1_8_0::SendPlayerListUpdatePing()
-void cProtocol_1_8_0::SendPlayerMoveLook(void)
+void cProtocol_1_8_0::SendPlayerMoveLook (const Vector3d a_Pos, const float a_Yaw, const float a_Pitch, const bool a_IsRelative)
{
ASSERT(m_State == 3); // In game mode?
cPacketizer Pkt(*this, pktPlayerMoveLook);
+ Pkt.WriteBEDouble(a_Pos.x);
+ Pkt.WriteBEDouble(a_Pos.y);
+ Pkt.WriteBEDouble(a_Pos.z);
+ Pkt.WriteBEFloat(a_Yaw);
+ Pkt.WriteBEFloat(a_Pitch);
+
+ if (a_IsRelative)
+ {
+ // Set all bits to 1 - makes everything relative
+ Pkt.WriteBEUInt8(static_cast<UInt8>(-1));
+ }
+ else
+ {
+ // Set all bits to 0 - make everything absolute
+ Pkt.WriteBEUInt8(0);
+ }
+}
+
+
+
+
+
+void cProtocol_1_8_0::SendPlayerMoveLook(void)
+{
cPlayer * Player = m_Client->GetPlayer();
- Pkt.WriteBEDouble(Player->GetPosX());
- Pkt.WriteBEDouble(Player->GetPosY());
- Pkt.WriteBEDouble(Player->GetPosZ());
- Pkt.WriteBEFloat(static_cast<float>(Player->GetYaw()));
- Pkt.WriteBEFloat(static_cast<float>(Player->GetPitch()));
- Pkt.WriteBEUInt8(0);
+ SendPlayerMoveLook(Player->GetPosition(), static_cast<float>(Player->GetYaw()), static_cast<float>(Player->GetPitch()), false);
}
diff --git a/src/Protocol/Protocol_1_8.h b/src/Protocol/Protocol_1_8.h
index 59dacbca0..eaa8813be 100644
--- a/src/Protocol/Protocol_1_8.h
+++ b/src/Protocol/Protocol_1_8.h
@@ -93,6 +93,7 @@ public:
virtual void SendPlayerListUpdateDisplayName(const cPlayer & a_Player, const AString & a_CustomName) override;
virtual void SendPlayerListUpdateGameMode (const cPlayer & a_Player) override;
virtual void SendPlayerListUpdatePing () override;
+ virtual void SendPlayerMoveLook (Vector3d a_Pos, float a_Yaw, float a_Pitch, bool a_IsRelative) override;
virtual void SendPlayerMoveLook (void) override;
virtual void SendPlayerPermissionLevel (void) override;
virtual void SendPlayerPosition (void) override;
diff --git a/src/Protocol/Protocol_1_9.cpp b/src/Protocol/Protocol_1_9.cpp
index 07ab4caf7..dd2133f77 100644
--- a/src/Protocol/Protocol_1_9.cpp
+++ b/src/Protocol/Protocol_1_9.cpp
@@ -466,18 +466,28 @@ void cProtocol_1_9_0::SendMapData(const cMap & a_Map, int a_DataStartX, int a_Da
-void cProtocol_1_9_0::SendPlayerMoveLook(void)
+void cProtocol_1_9_0::SendPlayerMoveLook (const Vector3d a_Pos, const float a_Yaw, const float a_Pitch, const bool a_IsRelative)
{
ASSERT(m_State == 3); // In game mode?
cPacketizer Pkt(*this, pktPlayerMoveLook);
- cPlayer * Player = m_Client->GetPlayer();
- Pkt.WriteBEDouble(Player->GetPosX());
- Pkt.WriteBEDouble(Player->GetPosY());
- Pkt.WriteBEDouble(Player->GetPosZ());
- Pkt.WriteBEFloat(static_cast<float>(Player->GetYaw()));
- Pkt.WriteBEFloat(static_cast<float>(Player->GetPitch()));
- Pkt.WriteBEUInt8(0);
+ Pkt.WriteBEDouble(a_Pos.x);
+ Pkt.WriteBEDouble(a_Pos.y);
+ Pkt.WriteBEDouble(a_Pos.z);
+ Pkt.WriteBEFloat(a_Yaw);
+ Pkt.WriteBEFloat(a_Pitch);
+
+ if (a_IsRelative)
+ {
+ // Set all bits to 1 - makes everything relative
+ Pkt.WriteBEUInt8(static_cast<UInt8>(-1));
+ }
+ else
+ {
+ // Set all bits to 0 - make everything absolute
+ Pkt.WriteBEUInt8(0);
+ }
+
Pkt.WriteVarInt32(++m_OutstandingTeleportId);
// This teleport ID hasn't been confirmed yet
@@ -488,6 +498,16 @@ void cProtocol_1_9_0::SendPlayerMoveLook(void)
+void cProtocol_1_9_0::SendPlayerMoveLook(void)
+{
+ cPlayer * Player = m_Client->GetPlayer();
+ SendPlayerMoveLook(Player->GetPosition(), static_cast<float>(Player->GetYaw()), static_cast<float>(Player->GetPitch()), false);
+}
+
+
+
+
+
void cProtocol_1_9_0::SendPlayerPermissionLevel()
{
const cPlayer & Player = *m_Client->GetPlayer();
diff --git a/src/Protocol/Protocol_1_9.h b/src/Protocol/Protocol_1_9.h
index 5f4bbed59..e56d7e2d2 100644
--- a/src/Protocol/Protocol_1_9.h
+++ b/src/Protocol/Protocol_1_9.h
@@ -51,6 +51,7 @@ public:
virtual void SendLeashEntity (const cEntity & a_Entity, const cEntity & a_EntityLeashedTo) override;
virtual void SendMapData (const cMap & a_Map, int a_DataStartX, int a_DataStartY) override;
virtual void SendPaintingSpawn (const cPainting & a_Painting) override;
+ virtual void SendPlayerMoveLook (Vector3d a_Pos, float a_Yaw, float a_Pitch, bool a_IsRelative) override;
virtual void SendPlayerMoveLook (void) override;
virtual void SendPlayerPermissionLevel() override;
virtual void SendPlayerSpawn (const cPlayer & a_Player) override;