From 732b7349faa4ee78fee8da151db47853143c48fd Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Sat, 10 Mar 2012 19:30:06 +0000 Subject: Fixed mob spawn packet for 1.2 client, now client doesn't bail out when mobs are turned on git-svn-id: http://mc-server.googlecode.com/svn/trunk@393 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cChunk.cpp | 5 +++-- source/packets/cPacket_SpawnMob.cpp | 11 +++++++---- source/packets/cPacket_SpawnMob.h | 3 +-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/source/cChunk.cpp b/source/cChunk.cpp index 9d0fc8bdf..f56584cbf 100644 --- a/source/cChunk.cpp +++ b/source/cChunk.cpp @@ -257,8 +257,9 @@ void cChunk::SetAllData(const char * a_BlockData, cEntityList & a_Entities, cBlo m_PosX, m_PosZ ); - // Assert because this is a very curious case. These lines were executed once before, when a player died, re spawned, and walked around a bit. It's uncertain why an entity would be in the chunk in this case. - ASSERT(!"Unexpected entity in chunk!"); + // MD 2012_03_10: This may happen if a mob is generated near the edge of loaded chunks and walks off of the edge. + // Older: Assert because this is a very curious case. These lines were executed once before, when a player died, re spawned, and walked around a bit. It's uncertain why an entity would be in the chunk in this case. + // ASSERT(!"Unexpected entity in chunk!"); (*itr)->Destroy(); } diff --git a/source/packets/cPacket_SpawnMob.cpp b/source/packets/cPacket_SpawnMob.cpp index ba0029dd3..d3f1850b3 100644 --- a/source/packets/cPacket_SpawnMob.cpp +++ b/source/packets/cPacket_SpawnMob.cpp @@ -26,6 +26,7 @@ cPacket_SpawnMob::cPacket_SpawnMob() , m_Pitch( 0 ) , m_MetaDataSize( 0 ) , m_MetaData( 0 ) + , m_HeadYaw(0) { m_PacketID = E_SPAWN_MOB; } @@ -40,10 +41,11 @@ cPacket_SpawnMob::cPacket_SpawnMob( const cPacket_SpawnMob & a_Clone ) m_PacketID = E_SPAWN_MOB; m_UniqueID = a_Clone.m_UniqueID; - m_Type = a_Clone.m_Type; - *m_Pos = *a_Clone.m_Pos; - m_Yaw = a_Clone.m_Yaw; - m_Pitch = a_Clone.m_Pitch; + m_Type = a_Clone.m_Type; + *m_Pos = *a_Clone.m_Pos; + m_Yaw = a_Clone.m_Yaw; + m_Pitch = a_Clone.m_Pitch; + m_HeadYaw = a_Clone.m_HeadYaw; m_MetaDataSize = a_Clone.m_MetaDataSize; m_MetaData = new char[m_MetaDataSize]; @@ -64,6 +66,7 @@ void cPacket_SpawnMob::Serialize(AString & a_Data) const AppendInteger (a_Data, m_Pos->z); AppendByte (a_Data, m_Yaw); AppendByte (a_Data, m_Pitch); + AppendByte (a_Data, m_HeadYaw); AppendData (a_Data, m_MetaData, m_MetaDataSize); } diff --git a/source/packets/cPacket_SpawnMob.h b/source/packets/cPacket_SpawnMob.h index 8a1ef2264..ff579af99 100644 --- a/source/packets/cPacket_SpawnMob.h +++ b/source/packets/cPacket_SpawnMob.h @@ -28,8 +28,7 @@ public: Vector3i* m_Pos; char m_Yaw; char m_Pitch; - - static const unsigned int c_Size = 1 + 4 + 1 + 4 + 4 + 4 + 1 + 1; // + metadata + char m_HeadYaw; unsigned int m_MetaDataSize; char * m_MetaData; -- cgit v1.2.3