summaryrefslogtreecommitdiffstats
path: root/source/Protocol/Protocol17x.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Protocol/Protocol17x.cpp')
-rw-r--r--source/Protocol/Protocol17x.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/source/Protocol/Protocol17x.cpp b/source/Protocol/Protocol17x.cpp
index 9e230bafd..78a55ccc0 100644
--- a/source/Protocol/Protocol17x.cpp
+++ b/source/Protocol/Protocol17x.cpp
@@ -215,7 +215,7 @@ void cProtocol172::SendDestroyEntity(const cEntity & a_Entity)
void cProtocol172::SendDisconnect(const AString & a_Reason)
{
cPacketizer Pkt(*this, 0x40);
- Pkt.WriteString(a_Reason);
+ Pkt.WriteString(EscapeString(a_Reason));
}
@@ -490,7 +490,7 @@ void cProtocol172::SendPlayerAbilities(void)
void cProtocol172::SendPlayerAnimation(const cPlayer & a_Player, char a_Animation)
{
cPacketizer Pkt(*this, 0x0b); // Animation packet
- Pkt.WriteInt(a_Player.GetUniqueID());
+ Pkt.WriteVarInt(a_Player.GetUniqueID());
Pkt.WriteChar(a_Animation);
}
@@ -503,7 +503,7 @@ void cProtocol172::SendPlayerListItem(const cPlayer & a_Player, bool a_IsOnline)
cPacketizer Pkt(*this, 0x38); // Playerlist Item packet
Pkt.WriteString(a_Player.GetName());
Pkt.WriteBool(a_IsOnline);
- Pkt.WriteShort(a_Player.GetClientHandle()->GetPing());
+ Pkt.WriteShort(a_IsOnline ? a_Player.GetClientHandle()->GetPing() : 0);
}
@@ -564,7 +564,7 @@ void cProtocol172::SendPlayerSpawn(const cPlayer & a_Player)
{
// Called to spawn another player for the client
cPacketizer Pkt(*this, 0x0c); // Spawn Player packet
- Pkt.WriteInt(a_Player.GetUniqueID());
+ Pkt.WriteVarInt(a_Player.GetUniqueID());
Pkt.WriteString(Printf("%d", a_Player.GetUniqueID())); // TODO: Proper UUID
Pkt.WriteString(a_Player.GetName());
Pkt.WriteFPInt(a_Player.GetPosX());
@@ -615,11 +615,9 @@ void cProtocol172::SendSoundParticleEffect(int a_EffectID, int a_SrcX, int a_Src
{
cPacketizer Pkt(*this, 0x28); // Effect packet
Pkt.WriteInt(a_EffectID);
- Pkt.WriteInt(a_SrcX);
- // TODO: Check if this is really an int
- // wiki.vg says it's a byte, but that wouldn't cover the entire range needed (Y location * 8 = 0..2048)
- Pkt.WriteInt(a_SrcY);
- Pkt.WriteInt(a_SrcZ);
+ Pkt.WriteInt(a_SrcX / 8);
+ Pkt.WriteByte(a_SrcY / 8);
+ Pkt.WriteInt(a_SrcZ / 8);
Pkt.WriteInt(a_Data);
Pkt.WriteBool(false);
}
@@ -1754,6 +1752,8 @@ void cProtocol172::cPacketizer::WriteMobMetadata(const cMonster & a_Mob)
WriteFloat((float)(a_Mob.GetHealth()));
WriteByte(0x13);
WriteByte(Wolf.IsBegging() ? 1 : 0);
+ WriteByte(0x14);
+ WriteByte(Wolf.GetCollarColor());
break;
}