summaryrefslogtreecommitdiffstats
path: root/src/Protocol/Protocol_1_9.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Protocol/Protocol_1_9.cpp')
-rw-r--r--src/Protocol/Protocol_1_9.cpp36
1 files changed, 28 insertions, 8 deletions
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();