1
0

Added support for sending velocity and rotation in PACKET_SPAWN_MOB and PACKET_SPAWN_OBJECT

git-svn-id: http://mc-server.googlecode.com/svn/trunk@1427 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
keyboard.osh@gmail.com 2013-04-28 05:08:29 +00:00
parent 16370ff4eb
commit 9e38229b0d
3 changed files with 30 additions and 27 deletions

View File

@ -711,12 +711,14 @@ void cProtocol125::SendSpawnObject(const cEntity & a_Entity, char a_ObjectType,
WriteInt ((int)(a_Entity.GetPosX() * 32)); WriteInt ((int)(a_Entity.GetPosX() * 32));
WriteInt ((int)(a_Entity.GetPosY() * 32)); WriteInt ((int)(a_Entity.GetPosY() * 32));
WriteInt ((int)(a_Entity.GetPosZ() * 32)); WriteInt ((int)(a_Entity.GetPosZ() * 32));
WriteByte(a_Pitch);
WriteByte(a_Yaw);
WriteInt (a_ObjectData); WriteInt (a_ObjectData);
if (a_ObjectData != 0) if (a_ObjectData != 0)
{ {
WriteShort((short)a_Entity.GetSpeedX()); WriteShort((short)(a_Entity.GetSpeedX() * 400));
WriteShort((short)a_Entity.GetSpeedY()); WriteShort((short)(a_Entity.GetSpeedY() * 400));
WriteShort((short)a_Entity.GetSpeedZ()); WriteShort((short)(a_Entity.GetSpeedZ() * 400));
} }
Flush(); Flush();
} }
@ -734,10 +736,12 @@ void cProtocol125::SendSpawnVehicle(const cEntity & a_Vehicle, char a_VehicleTyp
WriteInt ((int)(a_Vehicle.GetPosX() * 32)); WriteInt ((int)(a_Vehicle.GetPosX() * 32));
WriteInt ((int)(a_Vehicle.GetPosY() * 32)); WriteInt ((int)(a_Vehicle.GetPosY() * 32));
WriteInt ((int)(a_Vehicle.GetPosZ() * 32)); WriteInt ((int)(a_Vehicle.GetPosZ() * 32));
WriteByte ((BYTE)((a_Vehicle.GetPitch() / 360.f) * 256));
WriteByte ((BYTE)((a_Vehicle.GetRotation() / 360.f) * 256));
WriteInt (1); WriteInt (1);
WriteShort(0); // TODO: SpeedX WriteShort((short)(a_Vehicle.GetSpeedX() * 400));
WriteShort(0); // TODO: SpeedY WriteShort((short)(a_Vehicle.GetSpeedY() * 400));
WriteShort(0); // TODO: SpeedZ WriteShort((short)(a_Vehicle.GetSpeedZ() * 400));
Flush(); Flush();
} }

View File

@ -406,12 +406,12 @@ void cProtocol132::SendSpawnMob(const cMonster & a_Mob)
WriteInt (a_Mob.GetUniqueID()); WriteInt (a_Mob.GetUniqueID());
WriteByte (a_Mob.GetMobType()); WriteByte (a_Mob.GetMobType());
WriteVectorI((Vector3i)(a_Mob.GetPosition() * 32)); WriteVectorI((Vector3i)(a_Mob.GetPosition() * 32));
WriteByte (0); // yaw WriteByte ((BYTE)((a_Mob.GetRotation() / 360.f) * 256));
WriteByte (0); // pitch WriteByte ((BYTE)((a_Mob.GetPitch() / 360.f) * 256));
WriteByte (0); // head yaw WriteByte ((BYTE)((a_Mob.GetHeadYaw() / 360.f) * 256));
WriteShort (0); // Velocity Z WriteShort ((short)(a_Mob.GetSpeedX() * 400));
WriteShort (0); // Velocity X WriteShort ((short)(a_Mob.GetSpeedY() * 400));
WriteShort (0); // Velocity Y WriteShort ((short)(a_Mob.GetSpeedZ() * 400));
AString MetaData = GetEntityMetaData(a_Mob); AString MetaData = GetEntityMetaData(a_Mob);
SendData (MetaData.data(), MetaData.size()); SendData (MetaData.data(), MetaData.size());
Flush(); Flush();

