diff --git a/GNUmakefile b/GNUmakefile index f398f5506..7db43d74c 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -89,7 +89,6 @@ INCLUDE = -I.\ -Isource\ -Isource/md5\ -IWebServer\ - -Isource/packets\ -Isource/items\ -Isource/blocks\ -Itolua++-1.0.93/src/lib\ diff --git a/VC2008/MCServer.vcproj b/VC2008/MCServer.vcproj index 87d6df320..74dc07322 100644 --- a/VC2008/MCServer.vcproj +++ b/VC2008/MCServer.vcproj @@ -756,182 +756,6 @@ RelativePath="..\source\Vector3i.h" > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/source/AllToLua.pkg b/source/AllToLua.pkg index 7a81ff919..71d9cecb5 100644 --- a/source/AllToLua.pkg +++ b/source/AllToLua.pkg @@ -13,7 +13,6 @@ $cfile "cVine.h" $cfile "../iniFile/iniFile.h" $cfile "BlockID.h" -$cfile "PacketID.h" $cfile "Defines.h" $cfile "LuaFunctions.h" $cfile "cStringMap.h" diff --git a/source/Bindings.cpp b/source/Bindings.cpp index 9b356ab5f..0e5803dd6 100644 --- a/source/Bindings.cpp +++ b/source/Bindings.cpp @@ -1,6 +1,6 @@ /* ** Lua binding: AllToLua -** Generated automatically by tolua++-1.0.92 on 08/27/12 16:12:30. +** Generated automatically by tolua++-1.0.92 on 08/29/12 22:33:21. */ #ifndef __cplusplus @@ -22,7 +22,6 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S); #include "cVine.h" #include "../iniFile/iniFile.h" #include "BlockID.h" -#include "PacketID.h" #include "Defines.h" #include "LuaFunctions.h" #include "cStringMap.h" @@ -6650,9 +6649,9 @@ static int tolua_AllToLua_cPlayer_TossItem00(lua_State* tolua_S) { cPlayer* self = (cPlayer*) tolua_tousertype(tolua_S,1,0); bool a_bDraggingItem = ((bool) tolua_toboolean(tolua_S,2,0)); - int a_Amount = ((int) tolua_tonumber(tolua_S,3,1)); - int a_CreateType = ((int) tolua_tonumber(tolua_S,4,0)); - int a_CreateHealth = ((int) tolua_tonumber(tolua_S,5,0)); + char a_Amount = ((char) tolua_tonumber(tolua_S,3,1)); + short a_CreateType = ((short) tolua_tonumber(tolua_S,4,0)); + short a_CreateHealth = ((short) tolua_tonumber(tolua_S,5,0)); #ifndef TOLUA_RELEASE if (!self) tolua_error(tolua_S,"invalid 'self' in function 'TossItem'", NULL); #endif @@ -21100,61 +21099,6 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S) tolua_constant(tolua_S,"E_META_SPAWN_EGG_IRON_GOLEM",E_META_SPAWN_EGG_IRON_GOLEM); tolua_function(tolua_S,"BlockStringToType",tolua_AllToLua_BlockStringToType00); tolua_function(tolua_S,"StringToItem",tolua_AllToLua_StringToItem00); - tolua_constant(tolua_S,"E_KEEP_ALIVE",E_KEEP_ALIVE); - tolua_constant(tolua_S,"E_LOGIN",E_LOGIN); - tolua_constant(tolua_S,"E_HANDSHAKE",E_HANDSHAKE); - tolua_constant(tolua_S,"E_CHAT",E_CHAT); - tolua_constant(tolua_S,"E_UPDATE_TIME",E_UPDATE_TIME); - tolua_constant(tolua_S,"E_ENTITY_EQUIPMENT",E_ENTITY_EQUIPMENT); - tolua_constant(tolua_S,"E_USE_ENTITY",E_USE_ENTITY); - tolua_constant(tolua_S,"E_UPDATE_HEALTH",E_UPDATE_HEALTH); - tolua_constant(tolua_S,"E_RESPAWN",E_RESPAWN); - tolua_constant(tolua_S,"E_FLYING",E_FLYING); - tolua_constant(tolua_S,"E_PLAYERPOS",E_PLAYERPOS); - tolua_constant(tolua_S,"E_PLAYERLOOK",E_PLAYERLOOK); - tolua_constant(tolua_S,"E_PLAYERMOVELOOK",E_PLAYERMOVELOOK); - tolua_constant(tolua_S,"E_BLOCK_DIG",E_BLOCK_DIG); - tolua_constant(tolua_S,"E_BLOCK_PLACE",E_BLOCK_PLACE); - tolua_constant(tolua_S,"E_SLOT_SELECTED",E_SLOT_SELECTED); - tolua_constant(tolua_S,"E_ITEM_SWITCH",E_ITEM_SWITCH); - tolua_constant(tolua_S,"E_ADD_TO_INV",E_ADD_TO_INV); - tolua_constant(tolua_S,"E_ANIMATION",E_ANIMATION); - tolua_constant(tolua_S,"E_PACKET_ENTITY_ACTION",E_PACKET_ENTITY_ACTION); - tolua_constant(tolua_S,"E_NAMED_ENTITY_SPAWN",E_NAMED_ENTITY_SPAWN); - tolua_constant(tolua_S,"E_PICKUP_SPAWN",E_PICKUP_SPAWN); - tolua_constant(tolua_S,"E_COLLECT_ITEM",E_COLLECT_ITEM); - tolua_constant(tolua_S,"E_ADD_VEHICLE",E_ADD_VEHICLE); - tolua_constant(tolua_S,"E_SPAWN_MOB",E_SPAWN_MOB); - tolua_constant(tolua_S,"E_DESTROY_ENT",E_DESTROY_ENT); - tolua_constant(tolua_S,"E_ENTITY",E_ENTITY); - tolua_constant(tolua_S,"E_REL_ENT_MOVE",E_REL_ENT_MOVE); - tolua_constant(tolua_S,"E_ENT_LOOK",E_ENT_LOOK); - tolua_constant(tolua_S,"E_REL_ENT_MOVE_LOOK",E_REL_ENT_MOVE_LOOK); - tolua_constant(tolua_S,"E_ENT_TELEPORT",E_ENT_TELEPORT); - tolua_constant(tolua_S,"E_ENT_HEAD_LOOK",E_ENT_HEAD_LOOK); - tolua_constant(tolua_S,"E_ENT_STATUS",E_ENT_STATUS); - tolua_constant(tolua_S,"E_METADATA",E_METADATA); - tolua_constant(tolua_S,"E_PRE_CHUNK",E_PRE_CHUNK); - tolua_constant(tolua_S,"E_MAP_CHUNK",E_MAP_CHUNK); - tolua_constant(tolua_S,"E_MULTI_BLOCK",E_MULTI_BLOCK); - tolua_constant(tolua_S,"E_BLOCK_CHANGE",E_BLOCK_CHANGE); - tolua_constant(tolua_S,"E_BLOCK_ACTION",E_BLOCK_ACTION); - tolua_constant(tolua_S,"E_EXPLOSION",E_EXPLOSION); - tolua_constant(tolua_S,"E_SOUND_EFFECT",E_SOUND_EFFECT); - tolua_constant(tolua_S,"E_NEW_INVALID_STATE",E_NEW_INVALID_STATE); - tolua_constant(tolua_S,"E_THUNDERBOLT",E_THUNDERBOLT); - tolua_constant(tolua_S,"E_WINDOW_OPEN",E_WINDOW_OPEN); - tolua_constant(tolua_S,"E_WINDOW_CLOSE",E_WINDOW_CLOSE); - tolua_constant(tolua_S,"E_WINDOW_CLICK",E_WINDOW_CLICK); - tolua_constant(tolua_S,"E_INVENTORY_SLOT",E_INVENTORY_SLOT); - tolua_constant(tolua_S,"E_INVENTORY_WHOLE",E_INVENTORY_WHOLE); - tolua_constant(tolua_S,"E_INVENTORY_PROGRESS",E_INVENTORY_PROGRESS); - tolua_constant(tolua_S,"E_CREATIVE_INVENTORY_ACTION",E_CREATIVE_INVENTORY_ACTION); - tolua_constant(tolua_S,"E_UPDATE_SIGN",E_UPDATE_SIGN); - tolua_constant(tolua_S,"E_PLAYER_LIST_ITEM",E_PLAYER_LIST_ITEM); - tolua_constant(tolua_S,"E_PLAYER_ABILITIES",E_PLAYER_ABILITIES); - tolua_constant(tolua_S,"E_PING",E_PING); - tolua_constant(tolua_S,"E_DISCONNECT",E_DISCONNECT); tolua_array(tolua_S,"g_BlockLightValue",tolua_get_AllToLua_g_BlockLightValue,tolua_set_AllToLua_g_BlockLightValue); tolua_array(tolua_S,"g_BlockSpreadLightFalloff",tolua_get_AllToLua_g_BlockSpreadLightFalloff,tolua_set_AllToLua_g_BlockSpreadLightFalloff); tolua_array(tolua_S,"g_BlockTransparent",tolua_get_AllToLua_g_BlockTransparent,tolua_set_AllToLua_g_BlockTransparent); diff --git a/source/Bindings.h b/source/Bindings.h index 39946bd56..fe7089222 100644 --- a/source/Bindings.h +++ b/source/Bindings.h @@ -1,6 +1,6 @@ /* ** Lua binding: AllToLua -** Generated automatically by tolua++-1.0.92 on 08/27/12 16:12:30. +** Generated automatically by tolua++-1.0.92 on 08/29/12 22:33:21. */ /* Exported function */ diff --git a/source/PacketID.h b/source/PacketID.h deleted file mode 100644 index 3167d04a8..000000000 --- a/source/PacketID.h +++ /dev/null @@ -1,71 +0,0 @@ - -#pragma once - - - - - -//tolua_begin -enum ENUM_PACKET_ID -{ - E_KEEP_ALIVE = 0x00, - E_LOGIN = 0x01, - E_HANDSHAKE = 0x02, - E_CHAT = 0x03, - E_UPDATE_TIME = 0x04, - E_ENTITY_EQUIPMENT = 0x05, - E_USE_ENTITY = 0x07, - E_UPDATE_HEALTH = 0x08, - E_RESPAWN = 0x09, - E_FLYING = 0x0a, - E_PLAYERPOS = 0x0b, - E_PLAYERLOOK = 0x0c, - E_PLAYERMOVELOOK = 0x0d, - E_BLOCK_DIG = 0x0e, - E_BLOCK_PLACE = 0x0f, - E_SLOT_SELECTED = 0x10, - E_ITEM_SWITCH = 0x10, // OBSOLETE, use E_SLOT_SELECTED instead - E_ADD_TO_INV = 0x11, // TODO: Sure this is not Use Bed?? - E_ANIMATION = 0x12, - E_PACKET_ENTITY_ACTION = 0x13, - E_NAMED_ENTITY_SPAWN = 0x14, - E_PICKUP_SPAWN = 0x15, - E_COLLECT_ITEM = 0x16, - E_ADD_VEHICLE = 0x17, - E_SPAWN_MOB = 0x18, - E_DESTROY_ENT = 0x1d, - E_ENTITY = 0x1e, - E_REL_ENT_MOVE = 0x1f, - E_ENT_LOOK = 0x20, - E_REL_ENT_MOVE_LOOK = 0x21, - E_ENT_TELEPORT = 0x22, - E_ENT_HEAD_LOOK = 0x23, - E_ENT_STATUS = 0x26, - E_METADATA = 0x28, - E_PRE_CHUNK = 0x32, - E_MAP_CHUNK = 0x33, - E_MULTI_BLOCK = 0x34, - E_BLOCK_CHANGE = 0x35, - E_BLOCK_ACTION = 0x36, - E_EXPLOSION = 0x3C, - E_SOUND_EFFECT = 0x3D, - E_NEW_INVALID_STATE = 0x46, - E_THUNDERBOLT = 0x47, - E_WINDOW_OPEN = 0x64, - E_WINDOW_CLOSE = 0x65, - E_WINDOW_CLICK = 0x66, - E_INVENTORY_SLOT = 0x67, - E_INVENTORY_WHOLE = 0x68, - E_INVENTORY_PROGRESS = 0x69, - E_CREATIVE_INVENTORY_ACTION = 0x6B, - E_UPDATE_SIGN = 0x82, - E_PLAYER_LIST_ITEM = 0xC9, - E_PLAYER_ABILITIES = 0xca, // since 1.2.4, protocol version 29 - E_PING = 0xfe, - E_DISCONNECT = 0xff -} ; -//tolua_end - - - - diff --git a/source/Protocol.h b/source/Protocol.h index ee0ccddfd..1b313ce09 100644 --- a/source/Protocol.h +++ b/source/Protocol.h @@ -53,6 +53,8 @@ public: virtual void SendEntLook (const cEntity & a_Entity) = 0; virtual void SendEntityEquipment (const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item) = 0; virtual void SendEntityStatus (const cEntity & a_Entity, char a_Status) = 0; + virtual void SendEntRelMove (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) = 0; + virtual void SendEntRelMoveLook (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) = 0; virtual void SendGameMode (eGameMode a_GameMode) = 0; virtual void SendHandshake (const AString & a_ServerName) = 0; virtual void SendHealth (void) = 0; @@ -67,8 +69,6 @@ public: virtual void SendPlayerMoveLook (void) = 0; virtual void SendPlayerPosition (void) = 0; virtual void SendPlayerSpawn (const cPlayer & a_Player) = 0; - virtual void SendRelEntMove (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) = 0; - virtual void SendRelEntMoveLook (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) = 0; virtual void SendRespawn (void) = 0; virtual void SendSpawnMob (const cMonster & a_Mob) = 0; virtual void SendTeleportEntity (const cEntity & a_Entity) = 0; diff --git a/source/Protocol125.cpp b/source/Protocol125.cpp index 5b16e5728..d9faefb77 100644 --- a/source/Protocol125.cpp +++ b/source/Protocol125.cpp @@ -7,27 +7,6 @@ #include "Protocol125.h" -#include "packets/cPacket.h" -#include "packets/cPacket_13.h" -#include "packets/cPacket_ArmAnim.h" -#include "packets/cPacket_BlockDig.h" -#include "packets/cPacket_BlockPlace.h" -#include "packets/cPacket_Chat.h" -#include "packets/cPacket_CreativeInventoryAction.h" -#include "packets/cPacket_Disconnect.h" -#include "packets/cPacket_Flying.h" -#include "packets/cPacket_Handshake.h" -#include "packets/cPacket_ItemSwitch.h" -#include "packets/cPacket_KeepAlive.h" -#include "packets/cPacket_Login.h" -#include "packets/cPacket_Ping.h" -#include "packets/cPacket_Player.h" -#include "packets/cPacket_Respawn.h" -#include "packets/cPacket_UpdateSign.h" -#include "packets/cPacket_UseEntity.h" -#include "packets/cPacket_WindowClick.h" -#include "packets/cPacket_WindowClose.h" - #include "cClientHandle.h" #include "ChunkDataSerializer.h" #include "cEntity.h" @@ -52,10 +31,10 @@ enum PACKET_USE_ENTITY = 0x07, PACKET_UPDATE_HEALTH = 0x08, PACKET_RESPAWN = 0x09, - PACKET_FLYING = 0x0a, - PACKET_PLAYERPOS = 0x0b, - PACKET_PLAYERLOOK = 0x0c, - PACKET_PLAYERMOVELOOK = 0x0d, + PACKET_PLAYER_ON_GROUND = 0x0a, + PACKET_PLAYER_POS = 0x0b, + PACKET_PLAYER_LOOK = 0x0c, + PACKET_PLAYER_MOVE_LOOK = 0x0d, PACKET_BLOCK_DIG = 0x0e, PACKET_BLOCK_PLACE = 0x0f, PACKET_SLOT_SELECTED = 0x10, @@ -69,9 +48,9 @@ enum PACKET_SPAWN_MOB = 0x18, PACKET_DESTROY_ENTITY = 0x1d, PACKET_ENTITY = 0x1e, - PACKET_REL_ENT_MOVE = 0x1f, + PACKET_ENT_REL_MOVE = 0x1f, PACKET_ENT_LOOK = 0x20, - PACKET_REL_ENT_MOVE_LOOK = 0x21, + PACKET_ENT_REL_MOVE_LOOK = 0x21, PACKET_ENT_TELEPORT = 0x22, PACKET_ENT_HEAD_LOOK = 0x23, PACKET_ENT_STATUS = 0x26, @@ -103,6 +82,24 @@ enum +#define HANDLE_PACKET_READ(Proc, Type, Var) \ + Type Var; \ + { \ + if (!m_ReceivedData.Proc(Var)) \ + { \ + return PARSE_INCOMPLETE; \ + } \ + } + + + + +typedef unsigned char Byte; + + + + + cProtocol125::cProtocol125(cClientHandle * a_Client) : super(a_Client), m_ReceivedData(64 KiB) @@ -384,7 +381,7 @@ void cProtocol125::SendLogin(const cPlayer & a_Player) { cCSLock Lock(m_CSPacket); - WriteByte (E_LOGIN); + WriteByte (PACKET_LOGIN); WriteInt (a_Player.GetUniqueID()); // EntityID of the player WriteString(""); // Username, not used WriteString("DEFAULT"); // Level type @@ -480,7 +477,7 @@ void cProtocol125::SendPlayerMoveLook(void) ); */ - WriteByte (PACKET_PLAYERMOVELOOK); + WriteByte (PACKET_PLAYER_MOVE_LOOK); cPlayer * Player = m_Client->GetPlayer(); WriteDouble(Player->GetPosX()); WriteDouble(Player->GetStance() + 0.03); // Add a small amount so that the player doesn't start inside a block @@ -526,12 +523,12 @@ void cProtocol125::SendPlayerSpawn(const cPlayer & a_Player) -void cProtocol125::SendRelEntMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) +void cProtocol125::SendEntRelMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) { ASSERT(a_Entity.GetUniqueID() != m_Client->GetPlayer()->GetUniqueID()); // Must not send for self cCSLock Lock(m_CSPacket); - WriteByte(PACKET_REL_ENT_MOVE); + WriteByte(PACKET_ENT_REL_MOVE); WriteInt (a_Entity.GetUniqueID()); WriteByte(a_RelX); WriteByte(a_RelY); @@ -543,12 +540,12 @@ void cProtocol125::SendRelEntMove(const cEntity & a_Entity, char a_RelX, char a_ -void cProtocol125::SendRelEntMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) +void cProtocol125::SendEntRelMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) { ASSERT(a_Entity.GetUniqueID() != m_Client->GetPlayer()->GetUniqueID()); // Must not send for self cCSLock Lock(m_CSPacket); - WriteByte(PACKET_REL_ENT_MOVE_LOOK); + WriteByte(PACKET_ENT_REL_MOVE_LOOK); WriteInt (a_Entity.GetUniqueID()); WriteByte(a_RelX); WriteByte(a_RelY); @@ -779,19 +776,19 @@ void cProtocol125::DataReceived(const char * a_Data, int a_Size) m_ReceivedData.ReadByte(PacketType); switch (ParsePacket(PacketType)) { - case PACKET_UNKNOWN: + case PARSE_UNKNOWN: { // An unknown packet has been received, notify the client and abort: m_Client->PacketUnknown(PacketType); return; } - case PACKET_ERROR: + case PARSE_ERROR: { // An error occurred while parsing a known packet, notify the client and abort: m_Client->PacketError(PacketType); return; } - case PACKET_INCOMPLETE: + case PARSE_INCOMPLETE: { // Incomplete packet, bail out and process with the next batch of data m_ReceivedData.ResetRead(); @@ -815,23 +812,23 @@ int cProtocol125::ParsePacket(unsigned char a_PacketType) { switch (a_PacketType) { - default: return PACKET_UNKNOWN; + default: return PARSE_UNKNOWN; case PACKET_ANIMATION: return ParseArmAnim(); case PACKET_BLOCK_DIG: return ParseBlockDig(); case PACKET_BLOCK_PLACE: return ParseBlockPlace(); case PACKET_CHAT: return ParseChat(); case PACKET_CREATIVE_INVENTORY_ACTION: return ParseCreativeInventoryAction(); case PACKET_DISCONNECT: return ParseDisconnect(); - case PACKET_FLYING: return ParseFlying(); case PACKET_HANDSHAKE: return ParseHandshake(); case PACKET_KEEP_ALIVE: return ParseKeepAlive(); case PACKET_LOGIN: return ParseLogin(); case PACKET_PACKET_ENTITY_ACTION: return ParseEntityAction(); case PACKET_PING: return ParsePing(); - case PACKET_PLAYERLOOK: return ParsePlayerLook(); - case PACKET_PLAYERMOVELOOK: return ParsePlayerMoveLook(); - case PACKET_PLAYERPOS: return ParsePlayerPosition(); case PACKET_PLAYER_ABILITIES: return ParsePlayerAbilities(); + case PACKET_PLAYER_LOOK: return ParsePlayerLook(); + case PACKET_PLAYER_MOVE_LOOK: return ParsePlayerMoveLook(); + case PACKET_PLAYER_ON_GROUND: return ParsePlayerOnGround(); + case PACKET_PLAYER_POS: return ParsePlayerPosition(); case PACKET_RESPAWN: return ParseRespawn(); case PACKET_SLOT_SELECTED: return ParseSlotSelected(); case PACKET_UPDATE_SIGN: return ParseUpdateSign(); @@ -858,120 +855,12 @@ int cProtocol125::ParsePacket(unsigned char a_PacketType) -int cProtocol125::ParseKeepAlive(void) -{ - cPacket_KeepAlive KeepAlive; - HANDLE_PACKET_PARSE(KeepAlive); - m_Client->HandleKeepAlive(KeepAlive.m_KeepAliveID); - return PACKET_OK; -} - - - - - -int cProtocol125::ParseHandshake(void) -{ - cPacket_Handshake Handshake; - HANDLE_PACKET_PARSE(Handshake); - m_Client->HandleHandshake(Handshake.m_Username); - return PACKET_OK; -} - - - - - -int cProtocol125::ParseLogin(void) -{ - cPacket_Login Login; - HANDLE_PACKET_PARSE(Login); - m_Client->HandleLogin(Login.m_ProtocolVersion, Login.m_Username); - return PACKET_OK; -} - - - - - -int cProtocol125::ParsePlayerPosition(void) -{ - cPacket_PlayerPosition pp; - HANDLE_PACKET_PARSE(pp); - m_Client->HandlePlayerPos(pp.m_PosX, pp.m_PosY, pp.m_PosZ, pp.m_Stance, pp.m_IsOnGround); - return PACKET_OK; -} - - - - - -int cProtocol125::ParsePlayerLook(void) -{ - cPacket_PlayerLook pl; - HANDLE_PACKET_PARSE(pl); - m_Client->HandlePlayerLook(pl.m_Rotation, pl.m_Pitch, pl.m_IsOnGround); - return PACKET_OK; -} - - - - - -int cProtocol125::ParsePlayerMoveLook(void) -{ - cPacket_PlayerMoveLook pml; - HANDLE_PACKET_PARSE(pml); - m_Client->HandlePlayerMoveLook(pml.m_PosX, pml.m_PosY, pml.m_PosZ, pml.m_Stance, pml.m_Rotation, pml.m_Pitch, pml.m_IsOnGround); - return PACKET_OK; -} - - - - - -int cProtocol125::ParsePlayerAbilities(void) -{ - cPacket_PlayerAbilities pa; - HANDLE_PACKET_PARSE(pa); - // TODO: m_Client->HandlePlayerAbilities(...); - return PACKET_OK; -} - - - - - -int cProtocol125::ParseChat(void) -{ - cPacket_Chat ch; - HANDLE_PACKET_PARSE(ch); - m_Client->HandleChat(ch.m_Message); - return PACKET_OK; -} - - - - - int cProtocol125::ParseArmAnim(void) { - cPacket_ArmAnim aa; - HANDLE_PACKET_PARSE(aa); - m_Client->HandleAnimation(aa.m_Animation); - return PACKET_OK; -} - - - - - -int cProtocol125::ParseFlying(void) -{ - cPacket_Flying fl; - HANDLE_PACKET_PARSE(fl); - // TODO: m_Client->HandleFlying(fl.m_bFlying); - return PACKET_OK; + HANDLE_PACKET_READ(ReadBEInt, int, EntityID); + HANDLE_PACKET_READ(ReadChar, char, Animation); + m_Client->HandleAnimation(Animation); + return PARSE_OK; } @@ -980,10 +869,13 @@ int cProtocol125::ParseFlying(void) int cProtocol125::ParseBlockDig(void) { - cPacket_BlockDig bd; - HANDLE_PACKET_PARSE(bd); - m_Client->HandleBlockDig(bd.m_PosX, bd.m_PosY, bd.m_PosZ, bd.m_Direction, bd.m_Status); - return PACKET_OK; + HANDLE_PACKET_READ(ReadChar, char, Status); + HANDLE_PACKET_READ(ReadBEInt, int, PosX); + HANDLE_PACKET_READ(ReadByte, Byte, PosY); + HANDLE_PACKET_READ(ReadBEInt, int, PosZ); + HANDLE_PACKET_READ(ReadChar, char, Direction); + m_Client->HandleBlockDig(PosX, PosY, PosZ, Direction, Status); + return PARSE_OK; } @@ -992,34 +884,31 @@ int cProtocol125::ParseBlockDig(void) int cProtocol125::ParseBlockPlace(void) { - cPacket_BlockPlace bp; - HANDLE_PACKET_PARSE(bp); - m_Client->HandleBlockPlace(bp.m_PosX, bp.m_PosY, bp.m_PosZ, bp.m_Direction, bp.m_HeldItem); - return PACKET_OK; + HANDLE_PACKET_READ(ReadBEInt, int, PosX); + HANDLE_PACKET_READ(ReadByte, Byte, PosY); + HANDLE_PACKET_READ(ReadBEInt, int, PosZ); + HANDLE_PACKET_READ(ReadChar, char, Direction); + + cItem HeldItem; + int res = ParseItem(HeldItem); + if (res < 0) + { + return res; + } + + m_Client->HandleBlockPlace(PosX, PosY, PosZ, Direction, HeldItem); + return PARSE_OK; } -int cProtocol125::ParseDisconnect(void) +int cProtocol125::ParseChat(void) { - cPacket_Disconnect dc; - HANDLE_PACKET_PARSE(dc); - m_Client->HandleDisconnect(dc.m_Reason); - return PACKET_OK; -} - - - - - -int cProtocol125::ParseSlotSelected(void) -{ - cPacket_ItemSwitch its; - HANDLE_PACKET_PARSE(its); - m_Client->HandleSlotSelected(its.m_SlotNum); - return PACKET_OK; + HANDLE_PACKET_READ(ReadBEUTF16String16, AString, Message); + m_Client->HandleChat(Message); + return PARSE_OK; } @@ -1028,46 +917,26 @@ int cProtocol125::ParseSlotSelected(void) int cProtocol125::ParseCreativeInventoryAction(void) { - cPacket_CreativeInventoryAction cia; - HANDLE_PACKET_PARSE(cia); - m_Client->HandleCreativeInventory(cia.m_SlotNum, cia.m_ClickedItem); - return PACKET_OK; + HANDLE_PACKET_READ(ReadBEShort, short, SlotNum); + cItem HeldItem; + int res = ParseItem(HeldItem); + if (res < 0) + { + return res; + } + m_Client->HandleCreativeInventory(SlotNum, HeldItem); + return PARSE_OK; } -int cProtocol125::ParseUseEntity(void) +int cProtocol125::ParseDisconnect(void) { - cPacket_UseEntity ue; - HANDLE_PACKET_PARSE(ue); - m_Client->HandleUseEntity(ue.m_TargetEntityID, ue.m_IsLeftClick); - return PACKET_OK; -} - - - - - -int cProtocol125::ParseWindowClose(void) -{ - cPacket_WindowClose wc; - HANDLE_PACKET_PARSE(wc); - m_Client->HandleWindowClose(wc.m_WindowID); - return PACKET_OK; -} - - - - - -int cProtocol125::ParseWindowClick(void) -{ - cPacket_WindowClick wc; - HANDLE_PACKET_PARSE(wc); - m_Client->HandleWindowClick(wc.m_WindowID, wc.m_SlotNum, wc.m_IsRightClick, wc.m_IsShiftPressed, wc.m_HeldItem); - return PACKET_OK; + HANDLE_PACKET_READ(ReadBEUTF16String16, AString, Reason); + m_Client->HandleDisconnect(Reason); + return PARSE_OK; } @@ -1076,37 +945,50 @@ int cProtocol125::ParseWindowClick(void) int cProtocol125::ParseEntityAction(void) { - cPacket_13 ea; - HANDLE_PACKET_PARSE(ea); + HANDLE_PACKET_READ(ReadBEInt, int, EntityID); + HANDLE_PACKET_READ(ReadChar, char, ActionID); // TODO: m_Client->HandleEntityAction(...); - return PACKET_OK; + return PARSE_OK; } -int cProtocol125::ParseUpdateSign(void) +int cProtocol125::ParseHandshake(void) { - cPacket_UpdateSign us; - HANDLE_PACKET_PARSE(us); - m_Client->HandleUpdateSign( - us.m_BlockX, us.m_BlockY, us.m_BlockZ, - us.m_Line1, us.m_Line2, us.m_Line3, us.m_Line4 - ); - return PACKET_OK; + HANDLE_PACKET_READ(ReadBEUTF16String16, AString, Username); + m_Client->HandleHandshake(Username); + return PARSE_OK; } -int cProtocol125::ParseRespawn(void) +int cProtocol125::ParseKeepAlive(void) { - cPacket_Respawn rsp; - HANDLE_PACKET_PARSE(rsp); - m_Client->HandleRespawn(); - return PACKET_OK; + HANDLE_PACKET_READ(ReadBEInt, int, KeepAliveID); + m_Client->HandleKeepAlive(KeepAliveID); + return PARSE_OK; +} + + + + + +int cProtocol125::ParseLogin(void) +{ + HANDLE_PACKET_READ(ReadBEInt, int, ProtocolVersion); + HANDLE_PACKET_READ(ReadBEUTF16String16, AString, Username); + HANDLE_PACKET_READ(ReadBEUTF16String16, AString, LevelType); + HANDLE_PACKET_READ(ReadBEInt, int, ServerMode); + HANDLE_PACKET_READ(ReadBEInt, int, Dimension); + HANDLE_PACKET_READ(ReadChar, char, Difficulty); + HANDLE_PACKET_READ(ReadByte, Byte, WorldHeight); + HANDLE_PACKET_READ(ReadByte, Byte, MaxPlayers); + m_Client->HandleLogin(ProtocolVersion, Username); + return PARSE_OK; } @@ -1115,10 +997,9 @@ int cProtocol125::ParseRespawn(void) int cProtocol125::ParsePing(void) { - cPacket_Ping ping; - HANDLE_PACKET_PARSE(ping); + // Packet has no more data m_Client->HandlePing(); - return PACKET_OK; + return PARSE_OK; } @@ -1126,9 +1007,168 @@ int cProtocol125::ParsePing(void) +int cProtocol125::ParsePlayerAbilities(void) +{ + HANDLE_PACKET_READ(ReadBool, bool, Invulnerable); + HANDLE_PACKET_READ(ReadBool, bool, IsFlying); + HANDLE_PACKET_READ(ReadBool, bool, CanFly); + HANDLE_PACKET_READ(ReadBool, bool, InstaMine); + // TODO: m_Client->HandlePlayerAbilities(...); + return PARSE_OK; +} + + + + + +int cProtocol125::ParsePlayerLook(void) +{ + HANDLE_PACKET_READ(ReadBEFloat, float, Rotation); + HANDLE_PACKET_READ(ReadBEFloat, float, Pitch); + HANDLE_PACKET_READ(ReadBool, bool, IsOnGround); + m_Client->HandlePlayerLook(Rotation, Pitch, IsOnGround); + return PARSE_OK; +} + + + + + +int cProtocol125::ParsePlayerMoveLook(void) +{ + HANDLE_PACKET_READ(ReadBEDouble, double, PosX); + HANDLE_PACKET_READ(ReadBEDouble, double, PosY); + HANDLE_PACKET_READ(ReadBEDouble, double, Stance); + HANDLE_PACKET_READ(ReadBEDouble, double, PosZ); + HANDLE_PACKET_READ(ReadBEFloat, float, Rotation); + HANDLE_PACKET_READ(ReadBEFloat, float, Pitch); + HANDLE_PACKET_READ(ReadBool, bool, IsOnGround); + // LOGD("Recv PML: {%0.2f, %0.2f, %0.2f}, Stance %0.2f, Gnd: %d", PosX, PosY, PosZ, Stance, IsOnGround ? 1 : 0); + m_Client->HandlePlayerMoveLook(PosX, PosY, PosZ, Stance, Rotation, Pitch, IsOnGround); + return PARSE_OK; +} + + + + + +int cProtocol125::ParsePlayerOnGround(void) +{ + HANDLE_PACKET_READ(ReadBool, bool, IsOnGround); + // TODO: m_Client->HandleFlying(IsOnGround); + return PARSE_OK; +} + + + + + +int cProtocol125::ParsePlayerPosition(void) +{ + HANDLE_PACKET_READ(ReadBEDouble, double, PosX); + HANDLE_PACKET_READ(ReadBEDouble, double, PosY); + HANDLE_PACKET_READ(ReadBEDouble, double, Stance); + HANDLE_PACKET_READ(ReadBEDouble, double, PosZ); + HANDLE_PACKET_READ(ReadBool, bool, IsOnGround); + m_Client->HandlePlayerPos(PosX, PosY, PosZ, Stance, IsOnGround); + return PARSE_OK; +} + + + + + +int cProtocol125::ParseRespawn(void) +{ + HANDLE_PACKET_READ(ReadBEInt, int, Dimension); + HANDLE_PACKET_READ(ReadChar, char, Difficulty); + HANDLE_PACKET_READ(ReadChar, char, CreativeMode); + HANDLE_PACKET_READ(ReadBEShort, short, WorldHeight); + HANDLE_PACKET_READ(ReadBEUTF16String16, AString, LevelType); + m_Client->HandleRespawn(); + return PARSE_OK; +} + + + + + +int cProtocol125::ParseSlotSelected(void) +{ + HANDLE_PACKET_READ(ReadBEShort, short, SlotNum); + m_Client->HandleSlotSelected(SlotNum); + return PARSE_OK; +} + + + + + +int cProtocol125::ParseUpdateSign(void) +{ + HANDLE_PACKET_READ(ReadBEInt, int, BlockX); + HANDLE_PACKET_READ(ReadBEShort, short, BlockY); + HANDLE_PACKET_READ(ReadBEInt, int, BlockZ); + HANDLE_PACKET_READ(ReadBEUTF16String16, AString, Line1); + HANDLE_PACKET_READ(ReadBEUTF16String16, AString, Line2); + HANDLE_PACKET_READ(ReadBEUTF16String16, AString, Line3); + HANDLE_PACKET_READ(ReadBEUTF16String16, AString, Line4); + m_Client->HandleUpdateSign(BlockX, BlockY, BlockZ, Line1, Line2, Line3, Line4); + return PARSE_OK; +} + + + + + +int cProtocol125::ParseUseEntity(void) +{ + HANDLE_PACKET_READ(ReadBEInt, int, SourceEntityID); + HANDLE_PACKET_READ(ReadBEInt, int, TargetEntityID); + HANDLE_PACKET_READ(ReadBool, bool, IsLeftClick); + m_Client->HandleUseEntity(TargetEntityID, IsLeftClick); + return PARSE_OK; +} + + + + + +int cProtocol125::ParseWindowClick(void) +{ + HANDLE_PACKET_READ(ReadChar, char, WindowID); + HANDLE_PACKET_READ(ReadBEShort, short, SlotNum); + HANDLE_PACKET_READ(ReadBool, bool, IsRightClick); + HANDLE_PACKET_READ(ReadBEShort, short, TransactionID); + HANDLE_PACKET_READ(ReadBool, bool, IsShiftPressed); + cItem HeldItem; + int res = ParseItem(HeldItem); + if (res < 0) + { + return res; + } + m_Client->HandleWindowClick(WindowID, SlotNum, IsRightClick, IsShiftPressed, HeldItem); + return PARSE_OK; +} + + + + + +int cProtocol125::ParseWindowClose(void) +{ + HANDLE_PACKET_READ(ReadChar, char, WindowID); + m_Client->HandleWindowClose(WindowID); + return PARSE_OK; +} + + + + + void cProtocol125::SendPreChunk(int a_ChunkX, int a_ChunkZ, bool a_ShouldLoad) { - WriteByte(E_PRE_CHUNK); + WriteByte(PACKET_PRE_CHUNK); WriteInt (a_ChunkX); WriteInt (a_ChunkZ); WriteBool(a_ShouldLoad); @@ -1186,6 +1226,51 @@ void cProtocol125::WriteItem(const cItem & a_Item) +int cProtocol125::ParseItem(cItem & a_Item) +{ + HANDLE_PACKET_READ(ReadBEShort, short, ItemType); + + if (ItemType <= -1) + { + a_Item.Empty(); + return PARSE_OK; + } + a_Item.m_ItemType = ItemType; + + HANDLE_PACKET_READ(ReadChar, char, ItemCount); + HANDLE_PACKET_READ(ReadBEShort, short, ItemDamage); + a_Item.m_ItemCount = ItemCount; + a_Item.m_ItemDamage = ItemDamage; + if (ItemCount <= 0) + { + a_Item.Empty(); + } + + if (!cItem::IsEnchantable(ItemType)) + { + return PARSE_OK; + } + + HANDLE_PACKET_READ(ReadBEShort, short, EnchantNumBytes); + + if (EnchantNumBytes == 0) + { + return PARSE_OK; + } + + // TODO: Enchantment not implemented yet! + if (!m_ReceivedData.SkipRead(EnchantNumBytes)) + { + return PARSE_INCOMPLETE; + } + + return PARSE_OK; +} + + + + + AString cProtocol125::GetEntityMetaData(const cEntity & a_Entity) { // We should send all the metadata here diff --git a/source/Protocol125.h b/source/Protocol125.h index de1be4fd7..c1b10bd52 100644 --- a/source/Protocol125.h +++ b/source/Protocol125.h @@ -16,13 +16,6 @@ -// fwd: -class cPacket; - - - - - class cProtocol125 : public cProtocol { @@ -46,6 +39,8 @@ public: virtual void SendEntLook (const cEntity & a_Entity) override; virtual void SendEntityEquipment (const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item) override; virtual void SendEntityStatus (const cEntity & a_Entity, char a_Status) override; + virtual void SendEntRelMove (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) override; + virtual void SendEntRelMoveLook (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) override; virtual void SendGameMode (eGameMode a_GameMode) override; virtual void SendHandshake (const AString & a_ConnectionHash) override; virtual void SendHealth (void) override; @@ -60,8 +55,6 @@ public: virtual void SendPlayerMoveLook (void) override; virtual void SendPlayerPosition (void) override; virtual void SendPlayerSpawn (const cPlayer & a_Player) override; - virtual void SendRelEntMove (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) override; - virtual void SendRelEntMoveLook (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) override; virtual void SendRespawn (void) override; virtual void SendSpawnMob (const cMonster & a_Mob) override; virtual void SendTeleportEntity (const cEntity & a_Entity) override; @@ -78,10 +71,10 @@ public: protected: /// Results of packet-parsing: enum { - PACKET_OK = 1, - PACKET_ERROR = -1, - PACKET_UNKNOWN = -2, - PACKET_INCOMPLETE = -3, + PARSE_OK = 1, + PARSE_ERROR = -1, + PARSE_UNKNOWN = -2, + PARSE_INCOMPLETE = -3, } ; cByteBuffer m_ReceivedData; //< Buffer for the received data @@ -99,17 +92,17 @@ protected: virtual int ParseCreativeInventoryAction(void); virtual int ParseDisconnect (void); virtual int ParseEntityAction (void); - virtual int ParseFlying (void); virtual int ParseHandshake (void); - virtual int ParseSlotSelected (void); virtual int ParseKeepAlive (void); virtual int ParseLogin (void); virtual int ParsePing (void); virtual int ParsePlayerAbilities (void); virtual int ParsePlayerLook (void); virtual int ParsePlayerMoveLook (void); + virtual int ParsePlayerOnGround (void); virtual int ParsePlayerPosition (void); virtual int ParseRespawn (void); + virtual int ParseSlotSelected (void); virtual int ParseUpdateSign (void); virtual int ParseUseEntity (void); virtual int ParseWindowClick (void); @@ -125,6 +118,9 @@ protected: /// Writes one item, "slot" as the protocol wiki calls it virtual void WriteItem(const cItem & a_Item); + /// Parses one item, "slot" as the protocol wiki calls it, from m_ReceivedData; returns the usual ParsePacket() codes + virtual int ParseItem(cItem & a_Item); + /// Returns the entity metadata representation AString GetEntityMetaData(const cEntity & a_Entity); diff --git a/source/cChunk.cpp b/source/cChunk.cpp index 351f456af..17b961d3c 100644 --- a/source/cChunk.cpp +++ b/source/cChunk.cpp @@ -1651,7 +1651,7 @@ void cChunk::BroadcastEntityEquipment(const cEntity & a_Entity, short a_SlotNum, -void cChunk::BroadcastRelEntMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) +void cChunk::BroadcastEntRelMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) { for (cClientHandleList::const_iterator itr = m_LoadedByClient.begin(); itr != m_LoadedByClient.end(); ++itr ) { @@ -1659,7 +1659,7 @@ void cChunk::BroadcastRelEntMoveLook(const cEntity & a_Entity, char a_RelX, char { continue; } - (*itr)->SendRelEntMoveLook(a_Entity, a_RelX, a_RelY, a_RelZ); + (*itr)->SendEntRelMoveLook(a_Entity, a_RelX, a_RelY, a_RelZ); } // for itr - LoadedByClient[] } @@ -1667,7 +1667,7 @@ void cChunk::BroadcastRelEntMoveLook(const cEntity & a_Entity, char a_RelX, char -void cChunk::BroadcastRelEntMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) +void cChunk::BroadcastEntRelMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) { for (cClientHandleList::const_iterator itr = m_LoadedByClient.begin(); itr != m_LoadedByClient.end(); ++itr ) { @@ -1675,7 +1675,7 @@ void cChunk::BroadcastRelEntMove(const cEntity & a_Entity, char a_RelX, char a_R { continue; } - (*itr)->SendRelEntMove(a_Entity, a_RelX, a_RelY, a_RelZ); + (*itr)->SendEntRelMove(a_Entity, a_RelX, a_RelY, a_RelZ); } // for itr - LoadedByClient[] } diff --git a/source/cChunk.h b/source/cChunk.h index 9539b20d5..c63bd8a92 100644 --- a/source/cChunk.h +++ b/source/cChunk.h @@ -32,7 +32,6 @@ namespace Json class cWorld; class cFurnaceEntity; -class cPacket; class cClientHandle; class cServer; class MTRand; @@ -174,14 +173,10 @@ public: void CalculateLighting(); // Recalculate right now void CalculateHeightmap(); - // Broadcasts to all clients that have loaded this chunk - void Broadcast( const cPacket & a_Packet, cClientHandle * a_Exclude = NULL) {Broadcast(&a_Packet, a_Exclude); } - void Broadcast( const cPacket * a_Packet, cClientHandle * a_Exclude = NULL); - void BroadcastPlayerAnimation(const cPlayer & a_Player, char a_Animation, const cClientHandle * a_Exclude = NULL); void BroadcastEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item, const cClientHandle * a_Exclude = NULL); - void BroadcastRelEntMoveLook (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); - void BroadcastRelEntMove (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); + void BroadcastEntRelMoveLook (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); + void BroadcastEntRelMove (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); void BroadcastEntLook (const cEntity & a_Entity, const cClientHandle * a_Exclude = NULL); void BroadcastEntHeadLook (const cEntity & a_Entity, const cClientHandle * a_Exclude = NULL); void BroadcastBlockAction (int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, const cClientHandle * a_Exclude = NULL); diff --git a/source/cChunkMap.cpp b/source/cChunkMap.cpp index f4203ca4e..c764a0321 100644 --- a/source/cChunkMap.cpp +++ b/source/cChunkMap.cpp @@ -257,7 +257,7 @@ void cChunkMap::BroadcastEntityEquipment(const cEntity & a_Entity, short a_SlotN -void cChunkMap::BroadcastRelEntMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) +void cChunkMap::BroadcastEntRelMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) { cCSLock Lock(m_CSLayers); cChunkPtr Chunk = GetChunkNoGen(a_Entity.GetChunkX(), a_Entity.GetChunkY(), a_Entity.GetChunkZ()); @@ -266,7 +266,7 @@ void cChunkMap::BroadcastRelEntMoveLook(const cEntity & a_Entity, char a_RelX, c return; } // It's perfectly legal to broadcast packets even to invalid chunks! - Chunk->BroadcastRelEntMoveLook(a_Entity, a_RelX, a_RelY, a_RelZ, a_Exclude); + Chunk->BroadcastEntRelMoveLook(a_Entity, a_RelX, a_RelY, a_RelZ, a_Exclude); } @@ -274,7 +274,7 @@ void cChunkMap::BroadcastRelEntMoveLook(const cEntity & a_Entity, char a_RelX, c -void cChunkMap::BroadcastRelEntMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) +void cChunkMap::BroadcastEntRelMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) { cCSLock Lock(m_CSLayers); cChunkPtr Chunk = GetChunkNoGen(a_Entity.GetChunkX(), a_Entity.GetChunkY(), a_Entity.GetChunkZ()); @@ -283,7 +283,7 @@ void cChunkMap::BroadcastRelEntMove(const cEntity & a_Entity, char a_RelX, char return; } // It's perfectly legal to broadcast packets even to invalid chunks! - Chunk->BroadcastRelEntMove(a_Entity, a_RelX, a_RelY, a_RelZ, a_Exclude); + Chunk->BroadcastEntRelMove(a_Entity, a_RelX, a_RelY, a_RelZ, a_Exclude); } diff --git a/source/cChunkMap.h b/source/cChunkMap.h index a28b35fb6..36cb704a2 100644 --- a/source/cChunkMap.h +++ b/source/cChunkMap.h @@ -49,10 +49,10 @@ public: void BroadcastEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item, const cClientHandle * a_Exclude = NULL); /// Broadcasts a RelEntMoveLook packet to all clients in the chunk where a_Entity is - void BroadcastRelEntMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); + void BroadcastEntRelMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); /// Broadcasts a RelEntMove packet to all clients in the chunk where a_Entity is - void BroadcastRelEntMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); + void BroadcastEntRelMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); /// Broadcasts a EntLook packet to all clients in the chunk where a_Entity is void BroadcastEntLook(const cEntity & a_Entity, const cClientHandle * a_Exclude = NULL); diff --git a/source/cClientHandle.cpp b/source/cClientHandle.cpp index d966831b9..0fd1597c4 100644 --- a/source/cClientHandle.cpp +++ b/source/cClientHandle.cpp @@ -1174,22 +1174,22 @@ void cClientHandle::SendPlayerPosition(void) -void cClientHandle::SendRelEntMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) +void cClientHandle::SendEntRelMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) { ASSERT(a_Entity.GetUniqueID() != m_Player->GetUniqueID()); // Must not send for self - m_Protocol->SendRelEntMoveLook(a_Entity, a_RelX, a_RelY, a_RelZ); + m_Protocol->SendEntRelMoveLook(a_Entity, a_RelX, a_RelY, a_RelZ); } -void cClientHandle::SendRelEntMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) +void cClientHandle::SendEntRelMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) { ASSERT(a_Entity.GetUniqueID() != m_Player->GetUniqueID()); // Must not send for self - m_Protocol->SendRelEntMove(a_Entity, a_RelX, a_RelY, a_RelZ); + m_Protocol->SendEntRelMove(a_Entity, a_RelX, a_RelY, a_RelZ); } diff --git a/source/cClientHandle.h b/source/cClientHandle.h index ee3e8b1ee..3ae37c2e7 100644 --- a/source/cClientHandle.h +++ b/source/cClientHandle.h @@ -95,8 +95,8 @@ public: void SendTeleportEntity(const cEntity & a_Entity); void SendPlayerListItem(const cPlayer & a_Player, bool a_IsOnline); void SendPlayerPosition(void); - void SendRelEntMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ); - void SendRelEntMove (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ); + void SendEntRelMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ); + void SendEntRelMove (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ); void SendEntLook (const cEntity & a_Entity); void SendEntHeadLook (const cEntity & a_Entity); void SendBlockAction (int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2); @@ -226,11 +226,6 @@ private: bool m_bKeepThreadGoing; - /* - /// Handles rclk with a dye; returns true if the dye is to be be consumed - bool HandleDyes(cPacket_BlockPlace * a_Packet); - */ - /// Returns true if the rate block interactions is within a reasonable limit (bot protection) bool CheckBlockInteractionsRate(void); diff --git a/source/cEntity.h b/source/cEntity.h index a34b7518f..15c351a09 100644 --- a/source/cEntity.h +++ b/source/cEntity.h @@ -43,7 +43,6 @@ class cWorld; class cReferenceManager; class cClientHandle; -class cPacket; diff --git a/source/cInventory.h b/source/cInventory.h index bb8519828..96d744baf 100644 --- a/source/cInventory.h +++ b/source/cInventory.h @@ -15,8 +15,6 @@ namespace Json class cItem; class cClientHandle; class cPlayer; -class cPacket; -class cPacket_EntityEquipment; diff --git a/source/cMonster.cpp b/source/cMonster.cpp index 24d790dc3..8b1a22bb7 100644 --- a/source/cMonster.cpp +++ b/source/cMonster.cpp @@ -228,12 +228,12 @@ void cMonster::ReplicateMovement() // Relative move sucks balls! It's always wrong wtf! if (m_bDirtyOrientation) { - m_World->BroadcastRelEntMoveLook(*this, (char)(DiffX * 32), (char)(DiffY * 32), (char)(DiffZ * 32)); + m_World->BroadcastEntRelMoveLook(*this, (char)(DiffX * 32), (char)(DiffY * 32), (char)(DiffZ * 32)); m_bDirtyOrientation = false; } else { - m_World->BroadcastRelEntMove(*this, (char)(DiffX * 32), (char)(DiffY * 32), (char)(DiffZ * 32)); + m_World->BroadcastEntRelMove(*this, (char)(DiffX * 32), (char)(DiffY * 32), (char)(DiffZ * 32)); } } m_LastPosX = GetPosX(); diff --git a/source/cPickup.h b/source/cPickup.h index 06d5fe301..8e8f514b8 100644 --- a/source/cPickup.h +++ b/source/cPickup.h @@ -6,7 +6,6 @@ -class cPacket_PickupSpawn; class cPlayer; class cItem; diff --git a/source/cPlayer.cpp b/source/cPlayer.cpp index b7c05b402..d3c0107ec 100644 --- a/source/cPlayer.cpp +++ b/source/cPlayer.cpp @@ -198,12 +198,12 @@ void cPlayer::Tick(float a_Dt) // Relative move sucks balls! It's always wrong wtf! if (m_bDirtyOrientation) { - m_World->BroadcastRelEntMoveLook(*this, (char)(DiffX * 32), (char)(DiffY * 32), (char)(DiffZ * 32), m_ClientHandle); + m_World->BroadcastEntRelMoveLook(*this, (char)(DiffX * 32), (char)(DiffY * 32), (char)(DiffZ * 32), m_ClientHandle); m_bDirtyOrientation = false; } else { - m_World->BroadcastRelEntMove(*this, (char)(DiffX * 32), (char)(DiffY * 32), (char)(DiffZ * 32), m_ClientHandle); + m_World->BroadcastEntRelMove(*this, (char)(DiffX * 32), (char)(DiffY * 32), (char)(DiffZ * 32), m_ClientHandle); } } m_LastPosX = GetPosX(); diff --git a/source/cPlugin.h b/source/cPlugin.h index f040ba823..15029886b 100644 --- a/source/cPlugin.h +++ b/source/cPlugin.h @@ -3,13 +3,6 @@ #include "cItem.h" -class cPacket_BlockPlace; -class cPacket_PickupSpawn; -class cPacket_EntityEquipment; -class cPacket_Disconnect; -class cPacket_Chat; -class cPacket_BlockDig; -class cPacket_Login; class cClientHandle; class cPlayer; class cPickup; diff --git a/source/cPlugin_Lua.h b/source/cPlugin_Lua.h index 6e5d027d4..73787de0c 100644 --- a/source/cPlugin_Lua.h +++ b/source/cPlugin_Lua.h @@ -3,10 +3,12 @@ class cPickup; class cPlayer; -class cPacket_BlockPlace; -class cPacket_BlockDig; -class cPacket_Login; class cPlugin; + + + + + class cPlugin_Lua //tolua_export { //tolua_export public: @@ -29,4 +31,8 @@ private: typedef std::list< cPlugin* > PluginList; PluginList m_Plugins; -}; //tolua_export \ No newline at end of file +}; //tolua_export + + + + diff --git a/source/cServer.h b/source/cServer.h index 48a39db7d..a97bcbd7a 100644 --- a/source/cServer.h +++ b/source/cServer.h @@ -19,7 +19,6 @@ class cPlayer; class cClientHandle; -class cPacket; typedef std::list cClientHandleList; diff --git a/source/cWorld.cpp b/source/cWorld.cpp index ee41a6aa1..9348eda7d 100644 --- a/source/cWorld.cpp +++ b/source/cWorld.cpp @@ -1268,18 +1268,18 @@ void cWorld::BroadcastTeleportEntity(const cEntity & a_Entity, const cClientHand -void cWorld::BroadcastRelEntMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) +void cWorld::BroadcastEntRelMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) { - m_ChunkMap->BroadcastRelEntMoveLook(a_Entity, a_RelX, a_RelY, a_RelZ, a_Exclude); + m_ChunkMap->BroadcastEntRelMoveLook(a_Entity, a_RelX, a_RelY, a_RelZ, a_Exclude); } -void cWorld::BroadcastRelEntMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) +void cWorld::BroadcastEntRelMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude) { - m_ChunkMap->BroadcastRelEntMove(a_Entity, a_RelX, a_RelY, a_RelZ, a_Exclude); + m_ChunkMap->BroadcastEntRelMove(a_Entity, a_RelX, a_RelY, a_RelZ, a_Exclude); } diff --git a/source/cWorld.h b/source/cWorld.h index 688ce5857..0751daf5c 100644 --- a/source/cWorld.h +++ b/source/cWorld.h @@ -77,8 +77,8 @@ public: void BroadcastPlayerAnimation(const cPlayer & a_Player, char a_Animation, const cClientHandle * a_Exclude = NULL); void BroadcastEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item, const cClientHandle * a_Exclude = NULL); void BroadcastTeleportEntity (const cEntity & a_Entity, const cClientHandle * a_Exclude = NULL); - void BroadcastRelEntMoveLook (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); - void BroadcastRelEntMove (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); + void BroadcastEntRelMoveLook (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); + void BroadcastEntRelMove (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL); void BroadcastEntLook (const cEntity & a_Entity, const cClientHandle * a_Exclude = NULL); void BroadcastEntHeadLook (const cEntity & a_Entity, const cClientHandle * a_Exclude = NULL); void BroadcastBlockAction (int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, const cClientHandle * a_Exclude = NULL); diff --git a/source/packets/cPacket.cpp b/source/packets/cPacket.cpp deleted file mode 100644 index 8307e67fa..000000000 --- a/source/packets/cPacket.cpp +++ /dev/null @@ -1,153 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket.h" -#include "../Endianness.h" - - - - - -/* -// These checks cannot be done in preprocessor, since sizeof() is evaluated while compiling, so in preprocessing it's unknown. -// Check some basic type assumptions: -#if (sizeof(int) != 4) - #error "Bad size for int, protocol won't work" -#endif - -#if (sizeof(float) != 4) - #error "Bad size for float, protocol won't work" -#endif - -#if (sizeof(double) != 8) - #error "Bad size for double, protocol won't work" -#endif -*/ - - - - - -void cPacket::AppendString(AString & a_Dst, const AString & a_String) -{ - AppendShort(a_Dst, (unsigned short)a_String.size()); - a_Dst.append(a_String); -} - - - - - -void cPacket::AppendString16(AString & a_Dst, const AString & a_String) -{ - AppendShort(a_Dst, (unsigned short)a_String.size()); - AString UTF16; - UTF16.resize(a_String.size() * sizeof(short)); - for( unsigned int i = 0; i < a_String.size(); ++i ) - { - UTF16[i * sizeof( short )] = 0x00; - UTF16[i * sizeof( short ) + 1] = a_String[i]; - } - a_Dst.append(UTF16.data(), a_String.size() * sizeof(short)); -} - - - - - -void cPacket::AppendShort(AString & a_Dst, short a_Short) -{ - short ConvertedShort = htons( a_Short ); - a_Dst.append((const char *)&ConvertedShort, sizeof(short)); -} - - - - - -void cPacket::AppendShort(AString & a_Dst, unsigned short a_Short) -{ - short ConvertedShort = htons( a_Short ); - a_Dst.append((const char *)&ConvertedShort, sizeof(short)); -} - - - - - -void cPacket::AppendInteger(AString & a_Dst, int a_Integer) -{ - int ConvertedInt = htonl( a_Integer ); - a_Dst.append((const char *)&ConvertedInt, sizeof(int)); -} - - - - - -void cPacket::AppendInteger(AString & a_Dst, unsigned int a_Integer) -{ - unsigned int ConvertedInt = htonl( a_Integer ); - a_Dst.append((const char *)&ConvertedInt, sizeof(int)); -} - - - - - -void cPacket::AppendFloat(AString & a_Dst, float a_Float) -{ - unsigned int ConvertedFloat = HostToNetwork4(&a_Float); - a_Dst.append((const char *)&ConvertedFloat, sizeof(int)); -} - - - - - -void cPacket::AppendDouble(AString & a_Dst, const double & a_Double) -{ - unsigned long long ConvertedDouble = HostToNetwork8(&a_Double); - a_Dst.append((const char *)&ConvertedDouble, 8); -} - - - - - -void cPacket::AppendByte(AString & a_Dst, char a_Byte) -{ - a_Dst.append(&a_Byte, 1); -} - - - - - -void cPacket::AppendLong(AString & a_Dst, const long long & a_Long) -{ - unsigned long long ConvertedLong = HostToNetwork8(&a_Long); - a_Dst.append((const char *)&ConvertedLong, sizeof(a_Long)); -} - - - - - -void cPacket::AppendBool(AString & a_Dst, bool a_Bool) -{ - a_Dst.append((const char *)&a_Bool, 1); -} - - - - - -void cPacket::AppendData(AString & a_Dst, const char * a_Data, unsigned int a_Size) -{ - a_Dst.append(a_Data, a_Size); -} - - - - diff --git a/source/packets/cPacket.h b/source/packets/cPacket.h deleted file mode 100644 index 580cd6771..000000000 --- a/source/packets/cPacket.h +++ /dev/null @@ -1,80 +0,0 @@ - -#pragma once - -#include "../cSocket.h" -#include "../PacketID.h" -#include "../ByteBuffer.h" - - - - - -enum -{ - PACKET_INCOMPLETE = -2, - PACKET_ERROR = -1, - PACKET_OK = 1, -} ; - - - - - -// Use this macro to simplify handling several ReadXXX in a row. It assumes that you want [a_Data, a_Size] parsed (which is true for all Parse() functions) -#define HANDLE_PACKET_READ(Proc, Var, TotalBytes) \ - { \ - if (!a_Buffer.Proc(Var)) \ - { \ - return PACKET_INCOMPLETE; \ - } \ - TotalBytes = PACKET_OK; \ - } - - - - - -class cPacket -{ -public: - cPacket() - : m_PacketID( 0 ) - {} - virtual ~cPacket() {} - - /// Called to parse the packet. Packet type has already been read and the correct packet type created. Return PACKET_INCOMPLETE for incomplete data, PACKET_ERROR for error, any positive number for success - virtual int Parse(cByteBuffer & a_Buffer) - { - // There are packets that are sent S->C only, those don't have a parsing function - UNUSED(a_Buffer); - LOGERROR("Packet type 0x%02x has no parser defined!", m_PacketID); - ASSERT(!"Unparsed packet type!"); - return PACKET_ERROR; - } - - virtual cPacket * Clone() const = 0; - - unsigned char m_PacketID; - -protected: - // These append the data into the a_Dst string: - static void AppendString ( AString & a_Dst, const AString & a_String); - static void AppendString16( AString & a_Dst, const AString & a_String); - static void AppendShort ( AString & a_Dst, short a_Short); - static void AppendShort ( AString & a_Dst, unsigned short a_Short); - static void AppendInteger ( AString & a_Dst, int a_Integer); - static void AppendInteger ( AString & a_Dst, unsigned int a_Integer); - static void AppendFloat ( AString & a_Dst, float a_Float); - static void AppendDouble ( AString & a_Dst, const double & a_Double); - static void AppendByte ( AString & a_Dst, char a_Byte); - static void AppendLong ( AString & a_Dst, const long long & a_Long); - static void AppendBool ( AString & a_Dst, bool a_Bool); - static void AppendData ( AString & a_Dst, const char * a_Data, unsigned int a_Size); -}; - -typedef std::list PacketList; -typedef std::deque PacketQueue; - - - - diff --git a/source/packets/cPacket_13.cpp b/source/packets/cPacket_13.cpp deleted file mode 100644 index f31c67704..000000000 --- a/source/packets/cPacket_13.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_13.h" - - - - - -int cPacket_13::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEInt, m_EntityID, TotalBytes); - HANDLE_PACKET_READ(ReadChar, m_ActionID, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_13.h b/source/packets/cPacket_13.h deleted file mode 100644 index c9f274b38..000000000 --- a/source/packets/cPacket_13.h +++ /dev/null @@ -1,34 +0,0 @@ -#pragma once - -#include "cPacket.h" - - -class cPacket_13 : public cPacket -{ -public: - enum ENUM_ACTION - { - ACTION_CROUCH = 1, - ACTION_UNCROUCH = 2, - ACTION_LEAVEBED = 3, - ACTION_STARTSPRINTING = 4, - ACTION_STOPSPRINTING = 5, - }; - - cPacket_13() - : m_EntityID( 0 ) - , m_ActionID( 0 ) - { m_PacketID = E_PACKET_ENTITY_ACTION; } - virtual cPacket* Clone() const { return new cPacket_13( *this ); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - int m_EntityID; - char m_ActionID; - - static const unsigned int c_Size = 1; -}; - - - - diff --git a/source/packets/cPacket_ArmAnim.cpp b/source/packets/cPacket_ArmAnim.cpp deleted file mode 100644 index 8d46da39f..000000000 --- a/source/packets/cPacket_ArmAnim.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_ArmAnim.h" - - - - - -int cPacket_ArmAnim::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEInt, m_EntityID, TotalBytes); - HANDLE_PACKET_READ(ReadChar, m_Animation, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_ArmAnim.h b/source/packets/cPacket_ArmAnim.h deleted file mode 100644 index c4f4694ce..000000000 --- a/source/packets/cPacket_ArmAnim.h +++ /dev/null @@ -1,30 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_ArmAnim : - public cPacket -{ -public: - cPacket_ArmAnim() - : m_EntityID( 0 ) - , m_Animation( 0 ) - { - m_PacketID = E_ANIMATION; - } - virtual cPacket* Clone() const { return new cPacket_ArmAnim(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - int m_EntityID; - char m_Animation; -}; - - - - diff --git a/source/packets/cPacket_BlockDig.cpp b/source/packets/cPacket_BlockDig.cpp deleted file mode 100644 index 8c7cc5955..000000000 --- a/source/packets/cPacket_BlockDig.cpp +++ /dev/null @@ -1,23 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_BlockDig.h" - - - - - -int cPacket_BlockDig::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadChar, m_Status, TotalBytes); - HANDLE_PACKET_READ(ReadBEInt, m_PosX, TotalBytes); - HANDLE_PACKET_READ(ReadChar, m_PosY, TotalBytes); - HANDLE_PACKET_READ(ReadBEInt, m_PosZ, TotalBytes); - HANDLE_PACKET_READ(ReadChar, m_Direction, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_BlockDig.h b/source/packets/cPacket_BlockDig.h deleted file mode 100644 index 1678dcaf3..000000000 --- a/source/packets/cPacket_BlockDig.h +++ /dev/null @@ -1,37 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_BlockDig : - public cPacket -{ -public: - cPacket_BlockDig() - : m_Status( 0 ) - , m_PosX( 0 ) - , m_PosY( 0 ) - , m_PosZ( 0 ) - , m_Direction( 0 ) - { - m_PacketID = E_BLOCK_DIG; - } - - virtual cPacket* Clone() const { return new cPacket_BlockDig(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - char m_Status; - int m_PosX; - char m_PosY; - int m_PosZ; - char m_Direction; -}; - - - - diff --git a/source/packets/cPacket_BlockPlace.cpp b/source/packets/cPacket_BlockPlace.cpp deleted file mode 100644 index 6b4219a8b..000000000 --- a/source/packets/cPacket_BlockPlace.cpp +++ /dev/null @@ -1,31 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_BlockPlace.h" -#include "cPacket_ItemData.h" - - - - - -int cPacket_BlockPlace::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEInt, m_PosX, TotalBytes); - HANDLE_PACKET_READ(ReadByte, m_PosY, TotalBytes); - HANDLE_PACKET_READ(ReadBEInt, m_PosZ, TotalBytes); - HANDLE_PACKET_READ(ReadChar, m_Direction, TotalBytes); - - cPacket_ItemData Item(m_HeldItem); - int res = Item.Parse(a_Buffer); - if (res < 0) - { - return res; - } - TotalBytes += res; - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_BlockPlace.h b/source/packets/cPacket_BlockPlace.h deleted file mode 100644 index 187abf549..000000000 --- a/source/packets/cPacket_BlockPlace.h +++ /dev/null @@ -1,38 +0,0 @@ - -#pragma once - -#include "cPacket.h" -#include "../cItem.h" - - - - - -class cPacket_BlockPlace : - public cPacket -{ -public: - cPacket_BlockPlace() - : m_PosX( 0 ) - , m_PosY( 0 ) - , m_PosZ( 0 ) - , m_Direction( 0 ) - { - m_PacketID = E_BLOCK_PLACE; - } - - virtual cPacket* Clone() const { return new cPacket_BlockPlace(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - int m_PosX; - unsigned char m_PosY; - int m_PosZ; - char m_Direction; - - cItem m_HeldItem; -} ; - - - - diff --git a/source/packets/cPacket_Chat.cpp b/source/packets/cPacket_Chat.cpp deleted file mode 100644 index b475848b0..000000000 --- a/source/packets/cPacket_Chat.cpp +++ /dev/null @@ -1,19 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_Chat.h" - - - - - -int cPacket_Chat::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEUTF16String16, m_Message, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_Chat.h b/source/packets/cPacket_Chat.h deleted file mode 100644 index ff5c70b5b..000000000 --- a/source/packets/cPacket_Chat.h +++ /dev/null @@ -1,24 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_Chat : - public cPacket -{ -public: - cPacket_Chat() { m_PacketID = E_CHAT; } - virtual cPacket* Clone() const { return new cPacket_Chat(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - AString m_Message; -}; - - - - diff --git a/source/packets/cPacket_CreativeInventoryAction.cpp b/source/packets/cPacket_CreativeInventoryAction.cpp deleted file mode 100644 index 41a45125b..000000000 --- a/source/packets/cPacket_CreativeInventoryAction.cpp +++ /dev/null @@ -1,40 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_CreativeInventoryAction.h" -#include "cPacket_ItemData.h" - - - - - -cPacket_CreativeInventoryAction::cPacket_CreativeInventoryAction( const cPacket_CreativeInventoryAction & a_Copy ) -{ - m_PacketID = E_CREATIVE_INVENTORY_ACTION; - m_SlotNum = a_Copy.m_SlotNum; - m_ClickedItem = a_Copy.m_ClickedItem; -} - - - - - -int cPacket_CreativeInventoryAction::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEShort, m_SlotNum, TotalBytes); - - cPacket_ItemData Item(m_ClickedItem); - int res = Item.Parse(a_Buffer); - if (res < 0) - { - return res; - } - TotalBytes += res; - return TotalBytes; -} - - - - - diff --git a/source/packets/cPacket_CreativeInventoryAction.h b/source/packets/cPacket_CreativeInventoryAction.h deleted file mode 100644 index 885478496..000000000 --- a/source/packets/cPacket_CreativeInventoryAction.h +++ /dev/null @@ -1,32 +0,0 @@ - -#pragma once - -#include "cPacket.h" -#include "../cItem.h" - - - - - -class cPacket_CreativeInventoryAction : - public cPacket -{ -public: - cPacket_CreativeInventoryAction() : - m_SlotNum(0) - { - m_PacketID = E_CREATIVE_INVENTORY_ACTION; - } - - cPacket_CreativeInventoryAction( const cPacket_CreativeInventoryAction & a_Copy ); - virtual cPacket* Clone() const { return new cPacket_CreativeInventoryAction(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - short m_SlotNum; - cItem m_ClickedItem; -} ; - - - - diff --git a/source/packets/cPacket_Disconnect.cpp b/source/packets/cPacket_Disconnect.cpp deleted file mode 100644 index d1d433475..000000000 --- a/source/packets/cPacket_Disconnect.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_Disconnect.h" - - - - - -int cPacket_Disconnect::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEUTF16String16, m_Reason, TotalBytes); - return TotalBytes; -} - - - - - diff --git a/source/packets/cPacket_Disconnect.h b/source/packets/cPacket_Disconnect.h deleted file mode 100644 index 77b6cf615..000000000 --- a/source/packets/cPacket_Disconnect.h +++ /dev/null @@ -1,25 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_Disconnect : public cPacket -{ -public: - cPacket_Disconnect() { m_PacketID = E_DISCONNECT; } - cPacket_Disconnect(const AString & a_Reason) { m_PacketID = E_DISCONNECT; m_Reason = a_Reason; } - virtual cPacket* Clone() const { return new cPacket_Disconnect(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - AString m_Reason; - static const unsigned int c_Size = 3; // Minimum size -}; - - - - diff --git a/source/packets/cPacket_Explosion.cpp b/source/packets/cPacket_Explosion.cpp deleted file mode 100644 index d4a244c01..000000000 --- a/source/packets/cPacket_Explosion.cpp +++ /dev/null @@ -1,52 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_Explosion.h" - - - - - -cPacket_Explosion::~cPacket_Explosion() -{ - if( m_Records ) - { - delete [] m_Records; - } -} - - - - - -cPacket_Explosion::cPacket_Explosion( const cPacket_Explosion & a_Copy ) -{ - m_PacketID = E_EXPLOSION; - m_PosX = a_Copy.m_PosX; - m_PosY = a_Copy.m_PosY; - m_PosZ = a_Copy.m_PosZ; - m_Radius = a_Copy.m_Radius; //might not be radius - m_RecordsCount= a_Copy.m_RecordsCount; - - m_Records = new char[(m_RecordsCount * 3)]; - memcpy( m_Records, a_Copy.m_Records, (m_RecordsCount * 3) ); -} - - - - - -void cPacket_Explosion::Serialize(AString & a_Data) const -{ - AppendByte (a_Data, m_PacketID); - AppendDouble (a_Data, m_PosX); - AppendDouble (a_Data, m_PosY); - AppendDouble (a_Data, m_PosZ); - AppendFloat (a_Data, m_Radius); - AppendInteger(a_Data, m_RecordsCount); - AppendData (a_Data, m_Records, (m_RecordsCount * 3)); -} - - - - diff --git a/source/packets/cPacket_Explosion.h b/source/packets/cPacket_Explosion.h deleted file mode 100644 index 468d72fe4..000000000 --- a/source/packets/cPacket_Explosion.h +++ /dev/null @@ -1,40 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_Explosion : public cPacket -{ -public: - cPacket_Explosion() - : m_PosX( 0 ) - , m_PosY( 0 ) - , m_PosZ( 0 ) - , m_Radius( 0 ) - , m_RecordsCount( 0 ) - , m_Records( 0 ) - { m_PacketID = E_EXPLOSION; m_Records = 0; } - cPacket_Explosion( const cPacket_Explosion & a_Copy ); - ~cPacket_Explosion(); - virtual cPacket* Clone() const { return new cPacket_Explosion(*this); } - - virtual void Serialize(AString & a_Data) const; - - double m_PosX; // The entity ID of the thunderbolt - double m_PosY; // Always true. Might have a meaning in the future... - double m_PosZ; // Thunderbolt X as Absolute Integer - float m_Radius; // Thunderbolt Y as Absolute Integer - int m_RecordsCount; // Thunderbolt Z as Absolute Integer - - static const unsigned int c_Size = 1 + 8 + 8 + 8 + 4 + 4; - - char* m_Records; -}; - - - - diff --git a/source/packets/cPacket_Flying.cpp b/source/packets/cPacket_Flying.cpp deleted file mode 100644 index bc730cb5e..000000000 --- a/source/packets/cPacket_Flying.cpp +++ /dev/null @@ -1,19 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_Flying.h" - - - - - -int cPacket_Flying::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes= 0; - HANDLE_PACKET_READ(ReadBool, m_bFlying, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_Flying.h b/source/packets/cPacket_Flying.h deleted file mode 100644 index 52f33e7fd..000000000 --- a/source/packets/cPacket_Flying.h +++ /dev/null @@ -1,27 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_Flying : public cPacket -{ -public: - // The BS packet - cPacket_Flying() - : m_bFlying( false ) - { m_PacketID = E_FLYING; } - virtual cPacket* Clone() const { return new cPacket_Flying(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - bool m_bFlying; - static const unsigned int c_Size = 2; -}; - - - - diff --git a/source/packets/cPacket_Handshake.cpp b/source/packets/cPacket_Handshake.cpp deleted file mode 100644 index 5229cdba3..000000000 --- a/source/packets/cPacket_Handshake.cpp +++ /dev/null @@ -1,19 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_Handshake.h" - - - - - -int cPacket_Handshake::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEUTF16String16, m_Username, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_Handshake.h b/source/packets/cPacket_Handshake.h deleted file mode 100644 index 86bc8a286..000000000 --- a/source/packets/cPacket_Handshake.h +++ /dev/null @@ -1,23 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_Handshake : public cPacket -{ -public: - cPacket_Handshake() { m_PacketID = E_HANDSHAKE; } - virtual cPacket* Clone() const { return new cPacket_Handshake(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - std::string m_Username; -}; - - - - diff --git a/source/packets/cPacket_ItemData.cpp b/source/packets/cPacket_ItemData.cpp deleted file mode 100644 index 4f0803475..000000000 --- a/source/packets/cPacket_ItemData.cpp +++ /dev/null @@ -1,90 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_ItemData.h" - - - - - -int cPacket_ItemData::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEShort, m_Dst.m_ItemType, TotalBytes); - - if (m_Dst.m_ItemType <= -1) - { - m_Dst.Empty(); - return TotalBytes; - } - - HANDLE_PACKET_READ(ReadChar, m_Dst.m_ItemCount, TotalBytes); - HANDLE_PACKET_READ(ReadBEShort, m_Dst.m_ItemDamage, TotalBytes); - - if (cItem::IsEnchantable(m_Dst.m_ItemType)) - { - short EnchantNumBytes; - HANDLE_PACKET_READ(ReadBEShort, EnchantNumBytes, TotalBytes); - - if (EnchantNumBytes > 0) - { - // TODO: Enchantment not implemented yet! - a_Buffer.SkipRead(EnchantNumBytes); - } - } - return TotalBytes; -} - - - - - -int cPacket_ItemData::GetSize(short a_ItemID) -{ - if(a_ItemID <= -1) - return 2; - if(cItem::IsEnchantable((ENUM_ITEM_ID) a_ItemID)) - return 7; - return 5; -} - - - - - -void cPacket_ItemData::AppendItem(AString & a_Data, const cItem & a_Item) -{ - return AppendItem(a_Data, a_Item.m_ItemType, a_Item.m_ItemCount, a_Item.m_ItemDamage); -} - - - - - -void cPacket_ItemData::AppendItem(AString & a_Data, short a_ItemType, char a_Quantity, short a_Damage) -{ - short ItemType = a_ItemType; - ASSERT(ItemType >= -1); // Check validity of packets in debug runtime - if (ItemType <= 0) - { - // Fix, to make sure no invalid values are sent. - ItemType = -1; - } - - AppendShort(a_Data, ItemType); - if (a_ItemType > -1) - { - AppendByte (a_Data, a_Quantity); - AppendShort(a_Data, a_Damage); - - if (cItem::IsEnchantable(a_ItemType)) - { - // TODO: Implement enchantments - AppendShort(a_Data, (short) -1); - } - } -} - - - - diff --git a/source/packets/cPacket_ItemData.h b/source/packets/cPacket_ItemData.h deleted file mode 100644 index e1a6c547d..000000000 --- a/source/packets/cPacket_ItemData.h +++ /dev/null @@ -1,34 +0,0 @@ - -#pragma once - - -#include "cPacket.h" -#include "../cItem.h" - - - - - -class cPacket_ItemData : public cPacket -{ - cItem & m_Dst; - -public: - cPacket_ItemData(cItem & a_Dst) : - m_Dst(a_Dst) - { - } - - virtual cPacket * Clone() const { return new cPacket_ItemData(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - static void AppendItem(AString & a_Data, short a_ItemType, char a_Quantity, short a_Damage); - static void AppendItem(AString & a_Data, const cItem & a_Item); - - int GetSize(short a_ItemID); -} ; - - - - diff --git a/source/packets/cPacket_ItemSwitch.cpp b/source/packets/cPacket_ItemSwitch.cpp deleted file mode 100644 index 864214a66..000000000 --- a/source/packets/cPacket_ItemSwitch.cpp +++ /dev/null @@ -1,19 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_ItemSwitch.h" - - - - - -int cPacket_ItemSwitch::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEShort, m_SlotNum, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_ItemSwitch.h b/source/packets/cPacket_ItemSwitch.h deleted file mode 100644 index 667b24044..000000000 --- a/source/packets/cPacket_ItemSwitch.h +++ /dev/null @@ -1,25 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_ItemSwitch : public cPacket -{ -public: - cPacket_ItemSwitch() - : m_SlotNum( 0 ) - { m_PacketID = E_ITEM_SWITCH; } - virtual cPacket* Clone() const { return new cPacket_ItemSwitch(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - short m_SlotNum; -}; - - - - diff --git a/source/packets/cPacket_KeepAlive.cpp b/source/packets/cPacket_KeepAlive.cpp deleted file mode 100644 index 090e90671..000000000 --- a/source/packets/cPacket_KeepAlive.cpp +++ /dev/null @@ -1,19 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_KeepAlive.h" - - - - - -int cPacket_KeepAlive::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEInt, m_KeepAliveID, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_KeepAlive.h b/source/packets/cPacket_KeepAlive.h deleted file mode 100644 index b68aa5691..000000000 --- a/source/packets/cPacket_KeepAlive.h +++ /dev/null @@ -1,24 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_KeepAlive : public cPacket -{ -public: - cPacket_KeepAlive() { m_PacketID = E_KEEP_ALIVE; } - cPacket_KeepAlive(int a_PingID) { m_KeepAliveID = a_PingID; } - virtual cPacket * Clone() const { return new cPacket_KeepAlive(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - int m_KeepAliveID; -}; - - - - diff --git a/source/packets/cPacket_Login.cpp b/source/packets/cPacket_Login.cpp deleted file mode 100644 index 017227071..000000000 --- a/source/packets/cPacket_Login.cpp +++ /dev/null @@ -1,34 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_Login.h" - - - - - -const char * cPacket_Login::LEVEL_TYPE_DEFAULT = "DEFAULT"; -const char * cPacket_Login::LEVEL_TYPE_SUPERFLAT = "SUPERFLAT"; - - - - - -int cPacket_Login::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - m_Username.clear(); - HANDLE_PACKET_READ(ReadBEInt, m_ProtocolVersion, TotalBytes); - HANDLE_PACKET_READ(ReadBEUTF16String16, m_Username, TotalBytes); - HANDLE_PACKET_READ(ReadBEUTF16String16, m_LevelType, TotalBytes); - HANDLE_PACKET_READ(ReadBEInt, m_ServerMode, TotalBytes); - HANDLE_PACKET_READ(ReadBEInt, m_Dimension, TotalBytes); - HANDLE_PACKET_READ(ReadChar, m_Difficulty, TotalBytes); - HANDLE_PACKET_READ(ReadByte, m_WorldHeight, TotalBytes); - HANDLE_PACKET_READ(ReadByte, m_MaxPlayers, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_Login.h b/source/packets/cPacket_Login.h deleted file mode 100644 index df7545edd..000000000 --- a/source/packets/cPacket_Login.h +++ /dev/null @@ -1,41 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_Login : public cPacket -{ -public: - cPacket_Login() - : m_ProtocolVersion( 0 ) - , m_ServerMode( 0 ) - , m_Dimension( 0 ) - , m_Difficulty( 0 ) - , m_WorldHeight( 0 ) - , m_MaxPlayers( 0 ) - , m_LevelType( LEVEL_TYPE_DEFAULT ) - { m_PacketID = E_LOGIN; } - virtual cPacket* Clone() const { return new cPacket_Login(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - int m_ProtocolVersion; - AString m_Username; - AString m_LevelType; - int m_ServerMode; - int m_Dimension; - char m_Difficulty; - unsigned char m_WorldHeight; - unsigned char m_MaxPlayers; - - static const char * LEVEL_TYPE_DEFAULT; - static const char * LEVEL_TYPE_SUPERFLAT; -}; - - - - diff --git a/source/packets/cPacket_MultiBlock.cpp b/source/packets/cPacket_MultiBlock.cpp deleted file mode 100644 index 68daf2700..000000000 --- a/source/packets/cPacket_MultiBlock.cpp +++ /dev/null @@ -1,49 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_MultiBlock.h" - - - - - -cPacket_MultiBlock::cPacket_MultiBlock(const cPacket_MultiBlock & a_Copy) -{ - m_PacketID = E_MULTI_BLOCK; - m_ChunkX = a_Copy.m_ChunkX; - m_ChunkZ = a_Copy.m_ChunkZ; - m_NumBlocks = a_Copy.m_NumBlocks; - m_Data = new sBlockChange[m_NumBlocks]; - memcpy(m_Data, a_Copy.m_Data, sizeof(sBlockChange) * m_NumBlocks); -} - - - - - -cPacket_MultiBlock::~cPacket_MultiBlock() -{ - delete[] m_Data; -} - - - - - -void cPacket_MultiBlock::Serialize(AString & a_Data) const -{ - AppendByte (a_Data, m_PacketID); - AppendInteger(a_Data, m_ChunkX); - AppendInteger(a_Data, m_ChunkZ); - AppendShort (a_Data, m_NumBlocks); - - AppendInteger(a_Data, sizeof(*m_Data) * m_NumBlocks); - for (short i = 0; i < m_NumBlocks; ++i) - { - AppendInteger(a_Data, m_Data[i].Data); - } -} - - - - diff --git a/source/packets/cPacket_MultiBlock.h b/source/packets/cPacket_MultiBlock.h deleted file mode 100644 index 7399fe853..000000000 --- a/source/packets/cPacket_MultiBlock.h +++ /dev/null @@ -1,43 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_MultiBlock : public cPacket -{ -public: - struct sBlockChange - { - unsigned int Data; - // short Data; // 4bits metadata ... 12bits block ID - // short Coords; // 8bits Y ... 4bits Z ... 4bits X - }; - - cPacket_MultiBlock() - : m_ChunkX( 0 ) - , m_ChunkZ( 0 ) - , m_NumBlocks( 0 ) - , m_Data( NULL ) - { - m_PacketID = E_MULTI_BLOCK; - } - - cPacket_MultiBlock(const cPacket_MultiBlock & a_Copy); - ~cPacket_MultiBlock(); - virtual cPacket* Clone() const { return new cPacket_MultiBlock(*this); } - - virtual void Serialize(AString & a_Data) const override; - - int m_ChunkX; - int m_ChunkZ; - short m_NumBlocks; - sBlockChange * m_Data; // m_NumBlocks items in the array -}; - - - - diff --git a/source/packets/cPacket_Ping.h b/source/packets/cPacket_Ping.h deleted file mode 100644 index f74385a81..000000000 --- a/source/packets/cPacket_Ping.h +++ /dev/null @@ -1,24 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_Ping : public cPacket -{ -public: - cPacket_Ping() - { m_PacketID = E_PING; } - virtual cPacket* Clone() const { return new cPacket_Ping(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override {return 0; } - - static const unsigned int c_Size = 1; -}; - - - - diff --git a/source/packets/cPacket_Player.cpp b/source/packets/cPacket_Player.cpp deleted file mode 100644 index d0acc17d0..000000000 --- a/source/packets/cPacket_Player.cpp +++ /dev/null @@ -1,166 +0,0 @@ - -// cPacket_Player.cpp - -/* Implements the player-related packets: - - PlayerAbilities (0xca) - - PlayerListItem (0xc9) - - PlayerLook (0x0c) - - PlayerMoveLook (0x0d) - - PlayerPosition (0x0b) -*/ - -#include "Globals.h" - -#include "cPacket_Player.h" -#include "../cPlayer.h" -#include "../cChatColor.h" - - - - - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// cPacket_PlayerAbilities: - -int cPacket_PlayerAbilities::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBool, m_Invulnerable, TotalBytes); - HANDLE_PACKET_READ(ReadBool, m_IsFlying, TotalBytes); - HANDLE_PACKET_READ(ReadBool, m_CanFly, TotalBytes); - HANDLE_PACKET_READ(ReadBool, m_InstaMine, TotalBytes); - return TotalBytes; -} - - - - - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// cPacket_PlayerListItem: - -cPacket_PlayerListItem::cPacket_PlayerListItem(const AString & a_PlayerName, bool a_Online, short a_Ping) -{ - m_PacketID = E_PLAYER_LIST_ITEM; - m_PlayerName = a_PlayerName; - m_Online = a_Online; - m_Ping = a_Ping; -} - - - - - -int cPacket_PlayerListItem::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEUTF16String16, m_PlayerName, TotalBytes); - HANDLE_PACKET_READ(ReadBool, m_Online, TotalBytes); - HANDLE_PACKET_READ(ReadBEShort, m_Ping, TotalBytes); - return TotalBytes; -} - - - - - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// cPacket_PlayerLook: - -cPacket_PlayerLook::cPacket_PlayerLook( cPlayer* a_Player ) -{ - m_PacketID = E_PLAYERLOOK; - m_Rotation = a_Player->GetRotation(); - m_Pitch = a_Player->GetPitch(); - m_IsOnGround = a_Player->IsOnGround(); -} - - - - - -int cPacket_PlayerLook::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEFloat, m_Rotation, TotalBytes); - HANDLE_PACKET_READ(ReadBEFloat, m_Pitch, TotalBytes); - HANDLE_PACKET_READ(ReadBool, m_IsOnGround, TotalBytes); - return TotalBytes; -} - - - - - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// cPacket_PlayerMoveLook: - -cPacket_PlayerMoveLook::cPacket_PlayerMoveLook(const cPlayer & a_Player) -{ - m_PacketID = E_PLAYERMOVELOOK; - m_PosX = a_Player.GetPosX(); - m_PosY = a_Player.GetPosY() + 0.03; // Add a small amount so that the player doesn't start inside a block - m_PosZ = a_Player.GetPosZ(); - m_Stance = a_Player.GetStance() + 0.03; // Add a small amount so that the player doesn't start inside a block - m_Rotation = a_Player.GetRotation(); - m_Pitch = a_Player.GetPitch(); - m_IsOnGround = a_Player.IsOnGround(); -} - - - - - -int cPacket_PlayerMoveLook::Parse(cByteBuffer & a_Buffer) -{ - // NOTE that Stance and Y are swapped when sent C->S vs S->C - // This is the C->S case: - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEDouble, m_PosX, TotalBytes); - HANDLE_PACKET_READ(ReadBEDouble, m_PosY, TotalBytes); - HANDLE_PACKET_READ(ReadBEDouble, m_Stance, TotalBytes); - HANDLE_PACKET_READ(ReadBEDouble, m_PosZ, TotalBytes); - HANDLE_PACKET_READ(ReadBEFloat, m_Rotation, TotalBytes); - HANDLE_PACKET_READ(ReadBEFloat, m_Pitch, TotalBytes); - HANDLE_PACKET_READ(ReadBool, m_IsOnGround, TotalBytes); - // LOGD("Recv PML: {%0.2f, %0.2f, %0.2f}, Stance %0.2f, Gnd: %d", m_PosX, m_PosY, m_PosZ, m_Stance, m_IsOnGround ? 1 : 0); - return TotalBytes; -} - - - - - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// cPacket_PlayerPosition: - -cPacket_PlayerPosition::cPacket_PlayerPosition(const cPlayer & a_Player) -{ - m_PacketID = E_PLAYERPOS; - - m_PosX = a_Player.GetPosX(); - m_PosY = a_Player.GetPosY(); - m_PosZ = a_Player.GetPosZ(); - m_Stance = a_Player.GetStance(); - m_IsOnGround = a_Player.IsOnGround(); -} - - - - - -int cPacket_PlayerPosition::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEDouble, m_PosX, TotalBytes); - HANDLE_PACKET_READ(ReadBEDouble, m_PosY, TotalBytes); - HANDLE_PACKET_READ(ReadBEDouble, m_Stance, TotalBytes); - HANDLE_PACKET_READ(ReadBEDouble, m_PosZ, TotalBytes); - HANDLE_PACKET_READ(ReadBool, m_IsOnGround, TotalBytes); - // LOGD("Recv PlayerPos: {%0.2f %0.2f %0.2f}, Stance %0.2f, Gnd: %d", m_PosX, m_PosY, m_PosZ, m_Stance, m_IsOnGround ? 1 : 0); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_Player.h b/source/packets/cPacket_Player.h deleted file mode 100644 index 1a647a5fc..000000000 --- a/source/packets/cPacket_Player.h +++ /dev/null @@ -1,151 +0,0 @@ - -// cPacket_Player.h - -/* Interfaces to the player-related packets: - - PlayerAbilities (0xca) - - PlayerListItem (0xc9) - - PlayerLook (0x0c) - - PlayerMoveLook (0x0d) - - PlayerPosition (0x0b) -*/ - -#pragma once - - - - - -#include "cPacket.h" - - - - - -// fwd: -class cPlayer; - - - - - -class cPacket_PlayerAbilities : public cPacket -{ -public: - cPacket_PlayerAbilities(void) { m_PacketID = E_PLAYER_LIST_ITEM; } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - virtual cPacket * Clone() const { return new cPacket_PlayerAbilities(*this); } - - bool m_Invulnerable; // Speculation - bool m_IsFlying; - bool m_CanFly; - bool m_InstaMine; // Speculation -} ; - - - - - -class cPacket_PlayerListItem : public cPacket -{ -public: - cPacket_PlayerListItem() { m_PacketID = E_PLAYER_LIST_ITEM; } - cPacket_PlayerListItem(const AString & a_PlayerName, bool a_Online, short a_Ping); - - virtual int Parse(cByteBuffer & a_Buffer) override; - - virtual cPacket* Clone() const { return new cPacket_PlayerListItem(*this); } - - AString m_PlayerName; // Supports chat coloring, limited to 16 characters. - bool m_Online; - short m_Ping; -} ; - - - - - -class cPacket_PlayerLook : public cPacket -{ -public: - cPacket_PlayerLook() - : m_Rotation( 0 ) - , m_Pitch( 0 ) - , m_IsOnGround( false ) - { - m_PacketID = E_PLAYERLOOK; - } - - cPacket_PlayerLook( cPlayer* a_Player ); - virtual cPacket* Clone() const { return new cPacket_PlayerLook(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - float m_Rotation; - float m_Pitch; - bool m_IsOnGround; -} ; - - - - - -class cPacket_PlayerMoveLook : public cPacket -{ -public: - cPacket_PlayerMoveLook() - : m_PosX( 0.0 ) - , m_PosY( 0.0 ) - , m_Stance( 0.0 ) - , m_PosZ( 0.0 ) - , m_Rotation( 0.f ) - , m_Pitch( 0.f ) - , m_IsOnGround( false ) - { - m_PacketID = E_PLAYERMOVELOOK; - } - - cPacket_PlayerMoveLook(const cPlayer & a_Player); - virtual cPacket * Clone() const { return new cPacket_PlayerMoveLook(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - double m_PosX; - double m_PosY; - double m_Stance; - double m_PosZ; - float m_Rotation; - float m_Pitch; - bool m_IsOnGround; -} ; - - - - - -class cPacket_PlayerPosition : public cPacket -{ -public: - cPacket_PlayerPosition(const cPlayer & a_Player); - cPacket_PlayerPosition() - : m_PosX( 0.0 ) - , m_PosY( 0.0 ) - , m_PosZ( 0.0 ) - , m_Stance( 0.0 ) - , m_IsOnGround(true) - { m_PacketID = E_PLAYERPOS; } - virtual cPacket* Clone() const { return new cPacket_PlayerPosition(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - double m_PosX; - double m_PosY; - double m_PosZ; - double m_Stance; - bool m_IsOnGround; -} ; - - - - diff --git a/source/packets/cPacket_Respawn.cpp b/source/packets/cPacket_Respawn.cpp deleted file mode 100644 index 0e46ea01e..000000000 --- a/source/packets/cPacket_Respawn.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_Respawn.h" - - - - - -int cPacket_Respawn::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - - HANDLE_PACKET_READ(ReadBEInt, m_Dimension, TotalBytes); - HANDLE_PACKET_READ(ReadChar, m_Difficulty, TotalBytes); - HANDLE_PACKET_READ(ReadChar, m_CreativeMode, TotalBytes); - HANDLE_PACKET_READ(ReadBEShort, m_WorldHeight, TotalBytes); - HANDLE_PACKET_READ(ReadBEUTF16String16, m_LevelType, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_Respawn.h b/source/packets/cPacket_Respawn.h deleted file mode 100644 index 9292658e7..000000000 --- a/source/packets/cPacket_Respawn.h +++ /dev/null @@ -1,38 +0,0 @@ - -#pragma once - -#include "cPacket.h" -#include "cPacket_Login.h" - - - - - -class cPacket_Respawn : - public cPacket -{ -public: - cPacket_Respawn() - : m_Dimension(0) - , m_Difficulty(0) - , m_CreativeMode(0) - , m_WorldHeight(256) - , m_LevelType( cPacket_Login::LEVEL_TYPE_DEFAULT ) - { - m_PacketID = E_RESPAWN; - } - - virtual cPacket * Clone() const { return new cPacket_Respawn( *this ); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - int m_Dimension; - char m_Difficulty; - char m_CreativeMode; - short m_WorldHeight; - AString m_LevelType; -}; - - - - diff --git a/source/packets/cPacket_SoundEffect.cpp b/source/packets/cPacket_SoundEffect.cpp deleted file mode 100644 index efc9b8e6b..000000000 --- a/source/packets/cPacket_SoundEffect.cpp +++ /dev/null @@ -1,36 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_SoundEffect.h" - - - - - -cPacket_SoundEffect::cPacket_SoundEffect( const cPacket_SoundEffect & a_Copy ) -{ - m_PacketID = E_SOUND_EFFECT; - m_SoundID = a_Copy.m_SoundID; - m_PosX = a_Copy.m_PosX; - m_PosY = a_Copy.m_PosY; - m_PosZ = a_Copy.m_PosZ; - m_SoundData = a_Copy.m_SoundData; -} - - - - - -void cPacket_SoundEffect::Serialize(AString & a_Data) const -{ - AppendByte (a_Data, m_PacketID); - AppendInteger(a_Data, m_SoundID); - AppendInteger(a_Data, m_PosX); - AppendByte (a_Data, m_PosY); - AppendInteger(a_Data, m_PosZ); - AppendInteger(a_Data, m_SoundData); -} - - - - diff --git a/source/packets/cPacket_SoundEffect.h b/source/packets/cPacket_SoundEffect.h deleted file mode 100644 index 9293d53f0..000000000 --- a/source/packets/cPacket_SoundEffect.h +++ /dev/null @@ -1,36 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_SoundEffect : public cPacket -{ -public: - cPacket_SoundEffect() - : m_SoundID( 0 ) - , m_PosX( 0 ) - , m_PosY( 0 ) - , m_PosZ( 0 ) - , m_SoundData( 0 ) - { m_PacketID = E_SOUND_EFFECT; } - cPacket_SoundEffect( const cPacket_SoundEffect & a_Copy ); - virtual cPacket* Clone() const { return new cPacket_SoundEffect(*this); } - - virtual void Serialize(AString & a_Data) const override; - - int m_SoundID; // Sound ID - int m_PosX; // Block X Coordinate - char m_PosY; // Block Y Coordinate - int m_PosZ; // Block Z Coordinate - int m_SoundData;// Extra Sound Data - - static const unsigned int c_Size = 1 + 4 + 4 + 1 + 4 + 4; -}; - - - - diff --git a/source/packets/cPacket_UpdateSign.cpp b/source/packets/cPacket_UpdateSign.cpp deleted file mode 100644 index b258fc9c3..000000000 --- a/source/packets/cPacket_UpdateSign.cpp +++ /dev/null @@ -1,25 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_UpdateSign.h" - - - - - -int cPacket_UpdateSign::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEInt, m_BlockX, TotalBytes); - HANDLE_PACKET_READ(ReadBEShort, m_BlockY, TotalBytes); - HANDLE_PACKET_READ(ReadBEInt, m_BlockZ, TotalBytes); - HANDLE_PACKET_READ(ReadBEUTF16String16, m_Line1, TotalBytes); - HANDLE_PACKET_READ(ReadBEUTF16String16, m_Line2, TotalBytes); - HANDLE_PACKET_READ(ReadBEUTF16String16, m_Line3, TotalBytes); - HANDLE_PACKET_READ(ReadBEUTF16String16, m_Line4, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_UpdateSign.h b/source/packets/cPacket_UpdateSign.h deleted file mode 100644 index e7b4977b2..000000000 --- a/source/packets/cPacket_UpdateSign.h +++ /dev/null @@ -1,36 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_UpdateSign : public cPacket -{ -public: - cPacket_UpdateSign() - : m_BlockX( 0 ) - , m_BlockY( 0 ) - , m_BlockZ( 0 ) - { - m_PacketID = E_UPDATE_SIGN; - } - - virtual cPacket * Clone() const { return new cPacket_UpdateSign( *this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - int m_BlockX; - short m_BlockY; - int m_BlockZ; - AString m_Line1; - AString m_Line2; - AString m_Line3; - AString m_Line4; -}; - - - - diff --git a/source/packets/cPacket_UseEntity.cpp b/source/packets/cPacket_UseEntity.cpp deleted file mode 100644 index 9ecb3bffc..000000000 --- a/source/packets/cPacket_UseEntity.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_UseEntity.h" - - - - - -int cPacket_UseEntity::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadBEInt, m_SourceEntityID, TotalBytes); - HANDLE_PACKET_READ(ReadBEInt, m_TargetEntityID, TotalBytes); - HANDLE_PACKET_READ(ReadBool, m_IsLeftClick, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_UseEntity.h b/source/packets/cPacket_UseEntity.h deleted file mode 100644 index ff33ccd93..000000000 --- a/source/packets/cPacket_UseEntity.h +++ /dev/null @@ -1,33 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_UseEntity : - public cPacket -{ -public: - cPacket_UseEntity() - : m_SourceEntityID(0) - , m_TargetEntityID(0) - , m_IsLeftClick(false) - { - m_PacketID = E_USE_ENTITY; - } - - virtual cPacket * Clone() const { return new cPacket_UseEntity(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - int m_SourceEntityID; - int m_TargetEntityID; - bool m_IsLeftClick; -}; - - - - diff --git a/source/packets/cPacket_WindowClick.cpp b/source/packets/cPacket_WindowClick.cpp deleted file mode 100644 index a0a7afbda..000000000 --- a/source/packets/cPacket_WindowClick.cpp +++ /dev/null @@ -1,33 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_WindowClick.h" -#include "cPacket_ItemData.h" - - - - - -int cPacket_WindowClick::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadChar, m_WindowID, TotalBytes); - HANDLE_PACKET_READ(ReadBEShort, m_SlotNum, TotalBytes); - HANDLE_PACKET_READ(ReadBool, m_IsRightClick, TotalBytes); - HANDLE_PACKET_READ(ReadBEShort, m_TransactionID, TotalBytes); - HANDLE_PACKET_READ(ReadBool, m_IsShiftPressed, TotalBytes); - - cPacket_ItemData Item(m_HeldItem); - int res = Item.Parse(a_Buffer); - if (res < 0) - { - return res; - } - TotalBytes += res; - - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_WindowClick.h b/source/packets/cPacket_WindowClick.h deleted file mode 100644 index e0f6f964e..000000000 --- a/source/packets/cPacket_WindowClick.h +++ /dev/null @@ -1,39 +0,0 @@ - -#pragma once - -#include "cPacket.h" -#include "../cItem.h" - - - - - -class cPacket_WindowClick : public cPacket // [C -> S] -{ -public: - cPacket_WindowClick() - : m_WindowID( 0 ) - , m_SlotNum( 0 ) - , m_IsRightClick(false) - , m_TransactionID( 0 ) - , m_IsShiftPressed( false ) - { - m_PacketID = E_WINDOW_CLICK; - } - - virtual cPacket* Clone() const { return new cPacket_WindowClick(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - char m_WindowID; - short m_SlotNum; - bool m_IsRightClick; - short m_TransactionID; - bool m_IsShiftPressed; // Shift pressed when clicked? - - cItem m_HeldItem; -}; - - - - diff --git a/source/packets/cPacket_WindowClose.cpp b/source/packets/cPacket_WindowClose.cpp deleted file mode 100644 index f1280ae28..000000000 --- a/source/packets/cPacket_WindowClose.cpp +++ /dev/null @@ -1,19 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "cPacket_WindowClose.h" - - - - - -int cPacket_WindowClose::Parse(cByteBuffer & a_Buffer) -{ - int TotalBytes = 0; - HANDLE_PACKET_READ(ReadChar, m_WindowID, TotalBytes); - return TotalBytes; -} - - - - diff --git a/source/packets/cPacket_WindowClose.h b/source/packets/cPacket_WindowClose.h deleted file mode 100644 index 0851fa20d..000000000 --- a/source/packets/cPacket_WindowClose.h +++ /dev/null @@ -1,28 +0,0 @@ - -#pragma once - -#include "cPacket.h" - - - - - -class cPacket_WindowClose : public cPacket -{ -public: - cPacket_WindowClose() - : m_WindowID( 0 ) - { - m_PacketID = E_WINDOW_CLOSE; - } - - virtual cPacket* Clone() const { return new cPacket_WindowClose(*this); } - - virtual int Parse(cByteBuffer & a_Buffer) override; - - char m_WindowID; -}; - - - -