17 #include "../ByteBuffer.h" 19 #include "../mbedTLS++/AesCfb128Decryptor.h" 20 #include "../mbedTLS++/AesCfb128Encryptor.h" 36 virtual void DataReceived(
const char * a_Data,
size_t a_Size)
override;
40 virtual void SendBlockAction (
int a_BlockX,
int a_BlockY,
int a_BlockZ,
char a_Byte1,
char a_Byte2,
BLOCKTYPE a_BlockType)
override;
41 virtual void SendBlockBreakAnim (
UInt32 a_EntityID,
int a_BlockX,
int a_BlockY,
int a_BlockZ,
char a_Stage)
override;
53 virtual void SendEditSign (
int a_BlockX,
int a_BlockY,
int a_BlockZ)
override;
54 virtual void SendEntityEffect (
const cEntity & a_Entity,
int a_EffectID,
int a_Amplifier,
int a_Duration)
override;
64 virtual void SendExplosion (
double a_BlockX,
double a_BlockY,
double a_BlockZ,
float a_Radius,
const cVector3iArray & a_BlocksAffected,
const Vector3d & a_PlayerMotion)
override;
74 virtual void SendMapData (
const cMap & a_Map,
int a_DataStartX,
int a_DataStartY)
override;
79 virtual void 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)
override;
94 virtual void SendSoundEffect (
const AString & a_SoundName,
double a_X,
double a_Y,
double a_Z,
float a_Volume,
float a_Pitch)
override;
112 virtual void SendThunderbolt (
int a_BlockX,
int a_BlockY,
int a_BlockZ)
override;
113 virtual void SendTitleTimes (
int a_FadeInTicks,
int a_DisplayTicks,
int a_FadeOutTicks)
override;
119 virtual void SendUseBed (
const cEntity & a_Entity,
int a_BlockX,
int a_BlockY,
int a_BlockZ)
override;
137 static void FixItemFramePositions(
int a_ObjectData,
double & a_PosX,
double & a_PosZ,
double & a_Yaw);
212 virtual void SendData(
const char * a_Data,
size_t a_Size)
override;
void HandlePacketWindowClose(cByteBuffer &a_ByteBuffer)
virtual void 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) override
void HandlePacketCreativeInventoryAction(cByteBuffer &a_ByteBuffer)
virtual void SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerializer &a_Serializer) override
virtual void SendUnleashEntity(const cEntity &a_Entity) override
void HandlePacketUseEntity(cByteBuffer &a_ByteBuffer)
virtual void SendRemoveEntityEffect(const cEntity &a_Entity, int a_EffectID) override
virtual void SendTeleportEntity(const cEntity &a_Entity) override
eDimension
Dimension of a world.
void HandlePacketClientStatus(cByteBuffer &a_ByteBuffer)
virtual void SendHideTitle(void) override
void HandlePacketStatusRequest(cByteBuffer &a_ByteBuffer)
void HandlePacketPlayerPosLook(cByteBuffer &a_ByteBuffer)
virtual void SendSoundEffect(const AString &a_SoundName, double a_X, double a_Y, double a_Z, float a_Volume, float a_Pitch) override
virtual void SendPlayerPosition(void) override
virtual void SendEntityVelocity(const cEntity &a_Entity) override
virtual void SendBlockAction(int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType) override
virtual void SendEntityRelMoveLook(const cEntity &a_Entity, char a_RelX, char a_RelY, char a_RelZ) override
virtual void SendExperience(void) override
Class that manages the statistics and achievements of a single player.
cFile m_CommLogFile
The logfile where the comm is logged, when g_ShouldLogComm is true.
unsigned char BLOCKTYPE
The datatype used by blockdata.
void HandlePacketLoginStart(cByteBuffer &a_ByteBuffer)
virtual void SendPlayerSpawn(const cPlayer &a_Player) override
virtual void SendSpawnMob(const cMonster &a_Mob) override
virtual AString GetAuthServerID(void) override
Returns the ServerID used for authentication through session.minecraft.net.
Encapsulates an in-game world map.
virtual void SendEntityEffect(const cEntity &a_Entity, int a_EffectID, int a_Amplifier, int a_Duration) override
virtual void SendScoreUpdate(const AString &a_Objective, const AString &a_Player, cObjective::Score a_Score, Byte a_Mode) override
virtual void SendResetTitle(void) override
void HandlePacketStatusPing(cByteBuffer &a_ByteBuffer)
virtual void SendBlockChange(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) override
virtual void SendSpawnVehicle(const cEntity &a_Vehicle, char a_VehicleType, char a_VehicleSubType) override
void HandlePacketTabComplete(cByteBuffer &a_ByteBuffer)
virtual bool ReadItem(cByteBuffer &a_ByteBuffer, cItem &a_Item, size_t a_KeepRemainingBytes=0)
Reads an item out of the received data, sets a_Item to the values read.
void HandlePacketPlayerPos(cByteBuffer &a_ByteBuffer)
void SendCompass(const cWorld &a_World)
void HandlePacketAnimation(cByteBuffer &a_ByteBuffer)
virtual void SendSetRawTitle(const AString &a_Title) override
virtual void SendCollectEntity(const cEntity &a_Entity, const cPlayer &a_Player, int a_Count) override
virtual void SendSpawnFallingBlock(const cFallingBlock &a_FallingBlock) override
static int GetParticleID(const AString &a_ParticleName)
The 1.8 protocol use a particle id instead of a string.
unsigned char NIBBLETYPE
The datatype used by nibbledata (meta, light, skylight)
cAesCfb128Encryptor m_Encryptor
std::vector< Vector3i > cVector3iArray
void HandlePacketPlayer(cByteBuffer &a_ByteBuffer)
virtual void SendChat(const AString &a_Message, eChatType a_Type) override
virtual void SendBlockBreakAnim(UInt32 a_EntityID, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Stage) override
virtual void SendEntityProperties(const cEntity &a_Entity) override
void WriteEntityMetadata(cPacketizer &a_Pkt, const cEntity &a_Entity)
Writes the metadata for the specified entity, not including the terminating 0x7f. ...
void HandlePacketPlayerLook(cByteBuffer &a_ByteBuffer)
virtual void SendStatistics(const cStatManager &a_Manager) override
bool HandlePacket(cByteBuffer &a_ByteBuffer, UInt32 a_PacketType)
Reads and handles the packet.
virtual void SendDisplayObjective(const AString &a_Objective, cScoreboard::eDisplaySlot a_Display) override
virtual void SendPlayerListUpdateGameMode(const cPlayer &a_Player) override
void AddReceivedData(const char *a_Data, size_t a_Size)
Adds the received (unencrypted) data to m_ReceivedData, parses complete packets.
virtual void SendPlayerAbilities(void) override
virtual void SendDisconnect(const AString &a_Reason) override
virtual void SendWindowClose(const cWindow &a_Window) override
virtual void SendMapData(const cMap &a_Map, int a_DataStartX, int a_DataStartY) override
cAesCfb128Decryptor m_Decryptor
virtual void SendDetachEntity(const cEntity &a_Entity, const cEntity &a_PreviousVehicle) override
void WriteMobMetadata(cPacketizer &a_Pkt, const cMonster &a_Mob)
Writes the mob-specific metadata for the specified mob.
void HandlePacketPluginMessage(cByteBuffer &a_ByteBuffer)
virtual void SendPacket(cPacketizer &a_Packet) override
Sends the packet to the client.
UInt32 m_State
State of the protocol.
virtual void SendChatRaw(const AString &a_MessageRaw, eChatType a_Type) override
void HandlePacketBlockPlace(cByteBuffer &a_ByteBuffer)
void HandlePacketWindowClick(cByteBuffer &a_ByteBuffer)
virtual void SendAttachEntity(const cEntity &a_Entity, const cEntity &a_Vehicle) override
Sending stuff to clients (alphabetically sorted):
virtual void SendPickupSpawn(const cPickup &a_Pickup) override
std::vector< AString > AStringVector
virtual void SendGameMode(eGameMode a_GameMode) override
virtual UInt32 GetPacketID(ePacketType a_Packet) override
Nobody inherits 1.8, so it doesn't use this method.
virtual void SendHealth(void) override
virtual void SendPlayerListAddPlayer(const cPlayer &a_Player) override
Container for a single chat message composed of multiple functional parts.
void HandleVanillaPluginMessage(cByteBuffer &a_ByteBuffer, const AString &a_Channel)
Parses Vanilla plugin messages into specific ClientHandle calls.
void ParseItemMetadata(cItem &a_Item, const AString &a_Metadata)
Parses item metadata as read by ReadItem(), into the item enchantments.
Encrypts data using the AES / CFB (128) algorithm.
virtual void 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) override
virtual void SendEntityRelMove(const cEntity &a_Entity, char a_RelX, char a_RelY, char a_RelZ) override
virtual void SendSetTitle(const cCompositeChat &a_Title) override
virtual void SendUseBed(const cEntity &a_Entity, int a_BlockX, int a_BlockY, int a_BlockZ) override
Serializes one chunk's data to (possibly multiple) protocol versions.
void HandlePacketChatMessage(cByteBuffer &a_ByteBuffer)
virtual void SendWeather(eWeather a_Weather) override
virtual void SendKeepAlive(UInt32 a_PingID) override
void HandlePacketEntityAction(cByteBuffer &a_ByteBuffer)
virtual void SendWindowProperty(const cWindow &a_Window, short a_Property, short a_Value) override
virtual void SendWindowOpen(const cWindow &a_Window) override
void WriteItem(cPacketizer &a_Pkt, const cItem &a_Item)
Writes the item data into a packet.
void HandlePacketSpectate(cByteBuffer &a_ByteBuffer)
virtual void SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle) override
virtual void SendHeldItemChange(int a_ItemIndex) override
void WriteBlockEntity(cPacketizer &a_Pkt, const cBlockEntity &a_BlockEntity)
Writes the block entity data for the specified block entity into the packet.
virtual void SendBlockChanges(int a_ChunkX, int a_ChunkZ, const sSetBlockVector &a_Changes) override
An object that can store incoming bytes and lets its clients read the bytes sequentially The bytes ar...
virtual void SendEntityMetadata(const cEntity &a_Entity) override
virtual void SendLeashEntity(const cEntity &a_Entity, const cEntity &a_EntityLeashedTo) override
virtual void SendTabCompletionResults(const AStringVector &a_Results) override
virtual void SendEntityEquipment(const cEntity &a_Entity, short a_SlotNum, const cItem &a_Item) override
eBlockFace FaceIntToBlockFace(Int8 a_FaceInt)
Converts the BlockFace received by the protocol into eBlockFace constants.
cByteBuffer m_ReceivedData
Buffer for the received data.
void HandlePacketLoginEncryptionResponse(cByteBuffer &a_ByteBuffer)
void HandlePacketKeepAlive(cByteBuffer &a_ByteBuffer)
virtual void SendSetRawSubTitle(const AString &a_SubTitle) override
virtual void SendScoreboardObjective(const AString &a_Name, const AString &a_DisplayName, Byte a_Mode) override
void HandlePacketSlotSelect(cByteBuffer &a_ByteBuffer)
Decrypts data using the AES / CFB 128 algorithm.
eBlockFace
Block face constants, used in PlayerDigging and PlayerBlockPlacement packets and bbox collision calc...
virtual void SendPluginMessage(const AString &a_Channel, const AString &a_Message) override
cProtocol_1_8_0(cClientHandle *a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State)
void HandlePacketEnchantItem(cByteBuffer &a_ByteBuffer)
void HandlePacketClientSettings(cByteBuffer &a_ByteBuffer)
virtual void SendSetSubTitle(const cCompositeChat &a_SubTitle) override
virtual void SendEntityLook(const cEntity &a_Entity) override
virtual void SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int a_FadeOutTicks) override
Composes an individual packet in the protocol's m_OutPacketBuffer; sends it just before being destruc...
void StartEncryption(const Byte *a_Key)
virtual void SendLogin(const cPlayer &a_Player, const cWorld &a_World) override
virtual void SendSpawnObject(const cEntity &a_Entity, char a_ObjectType, int a_ObjectData, Byte a_Yaw, Byte a_Pitch) override
virtual void SendWholeInventory(const cWindow &a_Window) override
virtual void SendPlayerListUpdateDisplayName(const cPlayer &a_Player, const AString &a_CustomName) override
static void FixItemFramePositions(int a_ObjectData, double &a_PosX, double &a_PosZ, double &a_Yaw)
Minecraft 1.8 use other locations to spawn the item frame.
virtual void SendExperienceOrb(const cExpOrb &a_ExpOrb) override
virtual void SendDestroyEntity(const cEntity &a_Entity) override
virtual void SendLoginSuccess(void) override
virtual void SendPlayerListUpdatePing(const cPlayer &a_Player) override
virtual void SendPlayerMaxSpeed(void) override
Informs the client of the maximum player speed (1.6.1+)
virtual void SendThunderbolt(int a_BlockX, int a_BlockY, int a_BlockZ) override
virtual void SendEntityStatus(const cEntity &a_Entity, char a_Status) override
virtual void SendInventorySlot(char a_WindowID, short a_SlotNum, const cItem &a_Item) override
virtual void SendUpdateBlockEntity(cBlockEntity &a_BlockEntity) override
virtual void DataReceived(const char *a_Data, size_t a_Size) override
Called when client sends some data:
virtual void SendData(const char *a_Data, size_t a_Size) override
Sends the data to the client, encrypting them if needed.
void HandlePacketBlockDig(cByteBuffer &a_ByteBuffer)
virtual void SendSoundParticleEffect(const EffectID a_EffectID, int a_SrcX, int a_SrcY, int a_SrcZ, int a_Data) override
void HandlePacketUpdateSign(cByteBuffer &a_ByteBuffer)
virtual void SendEntityAnimation(const cEntity &a_Entity, char a_Animation) override
void WriteEntityProperties(cPacketizer &a_Pkt, const cEntity &a_Entity)
Writes the entity properties for the specified entity, including the Count field. ...
virtual void SendPaintingSpawn(const cPainting &a_Painting) override
virtual void SendEntityHeadLook(const cEntity &a_Entity) override
virtual void SendCameraSetTo(const cEntity &a_Entity) override
ePacketType
Logical types of outgoing packets.
virtual void SendUnloadChunk(int a_ChunkX, int a_ChunkZ) override
virtual void SendExplosion(double a_BlockX, double a_BlockY, double a_BlockZ, float a_Radius, const cVector3iArray &a_BlocksAffected, const Vector3d &a_PlayerMotion) override
virtual void SendPlayerListRemovePlayer(const cPlayer &a_Player) override
virtual void SendRespawn(eDimension a_Dimension) override
static bool CompressPacket(const AString &a_Packet, AString &a_Compressed)
Compress the packet.
std::vector< sSetBlock > sSetBlockVector
virtual void SendEditSign(int a_BlockX, int a_BlockY, int a_BlockZ) override
Request the client to open up the sign editor for the sign (1.6+)
virtual void SendPlayerMoveLook(void) override
void HandlePacketPlayerAbilities(cByteBuffer &a_ByteBuffer)
void HandlePacketSteerVehicle(cByteBuffer &a_ByteBuffer)