View File

@ -191,12 +191,12 @@ void cProtocol146::SendSpawnFallingBlock(const cFallingBlock & a_FallingBlock)
WriteInt ((int)(a_FallingBlock.GetPosX() * 32)); WriteInt ((int)(a_FallingBlock.GetPosX() * 32));
WriteInt ((int)(a_FallingBlock.GetPosY() * 32)); WriteInt ((int)(a_FallingBlock.GetPosY() * 32));
WriteInt ((int)(a_FallingBlock.GetPosZ() * 32)); WriteInt ((int)(a_FallingBlock.GetPosZ() * 32));
WriteByte (0); // Yaw
WriteByte (0); // Pitch WriteByte (0); // Pitch
WriteByte (0); // Yaw
WriteInt (a_FallingBlock.GetBlockType()); // data indicator = blocktype WriteInt (a_FallingBlock.GetBlockType()); // data indicator = blocktype
WriteShort(0); // SpeedX WriteShort((short)(a_FallingBlock.GetSpeedX() * 400));
WriteShort(0); // SpeedY WriteShort((short)(a_FallingBlock.GetSpeedY() * 400));
WriteShort(0); // SpeedZ WriteShort((short)(a_FallingBlock.GetSpeedZ() * 400));
Flush(); Flush();
} }
@ -213,15 +213,14 @@ void cProtocol146::SendSpawnObject(const cEntity & a_Entity, char a_ObjectType,
WriteInt ((int)(a_Entity.GetPosX() * 32)); WriteInt ((int)(a_Entity.GetPosX() * 32));
WriteInt ((int)(a_Entity.GetPosY() * 32)); WriteInt ((int)(a_Entity.GetPosY() * 32));
WriteInt ((int)(a_Entity.GetPosZ() * 32)); WriteInt ((int)(a_Entity.GetPosZ() * 32));
WriteByte(a_Pitch);
WriteByte(a_Yaw);
WriteInt (a_ObjectData); WriteInt (a_ObjectData);
if (a_ObjectData != 0) if (a_ObjectData != 0)
{ {
// TODO: Proper speed units WriteShort((short)(a_Entity.GetSpeedX() * 400));
WriteShort((short)a_Entity.GetSpeedX()); WriteShort((short)(a_Entity.GetSpeedY() * 400));
WriteShort((short)a_Entity.GetSpeedY()); WriteShort((short)(a_Entity.GetSpeedZ() * 400));
WriteShort((short)a_Entity.GetSpeedZ());
WriteByte(a_Yaw);
WriteByte(a_Pitch);
} }
Flush(); Flush();
} }
@ -239,12 +238,12 @@ void cProtocol146::SendSpawnVehicle(const cEntity & a_Vehicle, char a_VehicleTyp
WriteInt ((int)(a_Vehicle.GetPosX() * 32)); WriteInt ((int)(a_Vehicle.GetPosX() * 32));
WriteInt ((int)(a_Vehicle.GetPosY() * 32)); WriteInt ((int)(a_Vehicle.GetPosY() * 32));
WriteInt ((int)(a_Vehicle.GetPosZ() * 32)); WriteInt ((int)(a_Vehicle.GetPosZ() * 32));
WriteByte ((BYTE)((a_Vehicle.GetPitch() / 360.f) * 256));
WriteByte ((BYTE)((a_Vehicle.GetRotation() / 360.f) * 256));
WriteInt (1); WriteInt (1);
WriteShort(0); // TODO: SpeedX WriteShort((short)(a_Vehicle.GetSpeedX() * 400));
WriteShort(0); // TODO: SpeedY WriteShort((short)(a_Vehicle.GetSpeedY() * 400));
WriteShort(0); // TODO: SpeedZ WriteShort((short)(a_Vehicle.GetSpeedZ() * 400));
WriteByte (0); // TODO: Yaw
WriteByte (0); // TODO: Pitch
Flush(); Flush();
} }