4 #include "../ByteBuffer.h" 11 #define MCS_CLIENT_VERSIONS "1.8.x, 1.9.x, 1.10.x, 1.11.x, 1.12.x, 1.13" 12 #define MCS_PROTOCOL_VERSIONS "47, 107, 108, 109, 110, 210, 315, 316, 335, 338, 340, 393" 13 #define MCS_LATEST_PROTOCOL_VERSION 393 50 virtual void DataReceived(
const char * a_Data,
size_t a_Size)
override;
54 virtual void SendBlockAction (
int a_BlockX,
int a_BlockY,
int a_BlockZ,
char a_Byte1,
char a_Byte2,
BLOCKTYPE a_BlockType)
override;
55 virtual void SendBlockBreakAnim (
UInt32 a_EntityID,
int a_BlockX,
int a_BlockY,
int a_BlockZ,
char a_Stage)
override;
67 virtual void SendEditSign (
int a_BlockX,
int a_BlockY,
int a_BlockZ)
override;
68 virtual void SendEntityEffect (
const cEntity & a_Entity,
int a_EffectID,
int a_Amplifier,
int a_Duration)
override;
78 virtual void SendExplosion (
double a_BlockX,
double a_BlockY,
double a_BlockZ,
float a_Radius,
const cVector3iArray & a_BlocksAffected,
const Vector3d & a_PlayerMotion)
override;
88 virtual void SendMapData (
const cMap & a_Map,
int a_DataStartX,
int a_DataStartY)
override;
89 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;
117 virtual void SendSoundEffect (
const AString & a_SoundName,
double a_X,
double a_Y,
double a_Z,
float a_Volume,
float a_Pitch)
override;
126 virtual void SendThunderbolt (
int a_BlockX,
int a_BlockY,
int a_BlockZ)
override;
127 virtual void SendTitleTimes (
int a_FadeInTicks,
int a_DisplayTicks,
int a_FadeOutTicks)
override;
133 virtual void SendUseBed (
const cEntity & a_Entity,
int a_BlockX,
int a_BlockY,
int a_BlockZ)
override;
142 virtual void SendData(
const char * a_Data,
size_t a_Size)
override;
virtual void SendHeldItemChange(int a_ItemIndex) override
virtual void SendPlayerListUpdateGameMode(const cPlayer &a_Player) override
cProtocolRecognizer(cClientHandle *a_Client)
virtual void SendSpawnFallingBlock(const cFallingBlock &a_FallingBlock) override
virtual void SendPlayerListRemovePlayer(const cPlayer &a_Player) override
virtual void SendPaintingSpawn(const cPainting &a_Painting) override
virtual void SendRemoveEntityEffect(const cEntity &a_Entity, int a_EffectID) override
eDimension
Dimension of a world.
virtual void SendPlayerListAddPlayer(const cPlayer &a_Player) override
virtual void SendSpawnMob(const cMonster &a_Mob) override
virtual void SendScoreboardObjective(const AString &a_Name, const AString &a_DisplayName, Byte a_Mode) override
virtual void SendHideTitle(void) override
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 SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle) override
Class that manages the statistics and achievements of a single player.
virtual void SendTeleportEntity(const cEntity &a_Entity) override
virtual void SendMapData(const cMap &a_Map, int a_DataStartX, int a_DataStartY) override
virtual void SendWeather(eWeather a_Weather) override
virtual void SendKeepAlive(UInt32 a_PingID) override
unsigned char BLOCKTYPE
The datatype used by blockdata.
virtual void SendPlayerAbilities(void) override
Encapsulates an in-game world map.
virtual void SendDetachEntity(const cEntity &a_Entity, const cEntity &a_PreviousVehicle) override
virtual void SendUseBed(const cEntity &a_Entity, int a_BlockX, int a_BlockY, int a_BlockZ) override
virtual void SendDisconnect(const AString &a_Reason) override
virtual void SendEntityHeadLook(const cEntity &a_Entity) override
virtual void SendEntityEquipment(const cEntity &a_Entity, short a_SlotNum, const cItem &a_Item) override
virtual void SendSpawnObject(const cEntity &a_Entity, char a_ObjectType, int a_ObjectData, Byte a_Yaw, Byte a_Pitch) override
cByteBuffer m_Buffer
Buffer for the incoming data until we recognize the protocol.
virtual void SendPacket(cPacketizer &a_Pkt) override
Sends a single packet contained within the cPacketizer class.
virtual void SendBlockBreakAnim(UInt32 a_EntityID, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Stage) override
virtual UInt32 GetPacketID(ePacketType a_PacketType) override
Returns the protocol-specific packet ID given the protocol-agnostic packet enum.
virtual void SendWindowClose(const cWindow &a_Window) override
virtual void SendInventorySlot(char a_WindowID, short a_SlotNum, const cItem &a_Item) override
bool TryRecognizeProtocol(void)
Tries to recognize protocol based on m_Buffer contents; returns true if recognized.
unsigned char NIBBLETYPE
The datatype used by nibbledata (meta, light, skylight)
virtual void SendEntityRelMove(const cEntity &a_Entity, char a_RelX, char a_RelY, char a_RelZ) override
std::vector< Vector3i > cVector3iArray
virtual void SendEntityLook(const cEntity &a_Entity) override
virtual void SendTabCompletionResults(const AStringVector &a_Results) override
virtual void SendSetRawTitle(const AString &a_Title) override
virtual void SendSetRawSubTitle(const AString &a_SubTitle) override
virtual void SendLeashEntity(const cEntity &a_Entity, const cEntity &a_EntityLeashedTo) override
virtual void SendStatistics(const cStatManager &a_Manager) override
virtual void SendEntityStatus(const cEntity &a_Entity, char a_Status) override
virtual void SendDisplayObjective(const AString &a_Objective, cScoreboard::eDisplaySlot a_Display) override
virtual void SendSetTitle(const cCompositeChat &a_Title) override
virtual void SendLoginSuccess(void) override
virtual void SendUpdateBlockEntity(cBlockEntity &a_BlockEntity) override
virtual void SendPlayerMoveLook(void) override
virtual void DataReceived(const char *a_Data, size_t a_Size) override
Called when client sends some data:
std::vector< AString > AStringVector
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
virtual void SendThunderbolt(int a_BlockX, int a_BlockY, int a_BlockZ) override
virtual void SendScoreUpdate(const AString &a_Objective, const AString &a_Player, cObjective::Score a_Score, Byte a_Mode) override
Container for a single chat message composed of multiple functional parts.
virtual void SendRespawn(eDimension a_Dimension) override
virtual void SendUnloadChunk(int a_ChunkX, int a_ChunkZ) override
virtual void SendExperienceOrb(const cExpOrb &a_ExpOrb) override
virtual void SendEntityProperties(const cEntity &a_Entity) override
virtual void SendWindowOpen(const cWindow &a_Window) override
virtual void SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerializer &a_Serializer) override
Serializes one chunk's data to (possibly multiple) protocol versions.
virtual ~cProtocolRecognizer() override
virtual void SendSoundParticleEffect(const EffectID a_EffectID, int a_SrcX, int a_SrcY, int a_SrcZ, int a_Data) override
bool m_InPingForUnrecognizedVersion
Is a server list ping for an unrecognized version currently occuring?
bool TryRecognizeLengthedProtocol(UInt32 a_PacketLengthRemaining)
Tries to recognize a protocol in the lengthed family (1.7+), based on m_Buffer; returns true if recog...
virtual void SendBlockAction(int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType) override
An object that can store incoming bytes and lets its clients read the bytes sequentially The bytes ar...
virtual void SendSetSubTitle(const cCompositeChat &a_SubTitle) override
virtual AString GetAuthServerID(void) override
Returns the ServerID used for authentication through session.minecraft.net.
virtual void SendChatRaw(const AString &a_MessageRaw, eChatType a_Type) override
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 SendPluginMessage(const AString &a_Channel, const AString &a_Message) override
virtual void SendPlayerListUpdateDisplayName(const cPlayer &a_Player, const AString &a_CustomName) override
virtual void SendLogin(const cPlayer &a_Player, const cWorld &a_World) override
void HandlePacketStatusRequest()
virtual void SendPlayerListUpdatePing(const cPlayer &a_Player) override
virtual void SendGameMode(eGameMode a_GameMode) override
virtual void SendBlockChange(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) override
virtual void SendEntityMetadata(const cEntity &a_Entity) override
virtual void SendExperience(void) override
Composes an individual packet in the protocol's m_OutPacketBuffer; sends it just before being destruc...
virtual void SendPlayerSpawn(const cPlayer &a_Player) override
virtual void SendPlayerPosition(void) override
virtual void SendHealth(void) override
virtual void SendDestroyEntity(const cEntity &a_Entity) override
virtual void SendWindowProperty(const cWindow &a_Window, short a_Property, short a_Value) override
virtual void SendEntityEffect(const cEntity &a_Entity, int a_EffectID, int a_Amplifier, int a_Duration) override
virtual void SendPickupSpawn(const cPickup &a_Pickup) override
static AString GetVersionTextFromInt(int a_ProtocolVersion)
Translates protocol version number into protocol version text: 49 -> "1.4.4".
virtual void SendUnleashEntity(const cEntity &a_Entity) 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 SendAttachEntity(const cEntity &a_Entity, const cEntity &a_Vehicle) override
Sending stuff to clients (alphabetically sorted):
virtual void SendSpawnVehicle(const cEntity &a_Vehicle, char a_VehicleType, char a_VehicleSubType) override
virtual void SendEntityRelMoveLook(const cEntity &a_Entity, char a_RelX, char a_RelY, char a_RelZ) override
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 SendData(const char *a_Data, size_t a_Size) override
A generic data-sending routine, all outgoing packet data needs to be routed through this so that desc...
void HandlePacketStatusPing()
virtual void SendResetTitle(void) override
virtual void SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int a_FadeOutTicks) override
virtual void SendWholeInventory(const cWindow &a_Window) override
std::unique_ptr< cProtocol > m_Protocol
The recognized protocol.
ePacketType
Logical types of outgoing packets.
virtual void SendCameraSetTo(const cEntity &a_Entity) override
std::vector< sSetBlock > sSetBlockVector
virtual void SendBlockChanges(int a_ChunkX, int a_ChunkZ, const sSetBlockVector &a_Changes) override
virtual void SendCollectEntity(const cEntity &a_Entity, const cPlayer &a_Player, int a_Count) override
virtual void SendPlayerMaxSpeed(void) override
Informs the client of the maximum player speed (1.6.1+)
Meta-protocol that recognizes multiple protocol versions, creates the specific protocol version insta...
virtual void SendEntityAnimation(const cEntity &a_Entity, char a_Animation) override
virtual void SendChat(const AString &a_Message, eChatType a_Type) override
virtual void SendEntityVelocity(const cEntity &a_Entity) override