17 #include "../ByteBuffer.h"
18 #include "../Registries/CustomStatistics.h"
20 #include "../mbedTLS++/AesCfb128Decryptor.h"
21 #include "../mbedTLS++/AesCfb128Encryptor.h"
65 virtual void SendEntityEffect (
const cEntity & a_Entity,
int a_EffectID,
int a_Amplifier,
int a_Duration)
override;
85 virtual void SendMapData (
const cMap & a_Map,
int a_DataStartX,
int a_DataStartY)
override;
120 virtual void SendTitleTimes (
int a_FadeInTicks,
int a_DisplayTicks,
int a_FadeOutTicks)
override;
std::vector< sSetBlock > sSetBlockVector
unsigned char NIBBLETYPE
The datatype used by nibbledata (meta, light, skylight)
unsigned char BLOCKTYPE
The datatype used by blockdata.
eDimension
Dimension of a world.
eBlockFace
Block face constants, used in PlayerDigging and PlayerBlockPlacement packets and bbox collision calc.
std::chrono::duration< signed long long int, cTickTime::period > cTickTimeLong
std::basic_string_view< std::byte > ContiguousByteBufferView
std::basic_string< std::byte > ContiguousByteBuffer
eMonsterType
Identifies individual monster type.
std::vector< AString > AStringVector
An object that can store incoming bytes and lets its clients read the bytes sequentially The bytes ar...
Container for a single chat message composed of multiple functional parts.
Encapsulates an in-game world map.
Decrypts data using the AES / CFB 128 algorithm.
Encrypts data using the AES / CFB (128) algorithm.
Composes an individual packet in the protocol's m_OutPacketBuffer; sends it just before being destruc...
cProtocol(cClientHandle *a_Client)
ePacketType
Logical types of outgoing packets.
Version
The protocol version number, received from the client in the Handshake packet.
virtual void SendBossBarUpdateStyle(UInt32 a_UniqueID, BossBarColor a_Color, BossBarDivisionType a_DivisionType) override
virtual void SendSoundEffect(const AString &a_SoundName, Vector3d a_Origin, float a_Volume, float a_Pitch) override
virtual void WriteEntityProperties(cPacketizer &a_Pkt, const cEntity &a_Entity) const
Writes the entity properties for the specified entity, including the Count field.
virtual void SendPlayerListRemovePlayer(const cPlayer &a_Player) override
void AddReceivedData(cByteBuffer &a_Buffer, ContiguousByteBufferView a_Data)
Adds the received (unencrypted) data to m_ReceivedData, parses complete packets.
virtual void ParseItemMetadata(cItem &a_Item, ContiguousByteBufferView a_Metadata) const
Parses item metadata as read by ReadItem(), into the item enchantments.
virtual void HandlePacketEntityAction(cByteBuffer &a_ByteBuffer)
virtual void HandlePacketPlayer(cByteBuffer &a_ByteBuffer)
virtual void SendEntityVelocity(const cEntity &a_Entity) override
virtual void SendPlayerListHeaderFooter(const cCompositeChat &a_Header, const cCompositeChat &a_Footer) override
virtual void SendUpdateBlockEntity(cBlockEntity &a_BlockEntity) override
virtual void HandlePacketUpdateSign(cByteBuffer &a_ByteBuffer)
virtual void HandlePacketStatusPing(cByteBuffer &a_ByteBuffer)
virtual void SendEntitySpawn(const cEntity &a_Entity, const UInt8 a_ObjectType, const Int32 a_ObjectData)
Sends the entity type and entity-dependent data required for the entity to initially spawn.
virtual void HandlePacketLoginEncryptionResponse(cByteBuffer &a_ByteBuffer)
virtual void DataPrepared(ContiguousByteBuffer &a_Data) override
Called by cClientHandle to finalise a buffer of prepared data before they are sent to the client.
virtual void SendGameMode(eGameMode a_GameMode) override
virtual void HandlePacketEnchantItem(cByteBuffer &a_ByteBuffer)
virtual void SendTabCompletionResults(const AStringVector &a_Results) override
virtual UInt32 GetProtocolMobType(eMonsterType a_MobType) const
Converts eMonsterType to protocol-specific mob types.
virtual void SendTimeUpdate(cTickTimeLong a_WorldAge, cTickTimeLong a_WorldDate, bool a_DoDaylightCycle) override
virtual void SendPlayerListUpdateGameMode(const cPlayer &a_Player) override
virtual void SendPlayerListAddPlayer(const cPlayer &a_Player) override
virtual void WriteEntityMetadata(cPacketizer &a_Pkt, const cEntity &a_Entity) const
Writes the metadata for the specified entity, not including the terminating 0x7f.
void StartEncryption(const Byte *a_Key)
virtual void SendRemoveEntityEffect(const cEntity &a_Entity, int a_EffectID) override
virtual void HandlePacketUseEntity(cByteBuffer &a_ByteBuffer)
virtual void SendParticleEffect(const AString &a_ParticleName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount) override
virtual void SendScoreUpdate(const AString &a_Objective, const AString &a_Player, cObjective::Score a_Score, Byte a_Mode) override
virtual void SendExperienceOrb(const cExpOrb &a_ExpOrb) override
virtual unsigned char GetProtocolEntityAnimation(EntityAnimation a_Animation) const
Converts an animation into an ID suitable for use with the Entity Animation packet.
virtual void SendResourcePack(const AString &a_ResourcePackUrl) override
virtual void WriteBlockEntity(cFastNBTWriter &a_Writer, const cBlockEntity &a_BlockEntity) const
Writes the block entity data for the specified block entity into the packet.
virtual void HandlePacketClientSettings(cByteBuffer &a_ByteBuffer)
virtual void SendWholeInventory(const cWindow &a_Window) override
virtual void SendPlayerPosition(void) override
virtual void SendBlockAction(Vector3i a_BlockPos, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType) override
virtual void SendSetRawSubTitle(const AString &a_SubTitle) override
virtual void HandlePacketLoginStart(cByteBuffer &a_ByteBuffer)
virtual void HandlePacketPlayerPos(cByteBuffer &a_ByteBuffer)
virtual void SendExperience(void) override
virtual void SendEntityPosition(const cEntity &a_Entity) override
virtual void SendExplosion(Vector3f a_Position, float a_Power) override
virtual void SendBossBarAdd(UInt32 a_UniqueID, const cCompositeChat &a_Title, float a_FractionFilled, BossBarColor a_Color, BossBarDivisionType a_DivisionType, bool a_DarkenSky, bool a_PlayEndMusic, bool a_CreateFog) override
virtual void SendRespawn(eDimension a_Dimension) override
virtual void SendUnlockRecipe(UInt32 a_RecipeID) override
virtual void SendScoreboardObjective(const AString &a_Name, const AString &a_DisplayName, Byte a_Mode) override
virtual void SendEntityProperties(const cEntity &a_Entity) override
virtual void HandlePacketCreativeInventoryAction(cByteBuffer &a_ByteBuffer)
virtual UInt32 GetPacketID(ePacketType a_Packet) const override
Get the packet ID for a given packet.
virtual void SendPluginMessage(const AString &a_Channel, ContiguousByteBufferView a_Message) override
virtual void SendInventorySlot(char a_WindowID, short a_SlotNum, const cItem &a_Item) override
virtual void SendSetRawTitle(const AString &a_Title) override
virtual void SendUnleashEntity(const cEntity &a_Entity) override
virtual void SendSoundParticleEffect(const EffectID a_EffectID, Vector3i a_Origin, int a_Data) override
virtual void SendInitRecipes(UInt32 a_RecipeID) override
virtual void HandlePacketWindowClose(cByteBuffer &a_ByteBuffer)
virtual void SendSetTitle(const cCompositeChat &a_Title) override
virtual void SendBlockBreakAnim(UInt32 a_EntityID, Vector3i a_BlockPos, char a_Stage) override
virtual void HandleVanillaPluginMessage(cByteBuffer &a_ByteBuffer, std::string_view a_Channel)
Parses Vanilla plugin messages into specific ClientHandle calls.
virtual void SendChat(const AString &a_Message, eChatType a_Type) override
virtual void SendBossBarUpdateHealth(UInt32 a_UniqueID, float a_FractionFilled) override
virtual void HandlePacketStatusRequest(cByteBuffer &a_ByteBuffer)
virtual void SendEntityMetadata(const cEntity &a_Entity) override
virtual void SendEntityEffect(const cEntity &a_Entity, int a_EffectID, int a_Amplifier, int a_Duration) override
virtual void HandlePacketPluginMessage(cByteBuffer &a_ByteBuffer)
cAesCfb128Decryptor m_Decryptor
cFile m_CommLogFile
The logfile where the comm is logged, when g_ShouldLogComm is true.
virtual void SendBlockChanges(int a_ChunkX, int a_ChunkZ, const sSetBlockVector &a_Changes) override
virtual void HandlePacketPlayerAbilities(cByteBuffer &a_ByteBuffer)
virtual void SendUnloadChunk(int a_ChunkX, int a_ChunkZ) override
virtual void WriteMobMetadata(cPacketizer &a_Pkt, const cMonster &a_Mob) const
Writes the mob-specific metadata for the specified mob.
virtual void SendDisconnect(const AString &a_Reason) override
virtual void SendWindowClose(const cWindow &a_Window) override
virtual void SendDisplayObjective(const AString &a_Objective, cScoreboard::eDisplaySlot a_Display) override
virtual void SendDestroyEntity(const cEntity &a_Entity) override
virtual void SendPlayerPermissionLevel(void) override
virtual void SendHealth(void) override
virtual void WriteItem(cPacketizer &a_Pkt, const cItem &a_Item) const
Writes the item data into a packet.
virtual void SendSetSubTitle(const cCompositeChat &a_SubTitle) override
virtual void SendWindowProperty(const cWindow &a_Window, size_t a_Property, short a_Value) override
virtual void SendHeldItemChange(int a_ItemIndex) override
virtual void SendEntityHeadLook(const cEntity &a_Entity) override
virtual void SendPlayerListUpdatePing() override
virtual void SendLogin(const cPlayer &a_Player, const cWorld &a_World) override
virtual void SendPlayerMoveLook(void) override
cProtocol_1_8_0(cClientHandle *a_Client, const AString &a_ServerAddress, State a_State)
virtual void SendBossBarRemove(UInt32 a_UniqueID) override
virtual void SendCollectEntity(const cEntity &a_Collected, const cEntity &a_Collector, unsigned a_Count) override
virtual void SendBlockChange(Vector3i a_BlockPos, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) override
virtual void SendPlayerAbilities(void) override
virtual void SendResetTitle(void) override
virtual void HandlePacketChatMessage(cByteBuffer &a_ByteBuffer)
State m_State
State of the protocol.
virtual UInt8 GetProtocolEntityType(const cEntity &a_Entity) const
Converts an entity to a protocol-specific entity type.
virtual void HandlePacketKeepAlive(cByteBuffer &a_ByteBuffer)
virtual void SendLoginSuccess(void) override
virtual void SendBossBarUpdateTitle(UInt32 a_UniqueID, const cCompositeChat &a_Title) override
virtual void HandlePacketResourcePackStatus(cByteBuffer &a_ByteBuffer)
virtual void SendDetachEntity(const cEntity &a_Entity, const cEntity &a_PreviousVehicle) override
virtual void HandlePacketBlockPlace(cByteBuffer &a_ByteBuffer)
static const char * GetProtocolStatisticName(CustomStatistic a_Statistic)
Converts a statistic to a protocol-specific string.
virtual void SendMapData(const cMap &a_Map, int a_DataStartX, int a_DataStartY) override
virtual void SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int a_FadeOutTicks) override
virtual int GetProtocolParticleID(const AString &a_ParticleName) const
The 1.8 protocol use a particle id instead of a string.
virtual AString GetAuthServerID(void) override
Returns the ServerID used for authentication through session.minecraft.net.
virtual bool ReadItem(cByteBuffer &a_ByteBuffer, cItem &a_Item, size_t a_KeepRemainingBytes=0) const
Reads an item out of the received data, sets a_Item to the values read.
virtual void HandlePacketPlayerPosLook(cByteBuffer &a_ByteBuffer)
static eBlockFace FaceIntToBlockFace(Int32 a_FaceInt)
Converts the BlockFace received by the protocol into eBlockFace constants.
virtual void HandlePacketBlockDig(cByteBuffer &a_ByteBuffer)
virtual void HandlePacketPlayerLook(cByteBuffer &a_ByteBuffer)
CircularBufferCompressor m_Compressor
virtual void SendEntityAnimation(const cEntity &a_Entity, EntityAnimation a_Animation) override
virtual void SendKeepAlive(UInt32 a_PingID) override
virtual Version GetProtocolVersion() const override
Returns the protocol version.
virtual void SendCameraSetTo(const cEntity &a_Entity) override
virtual signed char GetProtocolEntityStatus(EntityAnimation a_Animation) const
Converts an animation into an ID suitable for use with the Entity Status packet.
virtual void HandlePacketWindowClick(cByteBuffer &a_ByteBuffer)
virtual void SendWindowOpen(const cWindow &a_Window) override
virtual void SendHideTitle(void) override
static void CompressPacket(CircularBufferCompressor &a_Packet, ContiguousByteBuffer &a_Compressed)
Compress the packet.
virtual void SendPlayerSpawn(const cPlayer &a_Player) override
cAesCfb128Encryptor m_Encryptor
virtual void SendPlayerListUpdateDisplayName(const cPlayer &a_Player, const AString &a_CustomName) override
virtual void SendBossBarUpdateFlags(UInt32 a_UniqueID, bool a_DarkenSky, bool a_PlayEndMusic, bool a_CreateFog) override
virtual void DataReceived(cByteBuffer &a_Buffer, ContiguousByteBuffer &a_Data) override
Called by cClientHandle to process data, when the client sends some.
virtual void SendAttachEntity(const cEntity &a_Entity, const cEntity &a_Vehicle) override
virtual void SendSpawnEntity(const cEntity &a_Entity) override
virtual void HandlePacketSteerVehicle(cByteBuffer &a_ByteBuffer)
virtual void SendEntityLook(const cEntity &a_Entity) override
virtual void SendPacket(cPacketizer &a_Packet) override
Sends the packet to the client.
CircularBufferExtractor m_Extractor
virtual void SendSpawnMob(const cMonster &a_Mob) override
virtual void SendThunderbolt(Vector3i a_BlockPos) override
virtual void HandlePacketClientStatus(cByteBuffer &a_ByteBuffer)
virtual void SendStatistics(const StatisticsManager &a_Manager) override
virtual void HandlePacketSlotSelect(cByteBuffer &a_ByteBuffer)
virtual void SendChatRaw(const AString &a_MessageRaw, eChatType a_Type) override
virtual void SendEditSign(Vector3i a_BlockPos) override
Request the client to open up the sign editor for the sign (1.6+)
virtual void HandlePacketAnimation(cByteBuffer &a_ByteBuffer)
virtual bool HandlePacket(cByteBuffer &a_ByteBuffer, UInt32 a_PacketType)
Reads and handles the packet.
virtual void SendWeather(eWeather a_Weather) override
virtual void SendLeashEntity(const cEntity &a_Entity, const cEntity &a_EntityLeashedTo) override
virtual void SendPaintingSpawn(const cPainting &a_Painting) override
virtual void SendUpdateSign(Vector3i a_BlockPos, const AString &a_Line1, const AString &a_Line2, const AString &a_Line3, const AString &a_Line4) override
virtual void HandlePacketTabComplete(cByteBuffer &a_ByteBuffer)
virtual void SendEntityEquipment(const cEntity &a_Entity, short a_SlotNum, const cItem &a_Item) override
virtual void HandlePacketSpectate(cByteBuffer &a_ByteBuffer)
virtual void SendChunkData(ContiguousByteBufferView a_ChunkData) override
Class that manages the statistics and achievements of a single player.