From 0e3b3be7662f03b7487408f70548eaca1188da3d Mon Sep 17 00:00:00 2001 From: Mattes D Date: Thu, 15 Dec 2016 20:21:43 +0100 Subject: [PATCH] Initial support for the 1.11 protocol. --- src/Chunk.cpp | 4 +- src/Chunk.h | 2 +- src/ChunkMap.cpp | 4 +- src/ChunkMap.h | 2 +- src/ClientHandle.cpp | 4 +- src/ClientHandle.h | 2 +- src/Entities/ArrowEntity.cpp | 2 +- src/Entities/Pickup.cpp | 2 +- src/Protocol/CMakeLists.txt | 20 +- src/Protocol/ChunkDataSerializer.cpp | 10 +- src/Protocol/Protocol.h | 2 +- src/Protocol/ProtocolRecognizer.cpp | 36 +- src/Protocol/ProtocolRecognizer.h | 7 +- .../{Protocol110x.cpp => Protocol_1_10.cpp} | 21 +- .../{Protocol110x.h => Protocol_1_10.h} | 23 +- src/Protocol/Protocol_1_11.cpp | 189 ++++++++++ src/Protocol/Protocol_1_11.h | 41 +++ .../{Protocol18x.cpp => Protocol_1_8.cpp} | 288 ++++++++------- .../{Protocol18x.h => Protocol_1_8.h} | 15 +- .../{Protocol19x.cpp => Protocol_1_9.cpp} | 337 +++++++++--------- .../{Protocol19x.h => Protocol_1_9.h} | 120 +++---- src/World.cpp | 4 +- src/World.h | 2 +- 23 files changed, 682 insertions(+), 455 deletions(-) rename src/Protocol/{Protocol110x.cpp => Protocol_1_10.cpp} (96%) rename src/Protocol/{Protocol110x.h => Protocol_1_10.h} (53%) create mode 100644 src/Protocol/Protocol_1_11.cpp create mode 100644 src/Protocol/Protocol_1_11.h rename src/Protocol/{Protocol18x.cpp => Protocol_1_8.cpp} (88%) rename src/Protocol/{Protocol18x.h => Protocol_1_8.h} (97%) rename src/Protocol/{Protocol19x.cpp => Protocol_1_9.cpp} (89%) rename src/Protocol/{Protocol19x.h => Protocol_1_9.h} (80%) diff --git a/src/Chunk.cpp b/src/Chunk.cpp index 28a7c7272..f1fd5d950 100644 --- a/src/Chunk.cpp +++ b/src/Chunk.cpp @@ -2909,7 +2909,7 @@ void cChunk::BroadcastBlockEntity(int a_BlockX, int a_BlockY, int a_BlockZ, cons -void cChunk::BroadcastCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, const cClientHandle * a_Exclude) +void cChunk::BroadcastCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count, const cClientHandle * a_Exclude) { for (auto itr = m_LoadedByClient.begin(); itr != m_LoadedByClient.end(); ++itr) { @@ -2917,7 +2917,7 @@ void cChunk::BroadcastCollectEntity(const cEntity & a_Entity, const cPlayer & a_ { continue; } - (*itr)->SendCollectEntity(a_Entity, a_Player); + (*itr)->SendCollectEntity(a_Entity, a_Player, a_Count); } // for itr - LoadedByClient[] } diff --git a/src/Chunk.h b/src/Chunk.h index aae3b98f0..d7ebd2a77 100644 --- a/src/Chunk.h +++ b/src/Chunk.h @@ -348,7 +348,7 @@ public: void BroadcastBlockAction (int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType, const cClientHandle * a_Exclude = nullptr); void BroadcastBlockBreakAnimation(UInt32 a_EntityID, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Stage, const cClientHandle * a_Exclude = nullptr); void BroadcastBlockEntity (int a_BlockX, int a_BlockY, int a_BlockZ, const cClientHandle * a_Exclude = nullptr); - void BroadcastCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player, const cClientHandle * a_Exclude = nullptr); + void BroadcastCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player, int a_Count, const cClientHandle * a_Exclude = nullptr); void BroadcastDestroyEntity (const cEntity & a_Entity, const cClientHandle * a_Exclude = nullptr); void BroadcastDetachEntity (const cEntity & a_Entity, const cEntity & a_PreviousVehicle); void BroadcastEntityEffect (const cEntity & a_Entity, int a_EffectID, int a_Amplifier, short a_Duration, const cClientHandle * a_Exclude = nullptr); diff --git a/src/ChunkMap.cpp b/src/ChunkMap.cpp index e608f6b30..ee097f59e 100644 --- a/src/ChunkMap.cpp +++ b/src/ChunkMap.cpp @@ -332,7 +332,7 @@ void cChunkMap::BroadcastBlockEntity(int a_BlockX, int a_BlockY, int a_BlockZ, c -void cChunkMap::BroadcastCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, const cClientHandle * a_Exclude) +void cChunkMap::BroadcastCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count, const cClientHandle * a_Exclude) { cCSLock Lock(m_CSChunks); cChunkPtr Chunk = GetChunkNoGen(a_Entity.GetChunkX(), a_Entity.GetChunkZ()); @@ -341,7 +341,7 @@ void cChunkMap::BroadcastCollectEntity(const cEntity & a_Entity, const cPlayer & return; } // It's perfectly legal to broadcast packets even to invalid chunks! - Chunk->BroadcastCollectEntity(a_Entity, a_Player, a_Exclude); + Chunk->BroadcastCollectEntity(a_Entity, a_Player, a_Count, a_Exclude); } diff --git a/src/ChunkMap.h b/src/ChunkMap.h index 871881483..2272567af 100644 --- a/src/ChunkMap.h +++ b/src/ChunkMap.h @@ -75,7 +75,7 @@ public: void BroadcastBlockAction(int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType, const cClientHandle * a_Exclude = nullptr); void BroadcastBlockBreakAnimation(UInt32 a_EntityID, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Stage, const cClientHandle * a_Exclude = nullptr); void BroadcastBlockEntity(int a_BlockX, int a_BlockY, int a_BlockZ, const cClientHandle * a_Exclude); - void BroadcastCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, const cClientHandle * a_Exclude = nullptr); + void BroadcastCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count, const cClientHandle * a_Exclude = nullptr); void BroadcastDestroyEntity(const cEntity & a_Entity, const cClientHandle * a_Exclude = nullptr); void BroadcastDetachEntity(const cEntity & a_Entity, const cEntity & a_PreviousVehicle); void BroadcastEntityEffect(const cEntity & a_Entity, int a_EffectID, int a_Amplifier, short a_Duration, const cClientHandle * a_Exclude = nullptr); diff --git a/src/ClientHandle.cpp b/src/ClientHandle.cpp index a4b176efa..0d6655693 100644 --- a/src/ClientHandle.cpp +++ b/src/ClientHandle.cpp @@ -2426,9 +2426,9 @@ void cClientHandle::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerializ -void cClientHandle::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player) +void cClientHandle::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) { - m_Protocol->SendCollectEntity(a_Entity, a_Player); + m_Protocol->SendCollectEntity(a_Entity, a_Player, a_Count); } diff --git a/src/ClientHandle.h b/src/ClientHandle.h index 8b6a78127..95598838e 100644 --- a/src/ClientHandle.h +++ b/src/ClientHandle.h @@ -164,7 +164,7 @@ public: // tolua_export void SendChatSystem (const AString & a_Message, eMessageType a_ChatPrefix, const AString & a_AdditionalData = ""); void SendChatSystem (const cCompositeChat & a_Message); void SendChunkData (int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer); - void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player); + void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player, int a_Count); void SendDestroyEntity (const cEntity & a_Entity); void SendDetachEntity (const cEntity & a_Entity, const cEntity & a_PreviousVehicle); void SendDisconnect (const AString & a_Reason); diff --git a/src/Entities/ArrowEntity.cpp b/src/Entities/ArrowEntity.cpp index 366592549..532d83b23 100644 --- a/src/Entities/ArrowEntity.cpp +++ b/src/Entities/ArrowEntity.cpp @@ -167,7 +167,7 @@ void cArrowEntity::CollectedBy(cPlayer & a_Dest) } } - GetWorld()->BroadcastCollectEntity(*this, a_Dest); + GetWorld()->BroadcastCollectEntity(*this, a_Dest, 1); GetWorld()->BroadcastSoundEffect("random.pop", GetPosX(), GetPosY(), GetPosZ(), 0.5, static_cast(0.75 + (static_cast((GetUniqueID() * 23) % 32)) / 64)); m_bIsCollected = true; } diff --git a/src/Entities/Pickup.cpp b/src/Entities/Pickup.cpp index b1892e4cc..f000e60f3 100644 --- a/src/Entities/Pickup.cpp +++ b/src/Entities/Pickup.cpp @@ -234,7 +234,7 @@ bool cPickup::CollectedBy(cPlayer & a_Dest) } m_Item.m_ItemCount -= NumAdded; - m_World->BroadcastCollectEntity(*this, a_Dest); + m_World->BroadcastCollectEntity(*this, a_Dest, NumAdded); // Also send the "pop" sound effect with a somewhat random pitch (fast-random using EntityID ;) m_World->BroadcastSoundEffect("random.pop", GetPosX(), GetPosY(), GetPosZ(), 0.5, (0.75f + (static_cast((GetUniqueID() * 23) % 32)) / 64)); diff --git a/src/Protocol/CMakeLists.txt b/src/Protocol/CMakeLists.txt index 13afb76f4..e8e485ddf 100644 --- a/src/Protocol/CMakeLists.txt +++ b/src/Protocol/CMakeLists.txt @@ -7,9 +7,10 @@ SET (SRCS ChunkDataSerializer.cpp MojangAPI.cpp Packetizer.cpp - Protocol18x.cpp - Protocol19x.cpp - Protocol110x.cpp + Protocol_1_8.cpp + Protocol_1_9.cpp + Protocol_1_10.cpp + Protocol_1_11.cpp ProtocolRecognizer.cpp ) @@ -19,16 +20,17 @@ SET (HDRS MojangAPI.h Packetizer.h Protocol.h - Protocol18x.h - Protocol19x.h - Protocol110x.h + Protocol_1_8.h + Protocol_1_9.h + Protocol_1_10.h + Protocol_1_11.h ProtocolRecognizer.h ) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set_source_files_properties(Protocol19x.cpp PROPERTIES COMPILE_FLAGS "-Wno-error=switch-enum -Wno-error=switch") - set_source_files_properties(Protocol18x.cpp PROPERTIES COMPILE_FLAGS "-Wno-error=switch-enum -Wno-error=switch") - set_source_files_properties(Protocol110x.cpp PROPERTIES COMPILE_FLAGS "-Wno-error=switch") + set_source_files_properties(Protocol_1_9.cpp PROPERTIES COMPILE_FLAGS "-Wno-error=switch-enum -Wno-error=switch") + set_source_files_properties(Protocol_1_8.cpp PROPERTIES COMPILE_FLAGS "-Wno-error=switch-enum -Wno-error=switch") + set_source_files_properties(Protocol_1_10.cpp PROPERTIES COMPILE_FLAGS "-Wno-error=switch") endif() if (NOT MSVC) diff --git a/src/Protocol/ChunkDataSerializer.cpp b/src/Protocol/ChunkDataSerializer.cpp index c7fd504a1..bbedb3c59 100644 --- a/src/Protocol/ChunkDataSerializer.cpp +++ b/src/Protocol/ChunkDataSerializer.cpp @@ -9,8 +9,8 @@ #include "ChunkDataSerializer.h" #include "zlib/zlib.h" #include "ByteBuffer.h" -#include "Protocol18x.h" -#include "Protocol19x.h" +#include "Protocol_1_8.h" +#include "Protocol_1_9.h" @@ -111,7 +111,7 @@ void cChunkDataSerializer::Serialize47(AString & a_Data, int a_ChunkX, int a_Chu cByteBuffer Buffer(20); if (PacketData.size() >= 256) { - if (!cProtocol180::CompressPacket(PacketData, a_Data)) + if (!cProtocol_1_8_0::CompressPacket(PacketData, a_Data)) { ASSERT(!"Packet compression failed."); a_Data.clear(); @@ -254,7 +254,7 @@ void cChunkDataSerializer::Serialize107(AString & a_Data, int a_ChunkX, int a_Ch cByteBuffer Buffer(20); if (PacketData.size() >= 256) { - if (!cProtocol190::CompressPacket(PacketData, a_Data)) + if (!cProtocol_1_9_0::CompressPacket(PacketData, a_Data)) { ASSERT(!"Packet compression failed."); a_Data.clear(); @@ -400,7 +400,7 @@ void cChunkDataSerializer::Serialize110(AString & a_Data, int a_ChunkX, int a_Ch cByteBuffer Buffer(20); if (PacketData.size() >= 256) { - if (!cProtocol190::CompressPacket(PacketData, a_Data)) + if (!cProtocol_1_9_0::CompressPacket(PacketData, a_Data)) { ASSERT(!"Packet compression failed."); a_Data.clear(); diff --git a/src/Protocol/Protocol.h b/src/Protocol/Protocol.h index 137a47acc..d20c37a29 100644 --- a/src/Protocol/Protocol.h +++ b/src/Protocol/Protocol.h @@ -74,7 +74,7 @@ public: virtual void SendChat (const cCompositeChat & a_Message, eChatType a_Type, bool a_ShouldUseChatPrefixes) = 0; virtual void SendChatRaw (const AString & a_MessageRaw, eChatType a_Type) = 0; virtual void SendChunkData (int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) = 0; - virtual void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player) = 0; + virtual void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) = 0; virtual void SendDestroyEntity (const cEntity & a_Entity) = 0; virtual void SendDetachEntity (const cEntity & a_Entity, const cEntity & a_PreviousVehicle) = 0; virtual void SendDisconnect (const AString & a_Reason) = 0; diff --git a/src/Protocol/ProtocolRecognizer.cpp b/src/Protocol/ProtocolRecognizer.cpp index 0c67f66f5..04ac1bb2b 100644 --- a/src/Protocol/ProtocolRecognizer.cpp +++ b/src/Protocol/ProtocolRecognizer.cpp @@ -7,9 +7,10 @@ #include "Globals.h" #include "ProtocolRecognizer.h" -#include "Protocol18x.h" -#include "Protocol19x.h" -#include "Protocol110x.h" +#include "Protocol_1_8.h" +#include "Protocol_1_9.h" +#include "Protocol_1_10.h" +#include "Protocol_1_11.h" #include "Packetizer.h" #include "../ClientHandle.h" #include "../Root.h" @@ -53,7 +54,8 @@ AString cProtocolRecognizer::GetVersionTextFromInt(int a_ProtocolVersion) case PROTO_VERSION_1_9_1: return "1.9.1"; case PROTO_VERSION_1_9_2: return "1.9.2"; case PROTO_VERSION_1_9_4: return "1.9.4"; - case PROTO_VERSION_1_10_0: return "1.10"; + case PROTO_VERSION_1_10_0: return "1.10"; + case PROTO_VERSION_1_11_0: return "1.11"; } ASSERT(!"Unknown protocol version"); return Printf("Unknown protocol (%d)", a_ProtocolVersion); @@ -220,10 +222,10 @@ void cProtocolRecognizer::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSe -void cProtocolRecognizer::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player) +void cProtocolRecognizer::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) { ASSERT(m_Protocol != nullptr); - m_Protocol->SendCollectEntity(a_Entity, a_Player); + m_Protocol->SendCollectEntity(a_Entity, a_Player, a_Count); } @@ -978,8 +980,7 @@ void cProtocolRecognizer::SendData(const char * a_Data, size_t a_Size) bool cProtocolRecognizer::TryRecognizeProtocol(void) { - // NOTE: If a new protocol is added or an old one is removed, adjust MCS_CLIENT_VERSIONS and - // MCS_PROTOCOL_VERSIONS macros in the header file, as well as PROTO_VERSION_LATEST macro + // NOTE: If a new protocol is added or an old one is removed, adjust MCS_CLIENT_VERSIONS and MCS_PROTOCOL_VERSIONS macros in the header file // Lengthed protocol, try if it has the entire initial handshake packet: UInt32 PacketLen; @@ -1045,37 +1046,42 @@ bool cProtocolRecognizer::TryRecognizeLengthedProtocol(UInt32 a_PacketLengthRema case PROTO_VERSION_1_8_0: { m_Buffer.CommitRead(); - m_Protocol = new cProtocol180(m_Client, ServerAddress, ServerPort, NextState); + m_Protocol = new cProtocol_1_8_0(m_Client, ServerAddress, ServerPort, NextState); return true; } case PROTO_VERSION_1_9_0: { - m_Protocol = new cProtocol190(m_Client, ServerAddress, ServerPort, NextState); + m_Protocol = new cProtocol_1_9_0(m_Client, ServerAddress, ServerPort, NextState); return true; } case PROTO_VERSION_1_9_1: { - m_Protocol = new cProtocol191(m_Client, ServerAddress, ServerPort, NextState); + m_Protocol = new cProtocol_1_9_1(m_Client, ServerAddress, ServerPort, NextState); return true; } case PROTO_VERSION_1_9_2: { - m_Protocol = new cProtocol192(m_Client, ServerAddress, ServerPort, NextState); + m_Protocol = new cProtocol_1_9_2(m_Client, ServerAddress, ServerPort, NextState); return true; } case PROTO_VERSION_1_9_4: { - m_Protocol = new cProtocol194(m_Client, ServerAddress, ServerPort, NextState); + m_Protocol = new cProtocol_1_9_4(m_Client, ServerAddress, ServerPort, NextState); return true; } case PROTO_VERSION_1_10_0: { - m_Protocol = new cProtocol1100(m_Client, ServerAddress, ServerPort, NextState); + m_Protocol = new cProtocol_1_10_0(m_Client, ServerAddress, ServerPort, NextState); + return true; + } + case PROTO_VERSION_1_11_0: + { + m_Protocol = new cProtocol_1_11_0(m_Client, ServerAddress, ServerPort, NextState); return true; } default: { - LOGINFO("Client \"%s\" uses an unsupported protocol (lengthed, version %u (0x%x))", + LOGD("Client \"%s\" uses an unsupported protocol (lengthed, version %u (0x%x))", m_Client->GetIPString().c_str(), ProtocolVersion, ProtocolVersion ); if (NextState != 1) diff --git a/src/Protocol/ProtocolRecognizer.h b/src/Protocol/ProtocolRecognizer.h index 560819705..081b2136e 100644 --- a/src/Protocol/ProtocolRecognizer.h +++ b/src/Protocol/ProtocolRecognizer.h @@ -18,8 +18,8 @@ // Adjust these if a new protocol is added or an old one is removed: -#define MCS_CLIENT_VERSIONS "1.8.x, 1.9.x, 1.10.x" -#define MCS_PROTOCOL_VERSIONS "47, 107, 108, 109, 110, 210" +#define MCS_CLIENT_VERSIONS "1.8.x, 1.9.x, 1.10.x, 1.11" +#define MCS_PROTOCOL_VERSIONS "47, 107, 108, 109, 110, 210, 315" @@ -39,6 +39,7 @@ public: PROTO_VERSION_1_9_2 = 109, PROTO_VERSION_1_9_4 = 110, PROTO_VERSION_1_10_0 = 210, + PROTO_VERSION_1_11_0 = 315, } ; cProtocolRecognizer(cClientHandle * a_Client); @@ -61,7 +62,7 @@ public: virtual void SendChat (const cCompositeChat & a_Message, eChatType a_Type, bool a_ShouldUseChatPrefixes) override; virtual void SendChatRaw (const AString & a_MessageRaw, eChatType a_Type) override; virtual void SendChunkData (int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) override; - virtual void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player) override; + virtual void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) override; virtual void SendDestroyEntity (const cEntity & a_Entity) override; virtual void SendDetachEntity (const cEntity & a_Entity, const cEntity & a_PreviousVehicle) override; virtual void SendDisconnect (const AString & a_Reason) override; diff --git a/src/Protocol/Protocol110x.cpp b/src/Protocol/Protocol_1_10.cpp similarity index 96% rename from src/Protocol/Protocol110x.cpp rename to src/Protocol/Protocol_1_10.cpp index 48ea0c6ba..c0d9d921f 100644 --- a/src/Protocol/Protocol110x.cpp +++ b/src/Protocol/Protocol_1_10.cpp @@ -1,15 +1,14 @@ -// Protocol110x.cpp +// Protocol_1_10.cpp /* -Implements the 1.10.x protocol classes: - - cProtocol1100 - - release 1.10.0 protocol (#210) -(others may be added later in the future for the 1.10 release series) +Implements the 1.10 protocol classes: + - cProtocol_1_10_0 + - release 1.10 protocol (#210), also used by 1.10.1 and 1.10.2 */ #include "Globals.h" -#include "Protocol110x.h" +#include "Protocol_1_10.h" #include "Packetizer.h" #include "json/json.h" @@ -283,7 +282,7 @@ namespace Metadata -cProtocol1100::cProtocol1100(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : +cProtocol_1_10_0::cProtocol_1_10_0(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : super(a_Client, a_ServerAddress, a_ServerPort, a_State) { } @@ -292,7 +291,7 @@ cProtocol1100::cProtocol1100(cClientHandle * a_Client, const AString &a_ServerAd -void cProtocol1100::SendSoundEffect(const AString & a_SoundName, double a_X, double a_Y, double a_Z, float a_Volume, float a_Pitch) +void cProtocol_1_10_0::SendSoundEffect(const AString & a_SoundName, double a_X, double a_Y, double a_Z, float a_Volume, float a_Pitch) { ASSERT(m_State == 3); // In game mode? @@ -310,7 +309,7 @@ void cProtocol1100::SendSoundEffect(const AString & a_SoundName, double a_X, dou -void cProtocol1100::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) +void cProtocol_1_10_0::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) { cServer * Server = cRoot::Get()->GetServer(); AString ServerDescription = Server->GetDescription(); @@ -355,7 +354,7 @@ void cProtocol1100::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) -void cProtocol1100::WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_Entity) +void cProtocol_1_10_0::WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_Entity) { using namespace Metadata; @@ -552,7 +551,7 @@ void cProtocol1100::WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_E -void cProtocol1100::WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) +void cProtocol_1_10_0::WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) { using namespace Metadata; diff --git a/src/Protocol/Protocol110x.h b/src/Protocol/Protocol_1_10.h similarity index 53% rename from src/Protocol/Protocol110x.h rename to src/Protocol/Protocol_1_10.h index 64ef8acb5..df64758e4 100644 --- a/src/Protocol/Protocol110x.h +++ b/src/Protocol/Protocol_1_10.h @@ -1,11 +1,10 @@ -// Protocol110x.h +// Protocol_1_10.h /* -Declares the 1.10.x protocol classes: - - cProtocol1100 - - release 1.10.0 protocol (#210) -(others may be added later in the future for the 1.10 release series) +Declares the 1.10 protocol classes: + - cProtocol_1_10 + - release 1.10 protocol (#210), also used by 1.10.1 and 1.10.2 */ @@ -14,15 +13,19 @@ Declares the 1.10.x protocol classes: #pragma once -#include "Protocol19x.h" +#include "Protocol_1_9.h" -class cProtocol1100 : - public cProtocol194 + + + + +class cProtocol_1_10_0 : + public cProtocol_1_9_4 { - typedef cProtocol194 super; + typedef cProtocol_1_9_4 super; public: - cProtocol1100(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); + cProtocol_1_10_0(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); virtual void SendSoundEffect(const AString & a_SoundName, double a_X, double a_Y, double a_Z, float a_Volume, float a_Pitch) override; diff --git a/src/Protocol/Protocol_1_11.cpp b/src/Protocol/Protocol_1_11.cpp new file mode 100644 index 000000000..5d6eca508 --- /dev/null +++ b/src/Protocol/Protocol_1_11.cpp @@ -0,0 +1,189 @@ + +// Protocol_1_11.cpp + +/* +Implements the 1.11 protocol classes: + - cProtocol_1_11_0 + - release 1.11 protocol (#315) +(others may be added later in the future for the 1.11 release series) +*/ + +#include "Globals.h" +#include "Protocol_1_11.h" +#include "ProtocolRecognizer.h" +#include "Packetizer.h" + +#include "../Root.h" +#include "../Server.h" +#include "../ClientHandle.h" +#include "../CompositeChat.h" +#include "../Bindings/PluginManager.h" +#include "../Entities/Player.h" +#include "../Mobs/Monster.h" + + + + + +#define HANDLE_READ(ByteBuf, Proc, Type, Var) \ + Type Var; \ + if (!ByteBuf.Proc(Var))\ + {\ + return;\ + } + + + + + +cProtocol_1_11_0::cProtocol_1_11_0(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : + super(a_Client, a_ServerAddress, a_ServerPort, a_State) +{ +} + + + + + +void cProtocol_1_11_0::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) +{ + ASSERT(m_State == 3); // In game mode? + + cPacketizer Pkt(*this, 0x0d); // Collect Item packet + Pkt.WriteVarInt32(a_Entity.GetUniqueID()); + Pkt.WriteVarInt32(a_Player.GetUniqueID()); + Pkt.WriteVarInt32(static_cast(a_Count)); +} + + + + + +void cProtocol_1_11_0::SendHideTitle(void) +{ + ASSERT(m_State == 3); // In game mode? + + cPacketizer Pkt(*this, 0x45); // Title packet + Pkt.WriteVarInt32(4); // Hide title +} + + + + + +void cProtocol_1_11_0::SendResetTitle(void) +{ + ASSERT(m_State == 3); // In game mode? + + cPacketizer Pkt(*this, 0x45); // Title packet + Pkt.WriteVarInt32(5); // Reset title +} + + + + + +void cProtocol_1_11_0::SendSpawnMob(const cMonster & a_Mob) +{ + ASSERT(m_State == 3); // In game mode? + + cPacketizer Pkt(*this, 0x0f); // Spawn Mob packet + Pkt.WriteVarInt32(a_Mob.GetUniqueID()); + Pkt.WriteVarInt32(static_cast(a_Mob.GetMobType())); + Pkt.WriteFPInt(a_Mob.GetPosX()); + Pkt.WriteFPInt(a_Mob.GetPosY()); + Pkt.WriteFPInt(a_Mob.GetPosZ()); + Pkt.WriteByteAngle(a_Mob.GetPitch()); + Pkt.WriteByteAngle(a_Mob.GetHeadYaw()); + Pkt.WriteByteAngle(a_Mob.GetYaw()); + Pkt.WriteBEInt16(static_cast(a_Mob.GetSpeedX() * 400)); + Pkt.WriteBEInt16(static_cast(a_Mob.GetSpeedY() * 400)); + Pkt.WriteBEInt16(static_cast(a_Mob.GetSpeedZ() * 400)); + WriteEntityMetadata(Pkt, a_Mob); + Pkt.WriteBEUInt8(0x7f); // Metadata terminator +} + + + + + +void cProtocol_1_11_0::SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int a_FadeOutTicks) +{ + ASSERT(m_State == 3); // In game mode? + + cPacketizer Pkt(*this, 0x45); // Title packet + Pkt.WriteVarInt32(3); // Set title display times + Pkt.WriteBEInt32(a_FadeInTicks); + Pkt.WriteBEInt32(a_DisplayTicks); + Pkt.WriteBEInt32(a_FadeOutTicks); +} + + + + + + +void cProtocol_1_11_0::HandlePacketBlockPlace(cByteBuffer & a_ByteBuffer) +{ + int BlockX, BlockY, BlockZ; + if (!a_ByteBuffer.ReadPosition64(BlockX, BlockY, BlockZ)) + { + return; + } + + HANDLE_READ(a_ByteBuffer, ReadVarInt, Int32, Face); + HANDLE_READ(a_ByteBuffer, ReadVarInt, Int32, Hand); + HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, CursorX); + HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, CursorY); + HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, CursorZ); + m_Client->HandleRightClick(BlockX, BlockY, BlockZ, FaceIntToBlockFace(Face), FloorC(CursorX * 16), FloorC(CursorY * 16), FloorC(CursorZ * 16), m_Client->GetPlayer()->GetEquippedItem()); +} + + + + + +void cProtocol_1_11_0::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) +{ + cServer * Server = cRoot::Get()->GetServer(); + AString ServerDescription = Server->GetDescription(); + int NumPlayers = Server->GetNumPlayers(); + int MaxPlayers = Server->GetMaxPlayers(); + AString Favicon = Server->GetFaviconData(); + cRoot::Get()->GetPluginManager()->CallHookServerPing(*m_Client, ServerDescription, NumPlayers, MaxPlayers, Favicon); + + // Version: + Json::Value Version; + Version["name"] = "Cuberite 1.11"; + Version["protocol"] = cProtocolRecognizer::PROTO_VERSION_1_11_0; + + // Players: + Json::Value Players; + Players["online"] = NumPlayers; + Players["max"] = MaxPlayers; + // TODO: Add "sample" + + // Description: + Json::Value Description; + Description["text"] = ServerDescription.c_str(); + + // Create the response: + Json::Value ResponseValue; + ResponseValue["version"] = Version; + ResponseValue["players"] = Players; + ResponseValue["description"] = Description; + if (!Favicon.empty()) + { + ResponseValue["favicon"] = Printf("data:image/png;base64,%s", Favicon.c_str()); + } + + // Serialize the response into a packet: + Json::FastWriter Writer; + cPacketizer Pkt(*this, 0x00); // Response packet + Pkt.WriteString(Writer.write(ResponseValue)); +} + + + + + diff --git a/src/Protocol/Protocol_1_11.h b/src/Protocol/Protocol_1_11.h new file mode 100644 index 000000000..a3c7c4d58 --- /dev/null +++ b/src/Protocol/Protocol_1_11.h @@ -0,0 +1,41 @@ + +// Protocol_1_11.h + +/* +Declares the 1.11 protocol classes: + - cProtocol_1_11_0 + - release 1.11 protocol (#315) +(others may be added later in the future for the 1.11 release series) +*/ + + + + + +#pragma once + +#include "Protocol_1_10.h" + + + + + +class cProtocol_1_11_0 : + public cProtocol_1_10_0 +{ + typedef cProtocol_1_10_0 super; + +public: + cProtocol_1_11_0(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); + + virtual void SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) override; + virtual void SendHideTitle (void) override; + virtual void SendResetTitle (void) override; + virtual void SendSpawnMob (const cMonster & a_Mob) override; + virtual void SendTitleTimes (int a_FadeInTicks, int a_DisplayTicks, int a_FadeOutTicks) override; + +protected: + + virtual void HandlePacketBlockPlace (cByteBuffer & a_ByteBuffer) override; + virtual void HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) override; +}; diff --git a/src/Protocol/Protocol18x.cpp b/src/Protocol/Protocol_1_8.cpp similarity index 88% rename from src/Protocol/Protocol18x.cpp rename to src/Protocol/Protocol_1_8.cpp index 0679219a9..bbeb3ae8b 100644 --- a/src/Protocol/Protocol18x.cpp +++ b/src/Protocol/Protocol_1_8.cpp @@ -1,16 +1,15 @@ -// Protocol18x.cpp +// Protocol_1_8.cpp /* -Implements the 1.8.x protocol classes: - - cProtocol180 - - release 1.8.0 protocol (#47) -(others may be added later in the future for the 1.8 release series) +Implements the 1.8 protocol classes: + - cProtocol_1_8_0 + - release 1.8 protocol (#47) */ #include "Globals.h" #include "json/json.h" -#include "Protocol18x.h" +#include "Protocol_1_8.h" #include "ChunkDataSerializer.h" #include "PolarSSL++/Sha1Checksum.h" #include "Packetizer.h" @@ -99,9 +98,9 @@ extern bool g_ShouldLogCommIn, g_ShouldLogCommOut; //////////////////////////////////////////////////////////////////////////////// -// cProtocol180: +// cProtocol_1_8_0: -cProtocol180::cProtocol180(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : +cProtocol_1_8_0::cProtocol_1_8_0(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : super(a_Client), m_ServerAddress(a_ServerAddress), m_ServerPort(a_ServerPort), @@ -146,7 +145,7 @@ cProtocol180::cProtocol180(cClientHandle * a_Client, const AString & a_ServerAdd -void cProtocol180::DataReceived(const char * a_Data, size_t a_Size) +void cProtocol_1_8_0::DataReceived(const char * a_Data, size_t a_Size) { if (m_IsEncrypted) { @@ -170,7 +169,7 @@ void cProtocol180::DataReceived(const char * a_Data, size_t a_Size) -void cProtocol180::SendAttachEntity(const cEntity & a_Entity, const cEntity & a_Vehicle) +void cProtocol_1_8_0::SendAttachEntity(const cEntity & a_Entity, const cEntity & a_Vehicle) { ASSERT(m_State == 3); // In game mode? @@ -184,7 +183,7 @@ void cProtocol180::SendAttachEntity(const cEntity & a_Entity, const cEntity & a_ -void cProtocol180::SendBlockAction(int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType) +void cProtocol_1_8_0::SendBlockAction(int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType) { ASSERT(m_State == 3); // In game mode? @@ -199,7 +198,7 @@ void cProtocol180::SendBlockAction(int a_BlockX, int a_BlockY, int a_BlockZ, cha -void cProtocol180::SendBlockBreakAnim(UInt32 a_EntityID, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Stage) +void cProtocol_1_8_0::SendBlockBreakAnim(UInt32 a_EntityID, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Stage) { ASSERT(m_State == 3); // In game mode? @@ -213,7 +212,7 @@ void cProtocol180::SendBlockBreakAnim(UInt32 a_EntityID, int a_BlockX, int a_Blo -void cProtocol180::SendBlockChange(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) +void cProtocol_1_8_0::SendBlockChange(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) { ASSERT(m_State == 3); // In game mode? @@ -226,7 +225,7 @@ void cProtocol180::SendBlockChange(int a_BlockX, int a_BlockY, int a_BlockZ, BLO -void cProtocol180::SendBlockChanges(int a_ChunkX, int a_ChunkZ, const sSetBlockVector & a_Changes) +void cProtocol_1_8_0::SendBlockChanges(int a_ChunkX, int a_ChunkZ, const sSetBlockVector & a_Changes) { ASSERT(m_State == 3); // In game mode? @@ -246,7 +245,7 @@ void cProtocol180::SendBlockChanges(int a_ChunkX, int a_ChunkZ, const sSetBlockV -void cProtocol180::SendCameraSetTo(const cEntity & a_Entity) +void cProtocol_1_8_0::SendCameraSetTo(const cEntity & a_Entity) { cPacketizer Pkt(*this, 0x43); // Camera Packet (Attach the camera of a player at another entity in spectator mode) Pkt.WriteVarInt32(a_Entity.GetUniqueID()); @@ -256,35 +255,29 @@ void cProtocol180::SendCameraSetTo(const cEntity & a_Entity) -void cProtocol180::SendChat(const AString & a_Message, eChatType a_Type) +void cProtocol_1_8_0::SendChat(const AString & a_Message, eChatType a_Type) { ASSERT(m_State == 3); // In game mode? - cPacketizer Pkt(*this, 0x02); // Chat Message packet - Pkt.WriteString(Printf("{\"text\":\"%s\"}", EscapeString(a_Message).c_str())); - Pkt.WriteBEInt8(a_Type); + SendChatRaw(Printf("{\"text\":\"%s\"}", EscapeString(a_Message).c_str()), a_Type); } -void cProtocol180::SendChat(const cCompositeChat & a_Message, eChatType a_Type, bool a_ShouldUseChatPrefixes) +void cProtocol_1_8_0::SendChat(const cCompositeChat & a_Message, eChatType a_Type, bool a_ShouldUseChatPrefixes) { ASSERT(m_State == 3); // In game mode? - - // Send the message to the client: - cPacketizer Pkt(*this, 0x02); - Pkt.WriteString(a_Message.CreateJsonString(a_ShouldUseChatPrefixes)); - Pkt.WriteBEInt8(a_Type); + SendChatRaw(a_Message.CreateJsonString(a_ShouldUseChatPrefixes), a_Type); } -void cProtocol180::SendChatRaw(const AString & a_MessageRaw, eChatType a_Type) +void cProtocol_1_8_0::SendChatRaw(const AString & a_MessageRaw, eChatType a_Type) { ASSERT(m_State == 3); // In game mode? @@ -298,7 +291,7 @@ void cProtocol180::SendChatRaw(const AString & a_MessageRaw, eChatType a_Type) -void cProtocol180::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) +void cProtocol_1_8_0::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) { ASSERT(m_State == 3); // In game mode? @@ -314,8 +307,9 @@ void cProtocol180::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerialize -void cProtocol180::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player) +void cProtocol_1_8_0::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) { + UNUSED(a_Count); ASSERT(m_State == 3); // In game mode? cPacketizer Pkt(*this, 0x0d); // Collect Item packet @@ -327,7 +321,7 @@ void cProtocol180::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a -void cProtocol180::SendDestroyEntity(const cEntity & a_Entity) +void cProtocol_1_8_0::SendDestroyEntity(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -340,7 +334,7 @@ void cProtocol180::SendDestroyEntity(const cEntity & a_Entity) -void cProtocol180::SendDetachEntity(const cEntity & a_Entity, const cEntity & a_PreviousVehicle) +void cProtocol_1_8_0::SendDetachEntity(const cEntity & a_Entity, const cEntity & a_PreviousVehicle) { ASSERT(m_State == 3); // In game mode? @@ -354,7 +348,7 @@ void cProtocol180::SendDetachEntity(const cEntity & a_Entity, const cEntity & a_ -void cProtocol180::SendDisconnect(const AString & a_Reason) +void cProtocol_1_8_0::SendDisconnect(const AString & a_Reason) { switch (m_State) { @@ -379,7 +373,7 @@ void cProtocol180::SendDisconnect(const AString & a_Reason) -void cProtocol180::SendEditSign(int a_BlockX, int a_BlockY, int a_BlockZ) +void cProtocol_1_8_0::SendEditSign(int a_BlockX, int a_BlockY, int a_BlockZ) { ASSERT(m_State == 3); // In game mode? @@ -391,7 +385,7 @@ void cProtocol180::SendEditSign(int a_BlockX, int a_BlockY, int a_BlockZ) -void cProtocol180::SendEntityEffect(const cEntity & a_Entity, int a_EffectID, int a_Amplifier, short a_Duration) +void cProtocol_1_8_0::SendEntityEffect(const cEntity & a_Entity, int a_EffectID, int a_Amplifier, short a_Duration) { ASSERT(m_State == 3); // In game mode? @@ -407,7 +401,7 @@ void cProtocol180::SendEntityEffect(const cEntity & a_Entity, int a_EffectID, in -void cProtocol180::SendEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item) +void cProtocol_1_8_0::SendEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item) { ASSERT(m_State == 3); // In game mode? @@ -421,7 +415,7 @@ void cProtocol180::SendEntityEquipment(const cEntity & a_Entity, short a_SlotNum -void cProtocol180::SendEntityHeadLook(const cEntity & a_Entity) +void cProtocol_1_8_0::SendEntityHeadLook(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -434,7 +428,7 @@ void cProtocol180::SendEntityHeadLook(const cEntity & a_Entity) -void cProtocol180::SendEntityLook(const cEntity & a_Entity) +void cProtocol_1_8_0::SendEntityLook(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -449,7 +443,7 @@ void cProtocol180::SendEntityLook(const cEntity & a_Entity) -void cProtocol180::SendEntityMetadata(const cEntity & a_Entity) +void cProtocol_1_8_0::SendEntityMetadata(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -463,7 +457,7 @@ void cProtocol180::SendEntityMetadata(const cEntity & a_Entity) -void cProtocol180::SendEntityProperties(const cEntity & a_Entity) +void cProtocol_1_8_0::SendEntityProperties(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -476,7 +470,7 @@ void cProtocol180::SendEntityProperties(const cEntity & a_Entity) -void cProtocol180::SendEntityRelMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) +void cProtocol_1_8_0::SendEntityRelMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) { ASSERT(m_State == 3); // In game mode? @@ -492,7 +486,7 @@ void cProtocol180::SendEntityRelMove(const cEntity & a_Entity, char a_RelX, char -void cProtocol180::SendEntityRelMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) +void cProtocol_1_8_0::SendEntityRelMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) { ASSERT(m_State == 3); // In game mode? @@ -510,7 +504,7 @@ void cProtocol180::SendEntityRelMoveLook(const cEntity & a_Entity, char a_RelX, -void cProtocol180::SendEntityStatus(const cEntity & a_Entity, char a_Status) +void cProtocol_1_8_0::SendEntityStatus(const cEntity & a_Entity, char a_Status) { ASSERT(m_State == 3); // In game mode? @@ -523,7 +517,7 @@ void cProtocol180::SendEntityStatus(const cEntity & a_Entity, char a_Status) -void cProtocol180::SendEntityVelocity(const cEntity & a_Entity) +void cProtocol_1_8_0::SendEntityVelocity(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -539,7 +533,7 @@ void cProtocol180::SendEntityVelocity(const cEntity & a_Entity) -void cProtocol180::SendExplosion(double a_BlockX, double a_BlockY, double a_BlockZ, float a_Radius, const cVector3iArray & a_BlocksAffected, const Vector3d & a_PlayerMotion) +void cProtocol_1_8_0::SendExplosion(double a_BlockX, double a_BlockY, double a_BlockZ, float a_Radius, const cVector3iArray & a_BlocksAffected, const Vector3d & a_PlayerMotion) { ASSERT(m_State == 3); // In game mode? @@ -564,7 +558,7 @@ void cProtocol180::SendExplosion(double a_BlockX, double a_BlockY, double a_Bloc -void cProtocol180::SendGameMode(eGameMode a_GameMode) +void cProtocol_1_8_0::SendGameMode(eGameMode a_GameMode) { ASSERT(m_State == 3); // In game mode? @@ -577,7 +571,7 @@ void cProtocol180::SendGameMode(eGameMode a_GameMode) -void cProtocol180::SendHealth(void) +void cProtocol_1_8_0::SendHealth(void) { ASSERT(m_State == 3); // In game mode? @@ -592,7 +586,7 @@ void cProtocol180::SendHealth(void) -void cProtocol180::SendHideTitle(void) +void cProtocol_1_8_0::SendHideTitle(void) { ASSERT(m_State == 3); // In game mode? @@ -604,7 +598,7 @@ void cProtocol180::SendHideTitle(void) -void cProtocol180::SendInventorySlot(char a_WindowID, short a_SlotNum, const cItem & a_Item) +void cProtocol_1_8_0::SendInventorySlot(char a_WindowID, short a_SlotNum, const cItem & a_Item) { ASSERT(m_State == 3); // In game mode? @@ -618,7 +612,7 @@ void cProtocol180::SendInventorySlot(char a_WindowID, short a_SlotNum, const cIt -void cProtocol180::SendKeepAlive(UInt32 a_PingID) +void cProtocol_1_8_0::SendKeepAlive(UInt32 a_PingID) { // Drop the packet if the protocol is not in the Game state yet (caused a client crash): if (m_State != 3) @@ -635,7 +629,7 @@ void cProtocol180::SendKeepAlive(UInt32 a_PingID) -void cProtocol180::SendLogin(const cPlayer & a_Player, const cWorld & a_World) +void cProtocol_1_8_0::SendLogin(const cPlayer & a_Player, const cWorld & a_World) { // Send the Join Game packet: { @@ -669,7 +663,7 @@ void cProtocol180::SendLogin(const cPlayer & a_Player, const cWorld & a_World) -void cProtocol180::SendLoginSuccess(void) +void cProtocol_1_8_0::SendLoginSuccess(void) { ASSERT(m_State == 2); // State: login? @@ -692,7 +686,7 @@ void cProtocol180::SendLoginSuccess(void) -void cProtocol180::SendPaintingSpawn(const cPainting & a_Painting) +void cProtocol_1_8_0::SendPaintingSpawn(const cPainting & a_Painting) { ASSERT(m_State == 3); // In game mode? double PosX = a_Painting.GetPosX(); @@ -710,7 +704,7 @@ void cProtocol180::SendPaintingSpawn(const cPainting & a_Painting) -void cProtocol180::SendMapData(const cMap & a_Map, int a_DataStartX, int a_DataStartY) +void cProtocol_1_8_0::SendMapData(const cMap & a_Map, int a_DataStartX, int a_DataStartY) { ASSERT(m_State == 3); // In game mode? @@ -741,7 +735,7 @@ void cProtocol180::SendMapData(const cMap & a_Map, int a_DataStartX, int a_DataS -void cProtocol180::SendPickupSpawn(const cPickup & a_Pickup) +void cProtocol_1_8_0::SendPickupSpawn(const cPickup & a_Pickup) { ASSERT(m_State == 3); // In game mode? @@ -770,7 +764,7 @@ void cProtocol180::SendPickupSpawn(const cPickup & a_Pickup) -void cProtocol180::SendPlayerAbilities(void) +void cProtocol_1_8_0::SendPlayerAbilities(void) { ASSERT(m_State == 3); // In game mode? @@ -799,7 +793,7 @@ void cProtocol180::SendPlayerAbilities(void) -void cProtocol180::SendEntityAnimation(const cEntity & a_Entity, char a_Animation) +void cProtocol_1_8_0::SendEntityAnimation(const cEntity & a_Entity, char a_Animation) { ASSERT(m_State == 3); // In game mode? @@ -812,7 +806,7 @@ void cProtocol180::SendEntityAnimation(const cEntity & a_Entity, char a_Animatio -void cProtocol180::SendParticleEffect(const AString & a_ParticleName, float a_SrcX, float a_SrcY, float a_SrcZ, float a_OffsetX, float a_OffsetY, float a_OffsetZ, float a_ParticleData, int a_ParticleAmount) +void cProtocol_1_8_0::SendParticleEffect(const AString & a_ParticleName, float a_SrcX, float a_SrcY, float a_SrcZ, float a_OffsetX, float a_OffsetY, float a_OffsetZ, float a_ParticleData, int a_ParticleAmount) { ASSERT(m_State == 3); // In game mode? int ParticleID = GetParticleID(a_ParticleName); @@ -834,7 +828,7 @@ void cProtocol180::SendParticleEffect(const AString & a_ParticleName, float a_Sr -void cProtocol180::SendParticleEffect(const AString & a_ParticleName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array a_Data) +void cProtocol_1_8_0::SendParticleEffect(const AString & a_ParticleName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array a_Data) { ASSERT(m_State == 3); // In game mode? int ParticleID = GetParticleID(a_ParticleName); @@ -878,7 +872,7 @@ void cProtocol180::SendParticleEffect(const AString & a_ParticleName, Vector3f a -void cProtocol180::SendPlayerListAddPlayer(const cPlayer & a_Player) +void cProtocol_1_8_0::SendPlayerListAddPlayer(const cPlayer & a_Player) { ASSERT(m_State == 3); // In game mode? @@ -915,7 +909,7 @@ void cProtocol180::SendPlayerListAddPlayer(const cPlayer & a_Player) -void cProtocol180::SendPlayerListRemovePlayer(const cPlayer & a_Player) +void cProtocol_1_8_0::SendPlayerListRemovePlayer(const cPlayer & a_Player) { ASSERT(m_State == 3); // In game mode? @@ -929,7 +923,7 @@ void cProtocol180::SendPlayerListRemovePlayer(const cPlayer & a_Player) -void cProtocol180::SendPlayerListUpdateGameMode(const cPlayer & a_Player) +void cProtocol_1_8_0::SendPlayerListUpdateGameMode(const cPlayer & a_Player) { ASSERT(m_State == 3); // In game mode? @@ -944,7 +938,7 @@ void cProtocol180::SendPlayerListUpdateGameMode(const cPlayer & a_Player) -void cProtocol180::SendPlayerListUpdatePing(const cPlayer & a_Player) +void cProtocol_1_8_0::SendPlayerListUpdatePing(const cPlayer & a_Player) { ASSERT(m_State == 3); // In game mode? @@ -963,7 +957,7 @@ void cProtocol180::SendPlayerListUpdatePing(const cPlayer & a_Player) -void cProtocol180::SendPlayerListUpdateDisplayName(const cPlayer & a_Player, const AString & a_CustomName) +void cProtocol_1_8_0::SendPlayerListUpdateDisplayName(const cPlayer & a_Player, const AString & a_CustomName) { ASSERT(m_State == 3); // In game mode? @@ -987,7 +981,7 @@ void cProtocol180::SendPlayerListUpdateDisplayName(const cPlayer & a_Player, con -void cProtocol180::SendPlayerMaxSpeed(void) +void cProtocol_1_8_0::SendPlayerMaxSpeed(void) { ASSERT(m_State == 3); // In game mode? @@ -1016,7 +1010,7 @@ void cProtocol180::SendPlayerMaxSpeed(void) -void cProtocol180::SendPlayerMoveLook(void) +void cProtocol_1_8_0::SendPlayerMoveLook(void) { ASSERT(m_State == 3); // In game mode? @@ -1034,7 +1028,7 @@ void cProtocol180::SendPlayerMoveLook(void) -void cProtocol180::SendPlayerPosition(void) +void cProtocol_1_8_0::SendPlayerPosition(void) { // There is no dedicated packet for this, send the whole thing: SendPlayerMoveLook(); @@ -1044,7 +1038,7 @@ void cProtocol180::SendPlayerPosition(void) -void cProtocol180::SendPlayerSpawn(const cPlayer & a_Player) +void cProtocol_1_8_0::SendPlayerSpawn(const cPlayer & a_Player) { // Called to spawn another player for the client cPacketizer Pkt(*this, 0x0c); // Spawn Player packet @@ -1068,7 +1062,7 @@ void cProtocol180::SendPlayerSpawn(const cPlayer & a_Player) -void cProtocol180::SendPluginMessage(const AString & a_Channel, const AString & a_Message) +void cProtocol_1_8_0::SendPluginMessage(const AString & a_Channel, const AString & a_Message) { ASSERT(m_State == 3); // In game mode? @@ -1081,7 +1075,7 @@ void cProtocol180::SendPluginMessage(const AString & a_Channel, const AString & -void cProtocol180::SendRemoveEntityEffect(const cEntity & a_Entity, int a_EffectID) +void cProtocol_1_8_0::SendRemoveEntityEffect(const cEntity & a_Entity, int a_EffectID) { ASSERT(m_State == 3); // In game mode? @@ -1094,7 +1088,7 @@ void cProtocol180::SendRemoveEntityEffect(const cEntity & a_Entity, int a_Effect -void cProtocol180::SendResetTitle(void) +void cProtocol_1_8_0::SendResetTitle(void) { ASSERT(m_State == 3); // In game mode? @@ -1106,7 +1100,7 @@ void cProtocol180::SendResetTitle(void) -void cProtocol180::SendRespawn(eDimension a_Dimension) +void cProtocol_1_8_0::SendRespawn(eDimension a_Dimension) { cPacketizer Pkt(*this, 0x07); // Respawn packet @@ -1121,7 +1115,7 @@ void cProtocol180::SendRespawn(eDimension a_Dimension) -void cProtocol180::SendExperience(void) +void cProtocol_1_8_0::SendExperience(void) { ASSERT(m_State == 3); // In game mode? @@ -1136,7 +1130,7 @@ void cProtocol180::SendExperience(void) -void cProtocol180::SendExperienceOrb(const cExpOrb & a_ExpOrb) +void cProtocol_1_8_0::SendExperienceOrb(const cExpOrb & a_ExpOrb) { ASSERT(m_State == 3); // In game mode? @@ -1152,7 +1146,7 @@ void cProtocol180::SendExperienceOrb(const cExpOrb & a_ExpOrb) -void cProtocol180::SendScoreboardObjective(const AString & a_Name, const AString & a_DisplayName, Byte a_Mode) +void cProtocol_1_8_0::SendScoreboardObjective(const AString & a_Name, const AString & a_DisplayName, Byte a_Mode) { ASSERT(m_State == 3); // In game mode? @@ -1170,7 +1164,7 @@ void cProtocol180::SendScoreboardObjective(const AString & a_Name, const AString -void cProtocol180::SendScoreUpdate(const AString & a_Objective, const AString & a_Player, cObjective::Score a_Score, Byte a_Mode) +void cProtocol_1_8_0::SendScoreUpdate(const AString & a_Objective, const AString & a_Player, cObjective::Score a_Score, Byte a_Mode) { ASSERT(m_State == 3); // In game mode? @@ -1189,7 +1183,7 @@ void cProtocol180::SendScoreUpdate(const AString & a_Objective, const AString & -void cProtocol180::SendDisplayObjective(const AString & a_Objective, cScoreboard::eDisplaySlot a_Display) +void cProtocol_1_8_0::SendDisplayObjective(const AString & a_Objective, cScoreboard::eDisplaySlot a_Display) { ASSERT(m_State == 3); // In game mode? @@ -1202,7 +1196,7 @@ void cProtocol180::SendDisplayObjective(const AString & a_Objective, cScoreboard -void cProtocol180::SendSetSubTitle(const cCompositeChat & a_SubTitle) +void cProtocol_1_8_0::SendSetSubTitle(const cCompositeChat & a_SubTitle) { SendSetRawSubTitle(a_SubTitle.CreateJsonString(false)); } @@ -1211,7 +1205,7 @@ void cProtocol180::SendSetSubTitle(const cCompositeChat & a_SubTitle) -void cProtocol180::SendSetRawSubTitle(const AString & a_SubTitle) +void cProtocol_1_8_0::SendSetRawSubTitle(const AString & a_SubTitle) { ASSERT(m_State == 3); // In game mode? @@ -1225,7 +1219,7 @@ void cProtocol180::SendSetRawSubTitle(const AString & a_SubTitle) -void cProtocol180::SendSetTitle(const cCompositeChat & a_Title) +void cProtocol_1_8_0::SendSetTitle(const cCompositeChat & a_Title) { SendSetRawTitle(a_Title.CreateJsonString(false)); } @@ -1234,7 +1228,7 @@ void cProtocol180::SendSetTitle(const cCompositeChat & a_Title) -void cProtocol180::SendSetRawTitle(const AString & a_Title) +void cProtocol_1_8_0::SendSetRawTitle(const AString & a_Title) { ASSERT(m_State == 3); // In game mode? @@ -1248,7 +1242,7 @@ void cProtocol180::SendSetRawTitle(const AString & a_Title) -void cProtocol180::SendSoundEffect(const AString & a_SoundName, double a_X, double a_Y, double a_Z, float a_Volume, float a_Pitch) +void cProtocol_1_8_0::SendSoundEffect(const AString & a_SoundName, double a_X, double a_Y, double a_Z, float a_Volume, float a_Pitch) { ASSERT(m_State == 3); // In game mode? @@ -1265,7 +1259,7 @@ void cProtocol180::SendSoundEffect(const AString & a_SoundName, double a_X, doub -void cProtocol180::SendSoundParticleEffect(const EffectID a_EffectID, int a_SrcX, int a_SrcY, int a_SrcZ, int a_Data) +void cProtocol_1_8_0::SendSoundParticleEffect(const EffectID a_EffectID, int a_SrcX, int a_SrcY, int a_SrcZ, int a_Data) { ASSERT(m_State == 3); // In game mode? @@ -1280,7 +1274,7 @@ void cProtocol180::SendSoundParticleEffect(const EffectID a_EffectID, int a_SrcX -void cProtocol180::SendSpawnFallingBlock(const cFallingBlock & a_FallingBlock) +void cProtocol_1_8_0::SendSpawnFallingBlock(const cFallingBlock & a_FallingBlock) { ASSERT(m_State == 3); // In game mode? @@ -1302,7 +1296,7 @@ void cProtocol180::SendSpawnFallingBlock(const cFallingBlock & a_FallingBlock) -void cProtocol180::SendSpawnMob(const cMonster & a_Mob) +void cProtocol_1_8_0::SendSpawnMob(const cMonster & a_Mob) { ASSERT(m_State == 3); // In game mode? @@ -1326,7 +1320,7 @@ void cProtocol180::SendSpawnMob(const cMonster & a_Mob) -void cProtocol180::SendSpawnObject(const cEntity & a_Entity, char a_ObjectType, int a_ObjectData, Byte a_Yaw, Byte a_Pitch) +void cProtocol_1_8_0::SendSpawnObject(const cEntity & a_Entity, char a_ObjectType, int a_ObjectData, Byte a_Yaw, Byte a_Pitch) { ASSERT(m_State == 3); // In game mode? double PosX = a_Entity.GetPosX(); @@ -1358,7 +1352,7 @@ void cProtocol180::SendSpawnObject(const cEntity & a_Entity, char a_ObjectType, -void cProtocol180::SendSpawnVehicle(const cEntity & a_Vehicle, char a_VehicleType, char a_VehicleSubType) +void cProtocol_1_8_0::SendSpawnVehicle(const cEntity & a_Vehicle, char a_VehicleType, char a_VehicleSubType) { ASSERT(m_State == 3); // In game mode? @@ -1383,7 +1377,7 @@ void cProtocol180::SendSpawnVehicle(const cEntity & a_Vehicle, char a_VehicleTyp -void cProtocol180::SendStatistics(const cStatManager & a_Manager) +void cProtocol_1_8_0::SendStatistics(const cStatManager & a_Manager) { ASSERT(m_State == 3); // In game mode? @@ -1405,7 +1399,7 @@ void cProtocol180::SendStatistics(const cStatManager & a_Manager) -void cProtocol180::SendTabCompletionResults(const AStringVector & a_Results) +void cProtocol_1_8_0::SendTabCompletionResults(const AStringVector & a_Results) { ASSERT(m_State == 3); // In game mode? @@ -1422,7 +1416,7 @@ void cProtocol180::SendTabCompletionResults(const AStringVector & a_Results) -void cProtocol180::SendTeleportEntity(const cEntity & a_Entity) +void cProtocol_1_8_0::SendTeleportEntity(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -1440,7 +1434,7 @@ void cProtocol180::SendTeleportEntity(const cEntity & a_Entity) -void cProtocol180::SendThunderbolt(int a_BlockX, int a_BlockY, int a_BlockZ) +void cProtocol_1_8_0::SendThunderbolt(int a_BlockX, int a_BlockY, int a_BlockZ) { ASSERT(m_State == 3); // In game mode? @@ -1456,7 +1450,7 @@ void cProtocol180::SendThunderbolt(int a_BlockX, int a_BlockY, int a_BlockZ) -void cProtocol180::SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int a_FadeOutTicks) +void cProtocol_1_8_0::SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int a_FadeOutTicks) { ASSERT(m_State == 3); // In game mode? @@ -1472,7 +1466,7 @@ void cProtocol180::SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int a_F -void cProtocol180::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle) +void cProtocol_1_8_0::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle) { ASSERT(m_State == 3); // In game mode? if (!a_DoDaylightCycle) @@ -1490,7 +1484,7 @@ void cProtocol180::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_Do -void cProtocol180::SendUnloadChunk(int a_ChunkX, int a_ChunkZ) +void cProtocol_1_8_0::SendUnloadChunk(int a_ChunkX, int a_ChunkZ) { ASSERT(m_State == 3); // In game mode? @@ -1505,7 +1499,7 @@ void cProtocol180::SendUnloadChunk(int a_ChunkX, int a_ChunkZ) -void cProtocol180::SendUpdateBlockEntity(cBlockEntity & a_BlockEntity) +void cProtocol_1_8_0::SendUpdateBlockEntity(cBlockEntity & a_BlockEntity) { ASSERT(m_State == 3); // In game mode? @@ -1531,7 +1525,7 @@ void cProtocol180::SendUpdateBlockEntity(cBlockEntity & a_BlockEntity) -void cProtocol180::SendUpdateSign(int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) +void cProtocol_1_8_0::SendUpdateSign(int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) { ASSERT(m_State == 3); // In game mode? @@ -1552,7 +1546,7 @@ void cProtocol180::SendUpdateSign(int a_BlockX, int a_BlockY, int a_BlockZ, cons -void cProtocol180::SendUseBed(const cEntity & a_Entity, int a_BlockX, int a_BlockY, int a_BlockZ) +void cProtocol_1_8_0::SendUseBed(const cEntity & a_Entity, int a_BlockX, int a_BlockY, int a_BlockZ) { ASSERT(m_State == 3); // In game mode? @@ -1565,7 +1559,7 @@ void cProtocol180::SendUseBed(const cEntity & a_Entity, int a_BlockX, int a_Bloc -void cProtocol180::SendWeather(eWeather a_Weather) +void cProtocol_1_8_0::SendWeather(eWeather a_Weather) { ASSERT(m_State == 3); // In game mode? @@ -1582,7 +1576,7 @@ void cProtocol180::SendWeather(eWeather a_Weather) -void cProtocol180::SendWholeInventory(const cWindow & a_Window) +void cProtocol_1_8_0::SendWholeInventory(const cWindow & a_Window) { ASSERT(m_State == 3); // In game mode? @@ -1601,7 +1595,7 @@ void cProtocol180::SendWholeInventory(const cWindow & a_Window) -void cProtocol180::SendWindowClose(const cWindow & a_Window) +void cProtocol_1_8_0::SendWindowClose(const cWindow & a_Window) { ASSERT(m_State == 3); // In game mode? @@ -1613,7 +1607,7 @@ void cProtocol180::SendWindowClose(const cWindow & a_Window) -void cProtocol180::SendWindowOpen(const cWindow & a_Window) +void cProtocol_1_8_0::SendWindowOpen(const cWindow & a_Window) { ASSERT(m_State == 3); // In game mode? @@ -1654,7 +1648,7 @@ void cProtocol180::SendWindowOpen(const cWindow & a_Window) -void cProtocol180::SendWindowProperty(const cWindow & a_Window, short a_Property, short a_Value) +void cProtocol_1_8_0::SendWindowProperty(const cWindow & a_Window, short a_Property, short a_Value) { ASSERT(m_State == 3); // In game mode? @@ -1668,7 +1662,7 @@ void cProtocol180::SendWindowProperty(const cWindow & a_Window, short a_Property -bool cProtocol180::CompressPacket(const AString & a_Packet, AString & a_CompressedData) +bool cProtocol_1_8_0::CompressPacket(const AString & a_Packet, AString & a_CompressedData) { // Compress the data: char CompressedData[MAX_COMPRESSED_PACKET_LEN]; @@ -1711,7 +1705,7 @@ bool cProtocol180::CompressPacket(const AString & a_Packet, AString & a_Compress -int cProtocol180::GetParticleID(const AString & a_ParticleName) +int cProtocol_1_8_0::GetParticleID(const AString & a_ParticleName) { static bool IsInitialized = false; static std::map ParticleMap; @@ -1777,7 +1771,7 @@ int cProtocol180::GetParticleID(const AString & a_ParticleName) -void cProtocol180::FixItemFramePositions(int a_ObjectData, double & a_PosX, double & a_PosZ, double & a_Yaw) +void cProtocol_1_8_0::FixItemFramePositions(int a_ObjectData, double & a_PosX, double & a_PosZ, double & a_Yaw) { switch (a_ObjectData) { @@ -1812,7 +1806,7 @@ void cProtocol180::FixItemFramePositions(int a_ObjectData, double & a_PosX, doub -void cProtocol180::AddReceivedData(const char * a_Data, size_t a_Size) +void cProtocol_1_8_0::AddReceivedData(const char * a_Data, size_t a_Size) { // Write the incoming data into the comm log file: if (g_ShouldLogCommIn && m_CommLogFile.IsOpen()) @@ -2007,7 +2001,7 @@ void cProtocol180::AddReceivedData(const char * a_Data, size_t a_Size) -bool cProtocol180::HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType) +bool cProtocol_1_8_0::HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType) { switch (m_State) { @@ -2094,7 +2088,7 @@ bool cProtocol180::HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType) -void cProtocol180::HandlePacketStatusPing(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketStatusPing(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEInt64, Int64, Timestamp); @@ -2106,7 +2100,7 @@ void cProtocol180::HandlePacketStatusPing(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) { cServer * Server = cRoot::Get()->GetServer(); AString ServerDescription = Server->GetDescription(); @@ -2151,7 +2145,7 @@ void cProtocol180::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketLoginEncryptionResponse(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketLoginEncryptionResponse(cByteBuffer & a_ByteBuffer) { UInt32 EncKeyLength, EncNonceLength; if (!a_ByteBuffer.ReadVarInt(EncKeyLength)) @@ -2214,7 +2208,7 @@ void cProtocol180::HandlePacketLoginEncryptionResponse(cByteBuffer & a_ByteBuffe -void cProtocol180::HandlePacketLoginStart(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketLoginStart(cByteBuffer & a_ByteBuffer) { AString Username; if (!a_ByteBuffer.ReadVarUTF8String(Username)) @@ -2251,7 +2245,7 @@ void cProtocol180::HandlePacketLoginStart(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketAnimation(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketAnimation(cByteBuffer & a_ByteBuffer) { m_Client->HandleAnimation(0); // Packet exists solely for arm-swing notification } @@ -2260,7 +2254,7 @@ void cProtocol180::HandlePacketAnimation(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketBlockDig(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketBlockDig(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, Status); @@ -2278,7 +2272,7 @@ void cProtocol180::HandlePacketBlockDig(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketBlockPlace(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketBlockPlace(cByteBuffer & a_ByteBuffer) { int BlockX, BlockY, BlockZ; if (!a_ByteBuffer.ReadPosition64(BlockX, BlockY, BlockZ)) @@ -2301,7 +2295,7 @@ void cProtocol180::HandlePacketBlockPlace(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketChatMessage(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketChatMessage(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarUTF8String, AString, Message); m_Client->HandleChat(Message); @@ -2311,7 +2305,7 @@ void cProtocol180::HandlePacketChatMessage(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketClientSettings(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketClientSettings(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarUTF8String, AString, Locale); HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, ViewDistance); @@ -2328,7 +2322,7 @@ void cProtocol180::HandlePacketClientSettings(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketClientStatus(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketClientStatus(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, ActionID); switch (ActionID) @@ -2360,7 +2354,7 @@ void cProtocol180::HandlePacketClientStatus(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketCreativeInventoryAction(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketCreativeInventoryAction(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEInt16, Int16, SlotNum); cItem Item; @@ -2375,7 +2369,7 @@ void cProtocol180::HandlePacketCreativeInventoryAction(cByteBuffer & a_ByteBuffe -void cProtocol180::HandlePacketEntityAction(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketEntityAction(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarInt, UInt32, PlayerID); HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, Action); @@ -2395,7 +2389,7 @@ void cProtocol180::HandlePacketEntityAction(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketKeepAlive(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketKeepAlive(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarInt, UInt32, KeepAliveID); m_Client->HandleKeepAlive(KeepAliveID); @@ -2405,7 +2399,7 @@ void cProtocol180::HandlePacketKeepAlive(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketPlayer(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketPlayer(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBool, bool, IsOnGround); // TODO: m_Client->HandlePlayerOnGround(IsOnGround); @@ -2415,7 +2409,7 @@ void cProtocol180::HandlePacketPlayer(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketPlayerAbilities(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketPlayerAbilities(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, Flags); HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, FlyingSpeed); @@ -2439,7 +2433,7 @@ void cProtocol180::HandlePacketPlayerAbilities(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketPlayerLook(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketPlayerLook(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, Yaw); HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, Pitch); @@ -2451,7 +2445,7 @@ void cProtocol180::HandlePacketPlayerLook(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketPlayerPos(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketPlayerPos(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEDouble, double, PosX); HANDLE_READ(a_ByteBuffer, ReadBEDouble, double, PosY); @@ -2464,7 +2458,7 @@ void cProtocol180::HandlePacketPlayerPos(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketPlayerPosLook(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketPlayerPosLook(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEDouble, double, PosX); HANDLE_READ(a_ByteBuffer, ReadBEDouble, double, PosY); @@ -2479,7 +2473,7 @@ void cProtocol180::HandlePacketPlayerPosLook(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketPluginMessage(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketPluginMessage(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarUTF8String, AString, Channel); @@ -2510,7 +2504,7 @@ void cProtocol180::HandlePacketPluginMessage(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketSlotSelect(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketSlotSelect(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEInt16, Int16, SlotNum); m_Client->HandleSlotSelected(SlotNum); @@ -2520,7 +2514,7 @@ void cProtocol180::HandlePacketSlotSelect(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketSpectate(cByteBuffer &a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketSpectate(cByteBuffer &a_ByteBuffer) { AString playerUUID; if (!a_ByteBuffer.ReadUUID(playerUUID)) @@ -2535,7 +2529,7 @@ void cProtocol180::HandlePacketSpectate(cByteBuffer &a_ByteBuffer) -void cProtocol180::HandlePacketSteerVehicle(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketSteerVehicle(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, Sideways); HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, Forward); @@ -2559,7 +2553,7 @@ void cProtocol180::HandlePacketSteerVehicle(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketTabComplete(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketTabComplete(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarUTF8String, AString, Text); HANDLE_READ(a_ByteBuffer, ReadBool, bool, HasPosition); @@ -2576,7 +2570,7 @@ void cProtocol180::HandlePacketTabComplete(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketUpdateSign(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketUpdateSign(cByteBuffer & a_ByteBuffer) { int BlockX, BlockY, BlockZ; if (!a_ByteBuffer.ReadPosition64(BlockX, BlockY, BlockZ)) @@ -2603,7 +2597,7 @@ void cProtocol180::HandlePacketUpdateSign(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketUseEntity(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketUseEntity(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarInt, UInt32, EntityID); HANDLE_READ(a_ByteBuffer, ReadVarInt, UInt32, Type); @@ -2641,7 +2635,7 @@ void cProtocol180::HandlePacketUseEntity(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketEnchantItem(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketEnchantItem(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, WindowID); HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, Enchantment); @@ -2653,7 +2647,7 @@ void cProtocol180::HandlePacketEnchantItem(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketWindowClick(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketWindowClick(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, WindowID); HANDLE_READ(a_ByteBuffer, ReadBEInt16, Int16, SlotNum); @@ -2705,7 +2699,7 @@ void cProtocol180::HandlePacketWindowClick(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandlePacketWindowClose(cByteBuffer & a_ByteBuffer) +void cProtocol_1_8_0::HandlePacketWindowClose(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, WindowID); m_Client->HandleWindowClose(WindowID); @@ -2715,7 +2709,7 @@ void cProtocol180::HandlePacketWindowClose(cByteBuffer & a_ByteBuffer) -void cProtocol180::HandleVanillaPluginMessage(cByteBuffer & a_ByteBuffer, const AString & a_Channel) +void cProtocol_1_8_0::HandleVanillaPluginMessage(cByteBuffer & a_ByteBuffer, const AString & a_Channel) { if (a_Channel == "MC|AdvCdm") { @@ -2780,7 +2774,7 @@ void cProtocol180::HandleVanillaPluginMessage(cByteBuffer & a_ByteBuffer, const -void cProtocol180::SendData(const char * a_Data, size_t a_Size) +void cProtocol_1_8_0::SendData(const char * a_Data, size_t a_Size) { if (m_IsEncrypted) { @@ -2804,7 +2798,7 @@ void cProtocol180::SendData(const char * a_Data, size_t a_Size) -bool cProtocol180::ReadItem(cByteBuffer & a_ByteBuffer, cItem & a_Item, size_t a_KeepRemainingBytes) +bool cProtocol_1_8_0::ReadItem(cByteBuffer & a_ByteBuffer, cItem & a_Item, size_t a_KeepRemainingBytes) { HANDLE_PACKET_READ(a_ByteBuffer, ReadBEInt16, Int16, ItemType); if (ItemType == -1) @@ -2839,7 +2833,7 @@ bool cProtocol180::ReadItem(cByteBuffer & a_ByteBuffer, cItem & a_Item, size_t a -void cProtocol180::ParseItemMetadata(cItem & a_Item, const AString & a_Metadata) +void cProtocol_1_8_0::ParseItemMetadata(cItem & a_Item, const AString & a_Metadata) { // Parse into NBT: cParsedNBT NBT(a_Metadata.data(), a_Metadata.size()); @@ -2914,7 +2908,7 @@ void cProtocol180::ParseItemMetadata(cItem & a_Item, const AString & a_Metadata) -void cProtocol180::StartEncryption(const Byte * a_Key) +void cProtocol_1_8_0::StartEncryption(const Byte * a_Key) { m_Encryptor.Init(a_Key, a_Key); m_Decryptor.Init(a_Key, a_Key); @@ -2936,7 +2930,7 @@ void cProtocol180::StartEncryption(const Byte * a_Key) -eBlockFace cProtocol180::FaceIntToBlockFace(Int8 a_BlockFace) +eBlockFace cProtocol_1_8_0::FaceIntToBlockFace(Int8 a_BlockFace) { // Normalize the blockface values returned from the protocol // Anything known gets mapped 1:1, everything else returns BLOCK_FACE_NONE @@ -2957,9 +2951,9 @@ eBlockFace cProtocol180::FaceIntToBlockFace(Int8 a_BlockFace) //////////////////////////////////////////////////////////////////////////////// -// cProtocol180::cPacketizer: +// cProtocol_1_8_0::cPacketizer: -void cProtocol180::SendPacket(cPacketizer & a_Pkt) +void cProtocol_1_8_0::SendPacket(cPacketizer & a_Pkt) { UInt32 PacketLen = static_cast(m_OutPacketBuffer.GetUsedSpace()); AString PacketData, CompressedPacket; @@ -2969,7 +2963,7 @@ void cProtocol180::SendPacket(cPacketizer & a_Pkt) if ((m_State == 3) && (PacketLen >= 256)) { // Compress the packet payload: - if (!cProtocol180::CompressPacket(PacketData, CompressedPacket)) + if (!cProtocol_1_8_0::CompressPacket(PacketData, CompressedPacket)) { return; } @@ -3019,7 +3013,7 @@ void cProtocol180::SendPacket(cPacketizer & a_Pkt) -void cProtocol180::WriteItem(cPacketizer & a_Pkt, const cItem & a_Item) +void cProtocol_1_8_0::WriteItem(cPacketizer & a_Pkt, const cItem & a_Item) { short ItemType = a_Item.m_ItemType; ASSERT(ItemType >= -1); // Check validity of packets in debug runtime @@ -3107,7 +3101,7 @@ void cProtocol180::WriteItem(cPacketizer & a_Pkt, const cItem & a_Item) -void cProtocol180::WriteBlockEntity(cPacketizer & a_Pkt, const cBlockEntity & a_BlockEntity) +void cProtocol_1_8_0::WriteBlockEntity(cPacketizer & a_Pkt, const cBlockEntity & a_BlockEntity) { cFastNBTWriter Writer; @@ -3211,7 +3205,7 @@ void cProtocol180::WriteBlockEntity(cPacketizer & a_Pkt, const cBlockEntity & a_ -void cProtocol180::WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_Entity) +void cProtocol_1_8_0::WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_Entity) { // Common metadata: Byte Flags = 0; @@ -3341,7 +3335,7 @@ void cProtocol180::WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_En -void cProtocol180::WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) +void cProtocol_1_8_0::WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) { // Living Enitiy Metadata if (a_Mob.HasCustomName()) @@ -3609,7 +3603,7 @@ void cProtocol180::WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) -void cProtocol180::WriteEntityProperties(cPacketizer & a_Pkt, const cEntity & a_Entity) +void cProtocol_1_8_0::WriteEntityProperties(cPacketizer & a_Pkt, const cEntity & a_Entity) { if (!a_Entity.IsMob()) { diff --git a/src/Protocol/Protocol18x.h b/src/Protocol/Protocol_1_8.h similarity index 97% rename from src/Protocol/Protocol18x.h rename to src/Protocol/Protocol_1_8.h index 71bc95ef8..564443a38 100644 --- a/src/Protocol/Protocol18x.h +++ b/src/Protocol/Protocol_1_8.h @@ -1,11 +1,10 @@ -// Protocol18x.h +// Protocol_1_8.h /* -Declares the 1.8.x protocol classes: - - cProtocol180 - - release 1.8.0 protocol (#47) -(others may be added later in the future for the 1.8 release series) +Declares the 1.8 protocol classes: + - cProtocol_1_8_0 + - release 1.8 protocol (#47) */ @@ -47,14 +46,14 @@ namespace Json -class cProtocol180 : +class cProtocol_1_8_0 : public cProtocol { typedef cProtocol super; public: - cProtocol180(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); + cProtocol_1_8_0(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); /** Called when client sends some data: */ virtual void DataReceived(const char * a_Data, size_t a_Size) override; @@ -70,7 +69,7 @@ public: virtual void SendChat (const cCompositeChat & a_Message, eChatType a_Type, bool a_ShouldUseChatPrefixes) override; virtual void SendChatRaw (const AString & a_MessageRaw, eChatType a_Type) override; virtual void SendChunkData (int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) override; - virtual void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player) override; + virtual void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) override; virtual void SendDestroyEntity (const cEntity & a_Entity) override; virtual void SendDetachEntity (const cEntity & a_Entity, const cEntity & a_PreviousVehicle) override; virtual void SendDisconnect (const AString & a_Reason) override; diff --git a/src/Protocol/Protocol19x.cpp b/src/Protocol/Protocol_1_9.cpp similarity index 89% rename from src/Protocol/Protocol19x.cpp rename to src/Protocol/Protocol_1_9.cpp index 5f3b9ec27..680675ca3 100644 --- a/src/Protocol/Protocol19x.cpp +++ b/src/Protocol/Protocol_1_9.cpp @@ -1,22 +1,21 @@ -// Protocol19x.cpp +// Protocol_1_9.cpp /* -Implements the 1.9.x protocol classes: - - cProtocol190 - - release 1.9.0 protocol (#107) - - cProtocol191 +Implements the 1.9 protocol classes: + - cProtocol_1_9_0 + - release 1.9 protocol (#107) + - cProtocol_1_9_1 - release 1.9.1 protocol (#108) - - cProtocol192 + - cProtocol_1_9_2 - release 1.9.2 protocol (#109) - - cProtocol194 + - cProtocol_1_9_4 - release 1.9.4 protocol (#110) -(others may be added later in the future for the 1.9 release series) */ #include "Globals.h" #include "json/json.h" -#include "Protocol19x.h" +#include "Protocol_1_9.h" #include "ChunkDataSerializer.h" #include "PolarSSL++/Sha1Checksum.h" #include "Packetizer.h" @@ -109,9 +108,9 @@ extern bool g_ShouldLogCommIn, g_ShouldLogCommOut; //////////////////////////////////////////////////////////////////////////////// -// cProtocol190: +// cProtocol_1_9_0: -cProtocol190::cProtocol190(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : +cProtocol_1_9_0::cProtocol_1_9_0(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : super(a_Client), m_ServerAddress(a_ServerAddress), m_ServerPort(a_ServerPort), @@ -156,7 +155,7 @@ cProtocol190::cProtocol190(cClientHandle * a_Client, const AString & a_ServerAdd -void cProtocol190::DataReceived(const char * a_Data, size_t a_Size) +void cProtocol_1_9_0::DataReceived(const char * a_Data, size_t a_Size) { if (m_IsEncrypted) { @@ -180,7 +179,7 @@ void cProtocol190::DataReceived(const char * a_Data, size_t a_Size) -void cProtocol190::SendAttachEntity(const cEntity & a_Entity, const cEntity & a_Vehicle) +void cProtocol_1_9_0::SendAttachEntity(const cEntity & a_Entity, const cEntity & a_Vehicle) { ASSERT(m_State == 3); // In game mode? cPacketizer Pkt(*this, 0x40); // Set passangers packet @@ -193,7 +192,7 @@ void cProtocol190::SendAttachEntity(const cEntity & a_Entity, const cEntity & a_ -void cProtocol190::SendBlockAction(int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType) +void cProtocol_1_9_0::SendBlockAction(int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType) { ASSERT(m_State == 3); // In game mode? @@ -208,7 +207,7 @@ void cProtocol190::SendBlockAction(int a_BlockX, int a_BlockY, int a_BlockZ, cha -void cProtocol190::SendBlockBreakAnim(UInt32 a_EntityID, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Stage) +void cProtocol_1_9_0::SendBlockBreakAnim(UInt32 a_EntityID, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Stage) { ASSERT(m_State == 3); // In game mode? @@ -222,7 +221,7 @@ void cProtocol190::SendBlockBreakAnim(UInt32 a_EntityID, int a_BlockX, int a_Blo -void cProtocol190::SendBlockChange(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) +void cProtocol_1_9_0::SendBlockChange(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) { ASSERT(m_State == 3); // In game mode? @@ -235,7 +234,7 @@ void cProtocol190::SendBlockChange(int a_BlockX, int a_BlockY, int a_BlockZ, BLO -void cProtocol190::SendBlockChanges(int a_ChunkX, int a_ChunkZ, const sSetBlockVector & a_Changes) +void cProtocol_1_9_0::SendBlockChanges(int a_ChunkX, int a_ChunkZ, const sSetBlockVector & a_Changes) { ASSERT(m_State == 3); // In game mode? @@ -255,7 +254,7 @@ void cProtocol190::SendBlockChanges(int a_ChunkX, int a_ChunkZ, const sSetBlockV -void cProtocol190::SendCameraSetTo(const cEntity & a_Entity) +void cProtocol_1_9_0::SendCameraSetTo(const cEntity & a_Entity) { cPacketizer Pkt(*this, 0x36); // Camera Packet (Attach the camera of a player at another entity in spectator mode) Pkt.WriteVarInt32(a_Entity.GetUniqueID()); @@ -265,35 +264,29 @@ void cProtocol190::SendCameraSetTo(const cEntity & a_Entity) -void cProtocol190::SendChat(const AString & a_Message, eChatType a_Type) +void cProtocol_1_9_0::SendChat(const AString & a_Message, eChatType a_Type) { ASSERT(m_State == 3); // In game mode? - cPacketizer Pkt(*this, 0x0f); // Chat Message packet - Pkt.WriteString(Printf("{\"text\":\"%s\"}", EscapeString(a_Message).c_str())); - Pkt.WriteBEInt8(a_Type); + SendChatRaw(Printf("{\"text\":\"%s\"}", EscapeString(a_Message).c_str()), a_Type); } -void cProtocol190::SendChat(const cCompositeChat & a_Message, eChatType a_Type, bool a_ShouldUseChatPrefixes) +void cProtocol_1_9_0::SendChat(const cCompositeChat & a_Message, eChatType a_Type, bool a_ShouldUseChatPrefixes) { ASSERT(m_State == 3); // In game mode? - - // Send the message to the client: - cPacketizer Pkt(*this, 0x0f); // Chat Message packet - Pkt.WriteString(a_Message.CreateJsonString(a_ShouldUseChatPrefixes)); - Pkt.WriteBEInt8(a_Type); + SendChatRaw(a_Message.CreateJsonString(a_ShouldUseChatPrefixes), a_Type); } -void cProtocol190::SendChatRaw(const AString & a_MessageRaw, eChatType a_Type) +void cProtocol_1_9_0::SendChatRaw(const AString & a_MessageRaw, eChatType a_Type) { ASSERT(m_State == 3); // In game mode? @@ -307,7 +300,7 @@ void cProtocol190::SendChatRaw(const AString & a_MessageRaw, eChatType a_Type) -void cProtocol190::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) +void cProtocol_1_9_0::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) { ASSERT(m_State == 3); // In game mode? @@ -323,8 +316,9 @@ void cProtocol190::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerialize -void cProtocol190::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player) +void cProtocol_1_9_0::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) { + UNUSED(a_Count); ASSERT(m_State == 3); // In game mode? cPacketizer Pkt(*this, 0x49); // Collect Item packet @@ -336,7 +330,7 @@ void cProtocol190::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a -void cProtocol190::SendDestroyEntity(const cEntity & a_Entity) +void cProtocol_1_9_0::SendDestroyEntity(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -349,7 +343,7 @@ void cProtocol190::SendDestroyEntity(const cEntity & a_Entity) -void cProtocol190::SendDetachEntity(const cEntity & a_Entity, const cEntity & a_PreviousVehicle) +void cProtocol_1_9_0::SendDetachEntity(const cEntity & a_Entity, const cEntity & a_PreviousVehicle) { ASSERT(m_State == 3); // In game mode? cPacketizer Pkt(*this, 0x40); // Set passangers packet @@ -361,7 +355,7 @@ void cProtocol190::SendDetachEntity(const cEntity & a_Entity, const cEntity & a_ -void cProtocol190::SendDisconnect(const AString & a_Reason) +void cProtocol_1_9_0::SendDisconnect(const AString & a_Reason) { switch (m_State) { @@ -386,7 +380,7 @@ void cProtocol190::SendDisconnect(const AString & a_Reason) -void cProtocol190::SendEditSign(int a_BlockX, int a_BlockY, int a_BlockZ) +void cProtocol_1_9_0::SendEditSign(int a_BlockX, int a_BlockY, int a_BlockZ) { ASSERT(m_State == 3); // In game mode? @@ -398,7 +392,7 @@ void cProtocol190::SendEditSign(int a_BlockX, int a_BlockY, int a_BlockZ) -void cProtocol190::SendEntityEffect(const cEntity & a_Entity, int a_EffectID, int a_Amplifier, short a_Duration) +void cProtocol_1_9_0::SendEntityEffect(const cEntity & a_Entity, int a_EffectID, int a_Amplifier, short a_Duration) { ASSERT(m_State == 3); // In game mode? @@ -414,7 +408,7 @@ void cProtocol190::SendEntityEffect(const cEntity & a_Entity, int a_EffectID, in -void cProtocol190::SendEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item) +void cProtocol_1_9_0::SendEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item) { ASSERT(m_State == 3); // In game mode? @@ -433,7 +427,7 @@ void cProtocol190::SendEntityEquipment(const cEntity & a_Entity, short a_SlotNum -void cProtocol190::SendEntityHeadLook(const cEntity & a_Entity) +void cProtocol_1_9_0::SendEntityHeadLook(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -446,7 +440,7 @@ void cProtocol190::SendEntityHeadLook(const cEntity & a_Entity) -void cProtocol190::SendEntityLook(const cEntity & a_Entity) +void cProtocol_1_9_0::SendEntityLook(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -461,7 +455,7 @@ void cProtocol190::SendEntityLook(const cEntity & a_Entity) -void cProtocol190::SendEntityMetadata(const cEntity & a_Entity) +void cProtocol_1_9_0::SendEntityMetadata(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -475,7 +469,7 @@ void cProtocol190::SendEntityMetadata(const cEntity & a_Entity) -void cProtocol190::SendEntityProperties(const cEntity & a_Entity) +void cProtocol_1_9_0::SendEntityProperties(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -488,7 +482,7 @@ void cProtocol190::SendEntityProperties(const cEntity & a_Entity) -void cProtocol190::SendEntityRelMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) +void cProtocol_1_9_0::SendEntityRelMove(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) { ASSERT(m_State == 3); // In game mode? @@ -505,7 +499,7 @@ void cProtocol190::SendEntityRelMove(const cEntity & a_Entity, char a_RelX, char -void cProtocol190::SendEntityRelMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) +void cProtocol_1_9_0::SendEntityRelMoveLook(const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ) { ASSERT(m_State == 3); // In game mode? @@ -524,7 +518,7 @@ void cProtocol190::SendEntityRelMoveLook(const cEntity & a_Entity, char a_RelX, -void cProtocol190::SendEntityStatus(const cEntity & a_Entity, char a_Status) +void cProtocol_1_9_0::SendEntityStatus(const cEntity & a_Entity, char a_Status) { ASSERT(m_State == 3); // In game mode? @@ -537,7 +531,7 @@ void cProtocol190::SendEntityStatus(const cEntity & a_Entity, char a_Status) -void cProtocol190::SendEntityVelocity(const cEntity & a_Entity) +void cProtocol_1_9_0::SendEntityVelocity(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -553,7 +547,7 @@ void cProtocol190::SendEntityVelocity(const cEntity & a_Entity) -void cProtocol190::SendExplosion(double a_BlockX, double a_BlockY, double a_BlockZ, float a_Radius, const cVector3iArray & a_BlocksAffected, const Vector3d & a_PlayerMotion) +void cProtocol_1_9_0::SendExplosion(double a_BlockX, double a_BlockY, double a_BlockZ, float a_Radius, const cVector3iArray & a_BlocksAffected, const Vector3d & a_PlayerMotion) { ASSERT(m_State == 3); // In game mode? @@ -578,7 +572,7 @@ void cProtocol190::SendExplosion(double a_BlockX, double a_BlockY, double a_Bloc -void cProtocol190::SendGameMode(eGameMode a_GameMode) +void cProtocol_1_9_0::SendGameMode(eGameMode a_GameMode) { ASSERT(m_State == 3); // In game mode? @@ -591,7 +585,7 @@ void cProtocol190::SendGameMode(eGameMode a_GameMode) -void cProtocol190::SendHealth(void) +void cProtocol_1_9_0::SendHealth(void) { ASSERT(m_State == 3); // In game mode? @@ -606,7 +600,7 @@ void cProtocol190::SendHealth(void) -void cProtocol190::SendHideTitle(void) +void cProtocol_1_9_0::SendHideTitle(void) { ASSERT(m_State == 3); // In game mode? @@ -618,7 +612,7 @@ void cProtocol190::SendHideTitle(void) -void cProtocol190::SendInventorySlot(char a_WindowID, short a_SlotNum, const cItem & a_Item) +void cProtocol_1_9_0::SendInventorySlot(char a_WindowID, short a_SlotNum, const cItem & a_Item) { ASSERT(m_State == 3); // In game mode? @@ -632,7 +626,7 @@ void cProtocol190::SendInventorySlot(char a_WindowID, short a_SlotNum, const cIt -void cProtocol190::SendKeepAlive(UInt32 a_PingID) +void cProtocol_1_9_0::SendKeepAlive(UInt32 a_PingID) { // Drop the packet if the protocol is not in the Game state yet (caused a client crash): if (m_State != 3) @@ -649,7 +643,7 @@ void cProtocol190::SendKeepAlive(UInt32 a_PingID) -void cProtocol190::SendLogin(const cPlayer & a_Player, const cWorld & a_World) +void cProtocol_1_9_0::SendLogin(const cPlayer & a_Player, const cWorld & a_World) { // Send the Join Game packet: { @@ -683,7 +677,7 @@ void cProtocol190::SendLogin(const cPlayer & a_Player, const cWorld & a_World) -void cProtocol190::SendLoginSuccess(void) +void cProtocol_1_9_0::SendLoginSuccess(void) { ASSERT(m_State == 2); // State: login? @@ -706,7 +700,7 @@ void cProtocol190::SendLoginSuccess(void) -void cProtocol190::SendPaintingSpawn(const cPainting & a_Painting) +void cProtocol_1_9_0::SendPaintingSpawn(const cPainting & a_Painting) { ASSERT(m_State == 3); // In game mode? double PosX = a_Painting.GetPosX(); @@ -727,7 +721,7 @@ void cProtocol190::SendPaintingSpawn(const cPainting & a_Painting) -void cProtocol190::SendMapData(const cMap & a_Map, int a_DataStartX, int a_DataStartY) +void cProtocol_1_9_0::SendMapData(const cMap & a_Map, int a_DataStartX, int a_DataStartY) { ASSERT(m_State == 3); // In game mode? @@ -759,7 +753,7 @@ void cProtocol190::SendMapData(const cMap & a_Map, int a_DataStartX, int a_DataS -void cProtocol190::SendPickupSpawn(const cPickup & a_Pickup) +void cProtocol_1_9_0::SendPickupSpawn(const cPickup & a_Pickup) { ASSERT(m_State == 3); // In game mode? @@ -788,7 +782,7 @@ void cProtocol190::SendPickupSpawn(const cPickup & a_Pickup) -void cProtocol190::SendPlayerAbilities(void) +void cProtocol_1_9_0::SendPlayerAbilities(void) { ASSERT(m_State == 3); // In game mode? @@ -817,7 +811,7 @@ void cProtocol190::SendPlayerAbilities(void) -void cProtocol190::SendEntityAnimation(const cEntity & a_Entity, char a_Animation) +void cProtocol_1_9_0::SendEntityAnimation(const cEntity & a_Entity, char a_Animation) { ASSERT(m_State == 3); // In game mode? @@ -830,7 +824,7 @@ void cProtocol190::SendEntityAnimation(const cEntity & a_Entity, char a_Animatio -void cProtocol190::SendParticleEffect(const AString & a_ParticleName, float a_SrcX, float a_SrcY, float a_SrcZ, float a_OffsetX, float a_OffsetY, float a_OffsetZ, float a_ParticleData, int a_ParticleAmount) +void cProtocol_1_9_0::SendParticleEffect(const AString & a_ParticleName, float a_SrcX, float a_SrcY, float a_SrcZ, float a_OffsetX, float a_OffsetY, float a_OffsetZ, float a_ParticleData, int a_ParticleAmount) { ASSERT(m_State == 3); // In game mode? int ParticleID = GetParticleID(a_ParticleName); @@ -852,7 +846,7 @@ void cProtocol190::SendParticleEffect(const AString & a_ParticleName, float a_Sr -void cProtocol190::SendParticleEffect(const AString & a_ParticleName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array a_Data) +void cProtocol_1_9_0::SendParticleEffect(const AString & a_ParticleName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array a_Data) { ASSERT(m_State == 3); // In game mode? int ParticleID = GetParticleID(a_ParticleName); @@ -896,7 +890,7 @@ void cProtocol190::SendParticleEffect(const AString & a_ParticleName, Vector3f a -void cProtocol190::SendPlayerListAddPlayer(const cPlayer & a_Player) +void cProtocol_1_9_0::SendPlayerListAddPlayer(const cPlayer & a_Player) { ASSERT(m_State == 3); // In game mode? @@ -933,7 +927,7 @@ void cProtocol190::SendPlayerListAddPlayer(const cPlayer & a_Player) -void cProtocol190::SendPlayerListRemovePlayer(const cPlayer & a_Player) +void cProtocol_1_9_0::SendPlayerListRemovePlayer(const cPlayer & a_Player) { ASSERT(m_State == 3); // In game mode? @@ -947,7 +941,7 @@ void cProtocol190::SendPlayerListRemovePlayer(const cPlayer & a_Player) -void cProtocol190::SendPlayerListUpdateGameMode(const cPlayer & a_Player) +void cProtocol_1_9_0::SendPlayerListUpdateGameMode(const cPlayer & a_Player) { ASSERT(m_State == 3); // In game mode? @@ -962,7 +956,7 @@ void cProtocol190::SendPlayerListUpdateGameMode(const cPlayer & a_Player) -void cProtocol190::SendPlayerListUpdatePing(const cPlayer & a_Player) +void cProtocol_1_9_0::SendPlayerListUpdatePing(const cPlayer & a_Player) { ASSERT(m_State == 3); // In game mode? @@ -981,7 +975,7 @@ void cProtocol190::SendPlayerListUpdatePing(const cPlayer & a_Player) -void cProtocol190::SendPlayerListUpdateDisplayName(const cPlayer & a_Player, const AString & a_CustomName) +void cProtocol_1_9_0::SendPlayerListUpdateDisplayName(const cPlayer & a_Player, const AString & a_CustomName) { ASSERT(m_State == 3); // In game mode? @@ -1005,7 +999,7 @@ void cProtocol190::SendPlayerListUpdateDisplayName(const cPlayer & a_Player, con -void cProtocol190::SendPlayerMaxSpeed(void) +void cProtocol_1_9_0::SendPlayerMaxSpeed(void) { ASSERT(m_State == 3); // In game mode? @@ -1034,7 +1028,7 @@ void cProtocol190::SendPlayerMaxSpeed(void) -void cProtocol190::SendPlayerMoveLook(void) +void cProtocol_1_9_0::SendPlayerMoveLook(void) { ASSERT(m_State == 3); // In game mode? @@ -1053,7 +1047,7 @@ void cProtocol190::SendPlayerMoveLook(void) -void cProtocol190::SendPlayerPosition(void) +void cProtocol_1_9_0::SendPlayerPosition(void) { // There is no dedicated packet for this, send the whole thing: SendPlayerMoveLook(); @@ -1063,7 +1057,7 @@ void cProtocol190::SendPlayerPosition(void) -void cProtocol190::SendPlayerSpawn(const cPlayer & a_Player) +void cProtocol_1_9_0::SendPlayerSpawn(const cPlayer & a_Player) { // Called to spawn another player for the client cPacketizer Pkt(*this, 0x05); // Spawn Player packet @@ -1082,7 +1076,7 @@ void cProtocol190::SendPlayerSpawn(const cPlayer & a_Player) -void cProtocol190::SendPluginMessage(const AString & a_Channel, const AString & a_Message) +void cProtocol_1_9_0::SendPluginMessage(const AString & a_Channel, const AString & a_Message) { ASSERT(m_State == 3); // In game mode? @@ -1095,7 +1089,7 @@ void cProtocol190::SendPluginMessage(const AString & a_Channel, const AString & -void cProtocol190::SendRemoveEntityEffect(const cEntity & a_Entity, int a_EffectID) +void cProtocol_1_9_0::SendRemoveEntityEffect(const cEntity & a_Entity, int a_EffectID) { ASSERT(m_State == 3); // In game mode? @@ -1108,7 +1102,7 @@ void cProtocol190::SendRemoveEntityEffect(const cEntity & a_Entity, int a_Effect -void cProtocol190::SendResetTitle(void) +void cProtocol_1_9_0::SendResetTitle(void) { ASSERT(m_State == 3); // In game mode? @@ -1120,7 +1114,7 @@ void cProtocol190::SendResetTitle(void) -void cProtocol190::SendRespawn(eDimension a_Dimension) +void cProtocol_1_9_0::SendRespawn(eDimension a_Dimension) { cPacketizer Pkt(*this, 0x33); // Respawn packet cPlayer * Player = m_Client->GetPlayer(); @@ -1134,7 +1128,7 @@ void cProtocol190::SendRespawn(eDimension a_Dimension) -void cProtocol190::SendExperience(void) +void cProtocol_1_9_0::SendExperience(void) { ASSERT(m_State == 3); // In game mode? @@ -1149,7 +1143,7 @@ void cProtocol190::SendExperience(void) -void cProtocol190::SendExperienceOrb(const cExpOrb & a_ExpOrb) +void cProtocol_1_9_0::SendExperienceOrb(const cExpOrb & a_ExpOrb) { ASSERT(m_State == 3); // In game mode? @@ -1165,7 +1159,7 @@ void cProtocol190::SendExperienceOrb(const cExpOrb & a_ExpOrb) -void cProtocol190::SendScoreboardObjective(const AString & a_Name, const AString & a_DisplayName, Byte a_Mode) +void cProtocol_1_9_0::SendScoreboardObjective(const AString & a_Name, const AString & a_DisplayName, Byte a_Mode) { ASSERT(m_State == 3); // In game mode? @@ -1183,7 +1177,7 @@ void cProtocol190::SendScoreboardObjective(const AString & a_Name, const AString -void cProtocol190::SendScoreUpdate(const AString & a_Objective, const AString & a_Player, cObjective::Score a_Score, Byte a_Mode) +void cProtocol_1_9_0::SendScoreUpdate(const AString & a_Objective, const AString & a_Player, cObjective::Score a_Score, Byte a_Mode) { ASSERT(m_State == 3); // In game mode? @@ -1202,7 +1196,7 @@ void cProtocol190::SendScoreUpdate(const AString & a_Objective, const AString & -void cProtocol190::SendDisplayObjective(const AString & a_Objective, cScoreboard::eDisplaySlot a_Display) +void cProtocol_1_9_0::SendDisplayObjective(const AString & a_Objective, cScoreboard::eDisplaySlot a_Display) { ASSERT(m_State == 3); // In game mode? @@ -1215,7 +1209,7 @@ void cProtocol190::SendDisplayObjective(const AString & a_Objective, cScoreboard -void cProtocol190::SendSetSubTitle(const cCompositeChat & a_SubTitle) +void cProtocol_1_9_0::SendSetSubTitle(const cCompositeChat & a_SubTitle) { SendSetRawSubTitle(a_SubTitle.CreateJsonString(false)); } @@ -1224,7 +1218,7 @@ void cProtocol190::SendSetSubTitle(const cCompositeChat & a_SubTitle) -void cProtocol190::SendSetRawSubTitle(const AString & a_SubTitle) +void cProtocol_1_9_0::SendSetRawSubTitle(const AString & a_SubTitle) { ASSERT(m_State == 3); // In game mode? @@ -1238,7 +1232,7 @@ void cProtocol190::SendSetRawSubTitle(const AString & a_SubTitle) -void cProtocol190::SendSetTitle(const cCompositeChat & a_Title) +void cProtocol_1_9_0::SendSetTitle(const cCompositeChat & a_Title) { SendSetRawTitle(a_Title.CreateJsonString(false)); } @@ -1247,7 +1241,7 @@ void cProtocol190::SendSetTitle(const cCompositeChat & a_Title) -void cProtocol190::SendSetRawTitle(const AString & a_Title) +void cProtocol_1_9_0::SendSetRawTitle(const AString & a_Title) { ASSERT(m_State == 3); // In game mode? @@ -1261,7 +1255,7 @@ void cProtocol190::SendSetRawTitle(const AString & a_Title) -void cProtocol190::SendSoundEffect(const AString & a_SoundName, double a_X, double a_Y, double a_Z, float a_Volume, float a_Pitch) +void cProtocol_1_9_0::SendSoundEffect(const AString & a_SoundName, double a_X, double a_Y, double a_Z, float a_Volume, float a_Pitch) { ASSERT(m_State == 3); // In game mode? @@ -1279,7 +1273,7 @@ void cProtocol190::SendSoundEffect(const AString & a_SoundName, double a_X, doub -void cProtocol190::SendSoundParticleEffect(const EffectID a_EffectID, int a_SrcX, int a_SrcY, int a_SrcZ, int a_Data) +void cProtocol_1_9_0::SendSoundParticleEffect(const EffectID a_EffectID, int a_SrcX, int a_SrcY, int a_SrcZ, int a_Data) { ASSERT(m_State == 3); // In game mode? @@ -1294,7 +1288,7 @@ void cProtocol190::SendSoundParticleEffect(const EffectID a_EffectID, int a_SrcX -void cProtocol190::SendSpawnFallingBlock(const cFallingBlock & a_FallingBlock) +void cProtocol_1_9_0::SendSpawnFallingBlock(const cFallingBlock & a_FallingBlock) { ASSERT(m_State == 3); // In game mode? @@ -1319,7 +1313,7 @@ void cProtocol190::SendSpawnFallingBlock(const cFallingBlock & a_FallingBlock) -void cProtocol190::SendSpawnMob(const cMonster & a_Mob) +void cProtocol_1_9_0::SendSpawnMob(const cMonster & a_Mob) { ASSERT(m_State == 3); // In game mode? @@ -1346,7 +1340,7 @@ void cProtocol190::SendSpawnMob(const cMonster & a_Mob) -void cProtocol190::SendSpawnObject(const cEntity & a_Entity, char a_ObjectType, int a_ObjectData, Byte a_Yaw, Byte a_Pitch) +void cProtocol_1_9_0::SendSpawnObject(const cEntity & a_Entity, char a_ObjectType, int a_ObjectData, Byte a_Yaw, Byte a_Pitch) { ASSERT(m_State == 3); // In game mode? double PosX = a_Entity.GetPosX(); @@ -1378,7 +1372,7 @@ void cProtocol190::SendSpawnObject(const cEntity & a_Entity, char a_ObjectType, -void cProtocol190::SendSpawnVehicle(const cEntity & a_Vehicle, char a_VehicleType, char a_VehicleSubType) +void cProtocol_1_9_0::SendSpawnVehicle(const cEntity & a_Vehicle, char a_VehicleType, char a_VehicleSubType) { ASSERT(m_State == 3); // In game mode? @@ -1403,7 +1397,7 @@ void cProtocol190::SendSpawnVehicle(const cEntity & a_Vehicle, char a_VehicleTyp -void cProtocol190::SendStatistics(const cStatManager & a_Manager) +void cProtocol_1_9_0::SendStatistics(const cStatManager & a_Manager) { ASSERT(m_State == 3); // In game mode? @@ -1425,7 +1419,7 @@ void cProtocol190::SendStatistics(const cStatManager & a_Manager) -void cProtocol190::SendTabCompletionResults(const AStringVector & a_Results) +void cProtocol_1_9_0::SendTabCompletionResults(const AStringVector & a_Results) { ASSERT(m_State == 3); // In game mode? @@ -1442,7 +1436,7 @@ void cProtocol190::SendTabCompletionResults(const AStringVector & a_Results) -void cProtocol190::SendTeleportEntity(const cEntity & a_Entity) +void cProtocol_1_9_0::SendTeleportEntity(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -1460,7 +1454,7 @@ void cProtocol190::SendTeleportEntity(const cEntity & a_Entity) -void cProtocol190::SendThunderbolt(int a_BlockX, int a_BlockY, int a_BlockZ) +void cProtocol_1_9_0::SendThunderbolt(int a_BlockX, int a_BlockY, int a_BlockZ) { ASSERT(m_State == 3); // In game mode? @@ -1476,7 +1470,7 @@ void cProtocol190::SendThunderbolt(int a_BlockX, int a_BlockY, int a_BlockZ) -void cProtocol190::SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int a_FadeOutTicks) +void cProtocol_1_9_0::SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int a_FadeOutTicks) { ASSERT(m_State == 3); // In game mode? @@ -1492,7 +1486,7 @@ void cProtocol190::SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int a_F -void cProtocol190::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle) +void cProtocol_1_9_0::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle) { ASSERT(m_State == 3); // In game mode? if (!a_DoDaylightCycle) @@ -1510,7 +1504,7 @@ void cProtocol190::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_Do -void cProtocol190::SendUnloadChunk(int a_ChunkX, int a_ChunkZ) +void cProtocol_1_9_0::SendUnloadChunk(int a_ChunkX, int a_ChunkZ) { ASSERT(m_State == 3); // In game mode? @@ -1522,7 +1516,7 @@ void cProtocol190::SendUnloadChunk(int a_ChunkX, int a_ChunkZ) -void cProtocol190::SendUpdateBlockEntity(cBlockEntity & a_BlockEntity) +void cProtocol_1_9_0::SendUpdateBlockEntity(cBlockEntity & a_BlockEntity) { ASSERT(m_State == 3); // In game mode? @@ -1548,7 +1542,7 @@ void cProtocol190::SendUpdateBlockEntity(cBlockEntity & a_BlockEntity) -void cProtocol190::SendUpdateSign(int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) +void cProtocol_1_9_0::SendUpdateSign(int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) { ASSERT(m_State == 3); // In game mode? @@ -1569,7 +1563,7 @@ void cProtocol190::SendUpdateSign(int a_BlockX, int a_BlockY, int a_BlockZ, cons -void cProtocol190::SendUseBed(const cEntity & a_Entity, int a_BlockX, int a_BlockY, int a_BlockZ) +void cProtocol_1_9_0::SendUseBed(const cEntity & a_Entity, int a_BlockX, int a_BlockY, int a_BlockZ) { ASSERT(m_State == 3); // In game mode? @@ -1582,7 +1576,7 @@ void cProtocol190::SendUseBed(const cEntity & a_Entity, int a_BlockX, int a_Bloc -void cProtocol190::SendWeather(eWeather a_Weather) +void cProtocol_1_9_0::SendWeather(eWeather a_Weather) { ASSERT(m_State == 3); // In game mode? @@ -1599,7 +1593,7 @@ void cProtocol190::SendWeather(eWeather a_Weather) -void cProtocol190::SendWholeInventory(const cWindow & a_Window) +void cProtocol_1_9_0::SendWholeInventory(const cWindow & a_Window) { ASSERT(m_State == 3); // In game mode? @@ -1618,7 +1612,7 @@ void cProtocol190::SendWholeInventory(const cWindow & a_Window) -void cProtocol190::SendWindowClose(const cWindow & a_Window) +void cProtocol_1_9_0::SendWindowClose(const cWindow & a_Window) { ASSERT(m_State == 3); // In game mode? @@ -1630,7 +1624,7 @@ void cProtocol190::SendWindowClose(const cWindow & a_Window) -void cProtocol190::SendWindowOpen(const cWindow & a_Window) +void cProtocol_1_9_0::SendWindowOpen(const cWindow & a_Window) { ASSERT(m_State == 3); // In game mode? @@ -1671,7 +1665,7 @@ void cProtocol190::SendWindowOpen(const cWindow & a_Window) -void cProtocol190::SendWindowProperty(const cWindow & a_Window, short a_Property, short a_Value) +void cProtocol_1_9_0::SendWindowProperty(const cWindow & a_Window, short a_Property, short a_Value) { ASSERT(m_State == 3); // In game mode? @@ -1685,7 +1679,7 @@ void cProtocol190::SendWindowProperty(const cWindow & a_Window, short a_Property -bool cProtocol190::CompressPacket(const AString & a_Packet, AString & a_CompressedData) +bool cProtocol_1_9_0::CompressPacket(const AString & a_Packet, AString & a_CompressedData) { // Compress the data: char CompressedData[MAX_COMPRESSED_PACKET_LEN]; @@ -1728,7 +1722,7 @@ bool cProtocol190::CompressPacket(const AString & a_Packet, AString & a_Compress -int cProtocol190::GetParticleID(const AString & a_ParticleName) +int cProtocol_1_9_0::GetParticleID(const AString & a_ParticleName) { static bool IsInitialized = false; static std::map ParticleMap; @@ -1794,7 +1788,7 @@ int cProtocol190::GetParticleID(const AString & a_ParticleName) -void cProtocol190::FixItemFramePositions(int a_ObjectData, double & a_PosX, double & a_PosZ, double & a_Yaw) +void cProtocol_1_9_0::FixItemFramePositions(int a_ObjectData, double & a_PosX, double & a_PosZ, double & a_Yaw) { switch (a_ObjectData) { @@ -1829,7 +1823,7 @@ void cProtocol190::FixItemFramePositions(int a_ObjectData, double & a_PosX, doub -void cProtocol190::AddReceivedData(const char * a_Data, size_t a_Size) +void cProtocol_1_9_0::AddReceivedData(const char * a_Data, size_t a_Size) { // Write the incoming data into the comm log file: if (g_ShouldLogCommIn && m_CommLogFile.IsOpen()) @@ -2024,7 +2018,7 @@ void cProtocol190::AddReceivedData(const char * a_Data, size_t a_Size) -bool cProtocol190::HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType) +bool cProtocol_1_9_0::HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType) { switch (m_State) { @@ -2116,7 +2110,7 @@ bool cProtocol190::HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType) -void cProtocol190::HandlePacketStatusPing(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketStatusPing(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEInt64, Int64, Timestamp); @@ -2128,7 +2122,7 @@ void cProtocol190::HandlePacketStatusPing(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) { cServer * Server = cRoot::Get()->GetServer(); AString ServerDescription = Server->GetDescription(); @@ -2173,7 +2167,7 @@ void cProtocol190::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketLoginEncryptionResponse(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketLoginEncryptionResponse(cByteBuffer & a_ByteBuffer) { UInt32 EncKeyLength, EncNonceLength; if (!a_ByteBuffer.ReadVarInt(EncKeyLength)) @@ -2236,7 +2230,7 @@ void cProtocol190::HandlePacketLoginEncryptionResponse(cByteBuffer & a_ByteBuffe -void cProtocol190::HandlePacketLoginStart(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketLoginStart(cByteBuffer & a_ByteBuffer) { AString Username; if (!a_ByteBuffer.ReadVarUTF8String(Username)) @@ -2273,7 +2267,7 @@ void cProtocol190::HandlePacketLoginStart(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketAnimation(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketAnimation(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarInt, Int32, Hand); @@ -2284,7 +2278,7 @@ void cProtocol190::HandlePacketAnimation(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketBlockDig(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketBlockDig(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, Status); @@ -2302,7 +2296,7 @@ void cProtocol190::HandlePacketBlockDig(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketBlockPlace(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketBlockPlace(cByteBuffer & a_ByteBuffer) { int BlockX, BlockY, BlockZ; if (!a_ByteBuffer.ReadPosition64(BlockX, BlockY, BlockZ)) @@ -2322,7 +2316,7 @@ void cProtocol190::HandlePacketBlockPlace(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketBoatSteer(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketBoatSteer(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBool, bool, RightPaddle); HANDLE_READ(a_ByteBuffer, ReadBool, bool, LeftPaddle); @@ -2345,7 +2339,7 @@ void cProtocol190::HandlePacketBoatSteer(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketChatMessage(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketChatMessage(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarUTF8String, AString, Message); m_Client->HandleChat(Message); @@ -2355,7 +2349,7 @@ void cProtocol190::HandlePacketChatMessage(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketClientSettings(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketClientSettings(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarUTF8String, AString, Locale); HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, ViewDistance); @@ -2373,7 +2367,7 @@ void cProtocol190::HandlePacketClientSettings(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketClientStatus(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketClientStatus(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, ActionID); switch (ActionID) @@ -2405,7 +2399,7 @@ void cProtocol190::HandlePacketClientStatus(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandleConfirmTeleport(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandleConfirmTeleport(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarInt32, UInt32, TeleportID); // We don't actually validate that this packet is sent or anything yet, but it still needs to be read. @@ -2415,7 +2409,7 @@ void cProtocol190::HandleConfirmTeleport(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketCreativeInventoryAction(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketCreativeInventoryAction(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEInt16, Int16, SlotNum); cItem Item; @@ -2430,7 +2424,7 @@ void cProtocol190::HandlePacketCreativeInventoryAction(cByteBuffer & a_ByteBuffe -void cProtocol190::HandlePacketEntityAction(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketEntityAction(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarInt, UInt32, PlayerID); HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, Action); @@ -2450,7 +2444,7 @@ void cProtocol190::HandlePacketEntityAction(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketKeepAlive(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketKeepAlive(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarInt, UInt32, KeepAliveID); m_Client->HandleKeepAlive(KeepAliveID); @@ -2460,7 +2454,7 @@ void cProtocol190::HandlePacketKeepAlive(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketPlayer(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketPlayer(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBool, bool, IsOnGround); // TODO: m_Client->HandlePlayerOnGround(IsOnGround); @@ -2470,7 +2464,7 @@ void cProtocol190::HandlePacketPlayer(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketPlayerAbilities(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketPlayerAbilities(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, Flags); HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, FlyingSpeed); @@ -2494,7 +2488,7 @@ void cProtocol190::HandlePacketPlayerAbilities(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketPlayerLook(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketPlayerLook(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, Yaw); HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, Pitch); @@ -2506,7 +2500,7 @@ void cProtocol190::HandlePacketPlayerLook(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketPlayerPos(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketPlayerPos(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEDouble, double, PosX); HANDLE_READ(a_ByteBuffer, ReadBEDouble, double, PosY); @@ -2519,7 +2513,7 @@ void cProtocol190::HandlePacketPlayerPos(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketPlayerPosLook(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketPlayerPosLook(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEDouble, double, PosX); HANDLE_READ(a_ByteBuffer, ReadBEDouble, double, PosY); @@ -2534,7 +2528,7 @@ void cProtocol190::HandlePacketPlayerPosLook(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketPluginMessage(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketPluginMessage(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarUTF8String, AString, Channel); @@ -2565,7 +2559,7 @@ void cProtocol190::HandlePacketPluginMessage(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketSlotSelect(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketSlotSelect(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEInt16, Int16, SlotNum); m_Client->HandleSlotSelected(SlotNum); @@ -2575,7 +2569,7 @@ void cProtocol190::HandlePacketSlotSelect(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketSpectate(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketSpectate(cByteBuffer & a_ByteBuffer) { AString playerUUID; if (!a_ByteBuffer.ReadUUID(playerUUID)) @@ -2590,7 +2584,7 @@ void cProtocol190::HandlePacketSpectate(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketSteerVehicle(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketSteerVehicle(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, Sideways); HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, Forward); @@ -2614,7 +2608,7 @@ void cProtocol190::HandlePacketSteerVehicle(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketTabComplete(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketTabComplete(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarUTF8String, AString, Text); HANDLE_READ(a_ByteBuffer, ReadBool, bool, AssumeCommand); @@ -2632,7 +2626,7 @@ void cProtocol190::HandlePacketTabComplete(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketUpdateSign(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketUpdateSign(cByteBuffer & a_ByteBuffer) { int BlockX, BlockY, BlockZ; if (!a_ByteBuffer.ReadPosition64(BlockX, BlockY, BlockZ)) @@ -2654,7 +2648,7 @@ void cProtocol190::HandlePacketUpdateSign(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketUseEntity(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketUseEntity(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarInt, UInt32, EntityID); HANDLE_READ(a_ByteBuffer, ReadVarInt, UInt32, Type); @@ -2694,7 +2688,7 @@ void cProtocol190::HandlePacketUseEntity(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketUseItem(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketUseItem(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadVarInt, UInt64, Hand); @@ -2706,7 +2700,7 @@ void cProtocol190::HandlePacketUseItem(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketEnchantItem(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketEnchantItem(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, WindowID); HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, Enchantment); @@ -2718,7 +2712,7 @@ void cProtocol190::HandlePacketEnchantItem(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketVehicleMove(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketVehicleMove(cByteBuffer & a_ByteBuffer) { // This handles updating the vehicles location server side HANDLE_READ(a_ByteBuffer, ReadBEDouble, double, xPos); @@ -2744,7 +2738,7 @@ void cProtocol190::HandlePacketVehicleMove(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketWindowClick(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketWindowClick(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, WindowID); HANDLE_READ(a_ByteBuffer, ReadBEInt16, Int16, SlotNum); @@ -2796,7 +2790,7 @@ void cProtocol190::HandlePacketWindowClick(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandlePacketWindowClose(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_0::HandlePacketWindowClose(cByteBuffer & a_ByteBuffer) { HANDLE_READ(a_ByteBuffer, ReadBEUInt8, UInt8, WindowID); m_Client->HandleWindowClose(WindowID); @@ -2806,7 +2800,7 @@ void cProtocol190::HandlePacketWindowClose(cByteBuffer & a_ByteBuffer) -void cProtocol190::HandleVanillaPluginMessage(cByteBuffer & a_ByteBuffer, const AString & a_Channel) +void cProtocol_1_9_0::HandleVanillaPluginMessage(cByteBuffer & a_ByteBuffer, const AString & a_Channel) { if (a_Channel == "MC|AdvCdm") { @@ -2871,7 +2865,7 @@ void cProtocol190::HandleVanillaPluginMessage(cByteBuffer & a_ByteBuffer, const -void cProtocol190::SendData(const char * a_Data, size_t a_Size) +void cProtocol_1_9_0::SendData(const char * a_Data, size_t a_Size) { if (m_IsEncrypted) { @@ -2895,7 +2889,7 @@ void cProtocol190::SendData(const char * a_Data, size_t a_Size) -bool cProtocol190::ReadItem(cByteBuffer & a_ByteBuffer, cItem & a_Item, size_t a_KeepRemainingBytes) +bool cProtocol_1_9_0::ReadItem(cByteBuffer & a_ByteBuffer, cItem & a_Item, size_t a_KeepRemainingBytes) { HANDLE_PACKET_READ(a_ByteBuffer, ReadBEInt16, Int16, ItemType); if (ItemType == -1) @@ -2930,7 +2924,7 @@ bool cProtocol190::ReadItem(cByteBuffer & a_ByteBuffer, cItem & a_Item, size_t a -void cProtocol190::ParseItemMetadata(cItem & a_Item, const AString & a_Metadata) +void cProtocol_1_9_0::ParseItemMetadata(cItem & a_Item, const AString & a_Metadata) { // Parse into NBT: cParsedNBT NBT(a_Metadata.data(), a_Metadata.size()); @@ -3133,7 +3127,7 @@ void cProtocol190::ParseItemMetadata(cItem & a_Item, const AString & a_Metadata) -void cProtocol190::StartEncryption(const Byte * a_Key) +void cProtocol_1_9_0::StartEncryption(const Byte * a_Key) { m_Encryptor.Init(a_Key, a_Key); m_Decryptor.Init(a_Key, a_Key); @@ -3155,7 +3149,7 @@ void cProtocol190::StartEncryption(const Byte * a_Key) -eBlockFace cProtocol190::FaceIntToBlockFace(Int32 a_BlockFace) +eBlockFace cProtocol_1_9_0::FaceIntToBlockFace(Int32 a_BlockFace) { // Normalize the blockface values returned from the protocol // Anything known gets mapped 1:1, everything else returns BLOCK_FACE_NONE @@ -3176,9 +3170,9 @@ eBlockFace cProtocol190::FaceIntToBlockFace(Int32 a_BlockFace) //////////////////////////////////////////////////////////////////////////////// -// cProtocol190::cPacketizer: +// cProtocol_1_9_0::cPacketizer: -void cProtocol190::SendPacket(cPacketizer & a_Pkt) +void cProtocol_1_9_0::SendPacket(cPacketizer & a_Pkt) { UInt32 PacketLen = static_cast(m_OutPacketBuffer.GetUsedSpace()); AString PacketData, CompressedPacket; @@ -3188,7 +3182,7 @@ void cProtocol190::SendPacket(cPacketizer & a_Pkt) if ((m_State == 3) && (PacketLen >= 256)) { // Compress the packet payload: - if (!cProtocol190::CompressPacket(PacketData, CompressedPacket)) + if (!cProtocol_1_9_0::CompressPacket(PacketData, CompressedPacket)) { return; } @@ -3238,7 +3232,7 @@ void cProtocol190::SendPacket(cPacketizer & a_Pkt) -void cProtocol190::WriteItem(cPacketizer & a_Pkt, const cItem & a_Item) +void cProtocol_1_9_0::WriteItem(cPacketizer & a_Pkt, const cItem & a_Item) { short ItemType = a_Item.m_ItemType; ASSERT(ItemType >= -1); // Check validity of packets in debug runtime @@ -3413,7 +3407,7 @@ void cProtocol190::WriteItem(cPacketizer & a_Pkt, const cItem & a_Item) -void cProtocol190::WriteBlockEntity(cPacketizer & a_Pkt, const cBlockEntity & a_BlockEntity) +void cProtocol_1_9_0::WriteBlockEntity(cPacketizer & a_Pkt, const cBlockEntity & a_BlockEntity) { cFastNBTWriter Writer; @@ -3517,7 +3511,7 @@ void cProtocol190::WriteBlockEntity(cPacketizer & a_Pkt, const cBlockEntity & a_ -void cProtocol190::WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_Entity) +void cProtocol_1_9_0::WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_Entity) { // Common metadata: Int8 Flags = 0; @@ -3712,7 +3706,7 @@ void cProtocol190::WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_En -void cProtocol190::WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) +void cProtocol_1_9_0::WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) { // Living Enitiy Metadata if (a_Mob.HasCustomName()) @@ -4045,7 +4039,7 @@ void cProtocol190::WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) -void cProtocol190::WriteEntityProperties(cPacketizer & a_Pkt, const cEntity & a_Entity) +void cProtocol_1_9_0::WriteEntityProperties(cPacketizer & a_Pkt, const cEntity & a_Entity) { if (!a_Entity.IsMob()) { @@ -4066,9 +4060,9 @@ void cProtocol190::WriteEntityProperties(cPacketizer & a_Pkt, const cEntity & a_ //////////////////////////////////////////////////////////////////////////////// -// cProtocol191: +// cProtocol_1_9_1: -cProtocol191::cProtocol191(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : +cProtocol_1_9_1::cProtocol_1_9_1(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : super(a_Client, a_ServerAddress, a_ServerPort, a_State) { } @@ -4077,7 +4071,7 @@ cProtocol191::cProtocol191(cClientHandle * a_Client, const AString &a_ServerAddr -void cProtocol191::SendLogin(const cPlayer & a_Player, const cWorld & a_World) +void cProtocol_1_9_1::SendLogin(const cPlayer & a_Player, const cWorld & a_World) { // Send the Join Game packet: { @@ -4112,7 +4106,7 @@ void cProtocol191::SendLogin(const cPlayer & a_Player, const cWorld & a_World) -void cProtocol191::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_1::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) { cServer * Server = cRoot::Get()->GetServer(); AString ServerDescription = Server->GetDescription(); @@ -4158,9 +4152,9 @@ void cProtocol191::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) //////////////////////////////////////////////////////////////////////////////// -// cProtocol192: +// cProtocol_1_9_2: -cProtocol192::cProtocol192(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : +cProtocol_1_9_2::cProtocol_1_9_2(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : super(a_Client, a_ServerAddress, a_ServerPort, a_State) { } @@ -4169,7 +4163,7 @@ cProtocol192::cProtocol192(cClientHandle * a_Client, const AString &a_ServerAddr -void cProtocol192::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_2::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) { cServer * Server = cRoot::Get()->GetServer(); AString ServerDescription = Server->GetDescription(); @@ -4215,9 +4209,9 @@ void cProtocol192::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) //////////////////////////////////////////////////////////////////////////////// -// cProtocol194: +// cProtocol_1_9_4: -cProtocol194::cProtocol194(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : +cProtocol_1_9_4::cProtocol_1_9_4(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State) : super(a_Client, a_ServerAddress, a_ServerPort, a_State) { } @@ -4226,7 +4220,7 @@ cProtocol194::cProtocol194(cClientHandle * a_Client, const AString &a_ServerAddr -void cProtocol194::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) +void cProtocol_1_9_4::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) { cServer * Server = cRoot::Get()->GetServer(); AString ServerDescription = Server->GetDescription(); @@ -4271,8 +4265,9 @@ void cProtocol194::HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) -void cProtocol194::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player) +void cProtocol_1_9_4::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) { + UNUSED(a_Count); ASSERT(m_State == 3); // In game mode? cPacketizer Pkt(*this, 0x48); // Collect Item packet @@ -4284,7 +4279,7 @@ void cProtocol194::SendCollectEntity(const cEntity & a_Entity, const cPlayer & a -void cProtocol194::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) +void cProtocol_1_9_4::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) { ASSERT(m_State == 3); // In game mode? @@ -4300,7 +4295,7 @@ void cProtocol194::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerialize -void cProtocol194::SendEntityEffect(const cEntity & a_Entity, int a_EffectID, int a_Amplifier, short a_Duration) +void cProtocol_1_9_4::SendEntityEffect(const cEntity & a_Entity, int a_EffectID, int a_Amplifier, short a_Duration) { ASSERT(m_State == 3); // In game mode? @@ -4316,7 +4311,7 @@ void cProtocol194::SendEntityEffect(const cEntity & a_Entity, int a_EffectID, in -void cProtocol194::SendEntityProperties(const cEntity & a_Entity) +void cProtocol_1_9_4::SendEntityProperties(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -4330,7 +4325,7 @@ void cProtocol194::SendEntityProperties(const cEntity & a_Entity) -void cProtocol194::SendPlayerMaxSpeed(void) +void cProtocol_1_9_4::SendPlayerMaxSpeed(void) { ASSERT(m_State == 3); // In game mode? @@ -4359,7 +4354,7 @@ void cProtocol194::SendPlayerMaxSpeed(void) -void cProtocol194::SendTeleportEntity(const cEntity & a_Entity) +void cProtocol_1_9_4::SendTeleportEntity(const cEntity & a_Entity) { ASSERT(m_State == 3); // In game mode? @@ -4377,7 +4372,7 @@ void cProtocol194::SendTeleportEntity(const cEntity & a_Entity) -void cProtocol194::SendUpdateSign(int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) +void cProtocol_1_9_4::SendUpdateSign(int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) { ASSERT(m_State == 3); // In game mode? diff --git a/src/Protocol/Protocol19x.h b/src/Protocol/Protocol_1_9.h similarity index 80% rename from src/Protocol/Protocol19x.h rename to src/Protocol/Protocol_1_9.h index 64cad081f..99fc87b69 100644 --- a/src/Protocol/Protocol19x.h +++ b/src/Protocol/Protocol_1_9.h @@ -1,17 +1,16 @@ -// Protocol19x.h +// Protocol_1_9.h /* -Declares the 1.9.x protocol classes: - - cProtocol190 - - release 1.9.0 protocol (#107) - - cProtocol191 +Declares the 1.9 protocol classes: + - cProtocol_1_9_0 + - release 1.9 protocol (#107) + - cProtocol_1_9_1 - release 1.9.1 protocol (#108) - - cProtocol192 + - cProtocol_1_9_2 - release 1.9.2 protocol (#109) - - cProtocol194 + - cProtocol_1_9_4 - release 1.9.4 protocol (#110) -(others may be added later in the future for the 1.9 release series) */ @@ -53,14 +52,14 @@ namespace Json -class cProtocol190 : +class cProtocol_1_9_0 : public cProtocol { typedef cProtocol super; public: - cProtocol190(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); + cProtocol_1_9_0(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); /** Called when client sends some data: */ virtual void DataReceived(const char * a_Data, size_t a_Size) override; @@ -76,7 +75,7 @@ public: virtual void SendChat (const cCompositeChat & a_Message, eChatType a_Type, bool a_ShouldUseChatPrefixes) override; virtual void SendChatRaw (const AString & a_MessageRaw, eChatType a_Type) override; virtual void SendChunkData (int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) override; - virtual void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player) override; + virtual void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) override; virtual void SendDestroyEntity (const cEntity & a_Entity) override; virtual void SendDetachEntity (const cEntity & a_Entity, const cEntity & a_PreviousVehicle) override; virtual void SendDisconnect (const AString & a_Reason) override; @@ -189,51 +188,50 @@ protected: void AddReceivedData(const char * a_Data, size_t a_Size); /** Reads and handles the packet. The packet length and type have already been read. - Returns true if the packet was understood, false if it was an unknown packet - */ - bool HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType); + Returns true if the packet was understood, false if it was an unknown packet. */ + virtual bool HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType); // Packet handlers while in the Status state (m_State == 1): virtual void HandlePacketStatusPing(cByteBuffer & a_ByteBuffer); virtual void HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer); // Packet handlers while in the Login state (m_State == 2): - void HandlePacketLoginEncryptionResponse(cByteBuffer & a_ByteBuffer); - void HandlePacketLoginStart(cByteBuffer & a_ByteBuffer); + virtual void HandlePacketLoginEncryptionResponse(cByteBuffer & a_ByteBuffer); + virtual void HandlePacketLoginStart(cByteBuffer & a_ByteBuffer); // Packet handlers while in the Game state (m_State == 3): - void HandlePacketAnimation (cByteBuffer & a_ByteBuffer); - void HandlePacketBlockDig (cByteBuffer & a_ByteBuffer); - void HandlePacketBlockPlace (cByteBuffer & a_ByteBuffer); - void HandlePacketBoatSteer (cByteBuffer & a_ByteBuffer); - void HandlePacketChatMessage (cByteBuffer & a_ByteBuffer); - void HandlePacketClientSettings (cByteBuffer & a_ByteBuffer); - void HandlePacketClientStatus (cByteBuffer & a_ByteBuffer); - void HandleConfirmTeleport (cByteBuffer & a_ByteBuffer); - void HandlePacketCreativeInventoryAction(cByteBuffer & a_ByteBuffer); - void HandlePacketEntityAction (cByteBuffer & a_ByteBuffer); - void HandlePacketKeepAlive (cByteBuffer & a_ByteBuffer); - void HandlePacketPlayer (cByteBuffer & a_ByteBuffer); - void HandlePacketPlayerAbilities (cByteBuffer & a_ByteBuffer); - void HandlePacketPlayerLook (cByteBuffer & a_ByteBuffer); - void HandlePacketPlayerPos (cByteBuffer & a_ByteBuffer); - void HandlePacketPlayerPosLook (cByteBuffer & a_ByteBuffer); - void HandlePacketPluginMessage (cByteBuffer & a_ByteBuffer); - void HandlePacketSlotSelect (cByteBuffer & a_ByteBuffer); - void HandlePacketSteerVehicle (cByteBuffer & a_ByteBuffer); - void HandlePacketSpectate (cByteBuffer & a_ByteBuffer); - void HandlePacketTabComplete (cByteBuffer & a_ByteBuffer); - void HandlePacketUpdateSign (cByteBuffer & a_ByteBuffer); - void HandlePacketUseEntity (cByteBuffer & a_ByteBuffer); - void HandlePacketUseItem (cByteBuffer & a_ByteBuffer); - void HandlePacketEnchantItem (cByteBuffer & a_ByteBuffer); - void HandlePacketVehicleMove (cByteBuffer & a_ByteBuffer); - void HandlePacketWindowClick (cByteBuffer & a_ByteBuffer); - void HandlePacketWindowClose (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketAnimation (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketBlockDig (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketBlockPlace (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketBoatSteer (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketChatMessage (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketClientSettings (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketClientStatus (cByteBuffer & a_ByteBuffer); + virtual void HandleConfirmTeleport (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketCreativeInventoryAction(cByteBuffer & a_ByteBuffer); + virtual void HandlePacketEntityAction (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketKeepAlive (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketPlayer (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketPlayerAbilities (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketPlayerLook (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketPlayerPos (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketPlayerPosLook (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketPluginMessage (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketSlotSelect (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketSteerVehicle (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketSpectate (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketTabComplete (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketUpdateSign (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketUseEntity (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketUseItem (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketEnchantItem (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketVehicleMove (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketWindowClick (cByteBuffer & a_ByteBuffer); + virtual void HandlePacketWindowClose (cByteBuffer & a_ByteBuffer); /** Parses Vanilla plugin messages into specific ClientHandle calls. The message payload is still in the bytebuffer, the handler reads it specifically for each handled channel */ - void HandleVanillaPluginMessage(cByteBuffer & a_ByteBuffer, const AString & a_Channel); + virtual void HandleVanillaPluginMessage(cByteBuffer & a_ByteBuffer, const AString & a_Channel); /** Sends the data to the client, encrypting them if needed. */ @@ -297,15 +295,15 @@ protected: /** The version 108 protocol, used by 1.9.1. Uses an int rather than a byte for dimension in join game. */ -class cProtocol191 : - public cProtocol190 +class cProtocol_1_9_1 : + public cProtocol_1_9_0 { - typedef cProtocol190 super; + typedef cProtocol_1_9_0 super; public: - cProtocol191(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); + cProtocol_1_9_1(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); - // cProtocol190 overrides: + // cProtocol_1_9_0 overrides: virtual void SendLogin(const cPlayer & a_Player, const cWorld & a_World) override; virtual void HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) override; @@ -316,15 +314,15 @@ public: /** The version 109 protocol, used by 1.9.2. Same as 1.9.1, except the server list ping version number changed with the protocol number. */ -class cProtocol192 : - public cProtocol191 +class cProtocol_1_9_2 : + public cProtocol_1_9_1 { - typedef cProtocol191 super; + typedef cProtocol_1_9_1 super; public: - cProtocol192(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); + cProtocol_1_9_2(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); - // cProtocol190 overrides: + // cProtocol_1_9_1 overrides: virtual void HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) override; } ; @@ -334,16 +332,16 @@ public: /** The version 110 protocol, used by 1.9.3 and 1.9.4. */ -class cProtocol194 : - public cProtocol192 +class cProtocol_1_9_4 : + public cProtocol_1_9_2 { - typedef cProtocol192 super; + typedef cProtocol_1_9_2 super; public: - cProtocol194(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); + cProtocol_1_9_4(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); - // cProtocol190 overrides: - virtual void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player) override; + // cProtocol_1_9_2 overrides: + virtual void SendCollectEntity (const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) override; virtual void SendChunkData (int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) override; virtual void SendEntityEffect (const cEntity & a_Entity, int a_EffectID, int a_Amplifier, short a_Duration) override; virtual void SendEntityProperties(const cEntity & a_Entity) override; diff --git a/src/World.cpp b/src/World.cpp index e02ca7964..e66b52281 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -2446,9 +2446,9 @@ void cWorld::BroadcastChat(const cCompositeChat & a_Message, const cClientHandle -void cWorld::BroadcastCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, const cClientHandle * a_Exclude) +void cWorld::BroadcastCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count, const cClientHandle * a_Exclude) { - m_ChunkMap->BroadcastCollectEntity(a_Entity, a_Player, a_Exclude); + m_ChunkMap->BroadcastCollectEntity(a_Entity, a_Player, a_Count, a_Exclude); } diff --git a/src/World.h b/src/World.h index 84f1d4957..707817fd4 100644 --- a/src/World.h +++ b/src/World.h @@ -192,7 +192,7 @@ public: void BroadcastChat (const cCompositeChat & a_Message, const cClientHandle * a_Exclude = nullptr); // tolua_end - void BroadcastCollectEntity (const cEntity & a_Pickup, const cPlayer & a_Player, const cClientHandle * a_Exclude = nullptr); + void BroadcastCollectEntity (const cEntity & a_Pickup, const cPlayer & a_Player, int a_Count, const cClientHandle * a_Exclude = nullptr); void BroadcastDestroyEntity (const cEntity & a_Entity, const cClientHandle * a_Exclude = nullptr); void BroadcastDetachEntity (const cEntity & a_Entity, const cEntity & a_PreviousVehicle); void BroadcastEntityEffect (const cEntity & a_Entity, int a_EffectID, int a_Amplifier, short a_Duration, const cClientHandle * a_Exclude = nullptr);