Cuberite
A lightweight, fast and extensible game server for Minecraft
Protocol.h
Go to the documentation of this file.
1 
2 // Protocol.h
3 
4 // Interfaces to the cProtocol class representing the generic interface that a protocol
5 // parser and serializer must implement
6 
7 
8 
9 
10 
11 #pragma once
12 
13 #include "../Defines.h"
14 #include "../Scoreboard.h"
15 #include "../ByteBuffer.h"
16 #include "../EffectID.h"
17 #include "../World.h"
18 
19 
20 
21 
22 
23 class cMap;
24 class cExpOrb;
25 class cPlayer;
26 class cEntity;
27 class cWindow;
28 class cPainting;
29 class cWorld;
30 class cMonster;
31 class cCompositeChat;
32 class cPacketizer;
33 
34 struct StatisticsManager;
35 
36 
37 
38 
39 
40 class cProtocol
41 {
42 public:
43 
44  cProtocol(cClientHandle * a_Client) :
45  m_Client(a_Client),
47  m_OutPacketLenBuffer(20) // 20 bytes is more than enough for one VarInt
48  {
49  }
50 
51  virtual ~cProtocol() {}
52 
57  {
135  };
136 
137  enum class EntityMetadata
138  {
139  EntityFlags,
140  EntityAir,
143  EntitySilent,
145  EntityPose,
146 
147  PotionThrown,
148 
150 
157 
158  ArrowFlags,
161 
165  BoatType,
169 
172 
174 
175  FireworkInfo,
178 
181 
182  ItemItem,
183 
185  LivingHealth,
189 
191  PlayerScore,
194 
202 
204 
205  BatHanging,
206 
208 
211 
212  HorseVariant,
213  HorseArmour,
214 
216 
219  LlamaVariant,
220 
221  PigHasSaddle,
223 
224  RabbitType,
225 
227 
228  SheepFlags,
229 
232 
234 
236 
237  OcelotType,
238 
240  WolfBegging,
242 
244 
246 
250 
251  BlazeOnFire,
252 
253  CreeperState,
256 
259 
260  IllagerFlags,
262 
263  VexFlags,
264 
266 
268 
271 
276 
277  ZombieIsBaby,
280 
283 
286 
288 
290 
291  SlimeSize,
292 
299 
302 
304 
306 
308  };
309 
311  {
312  Byte,
313  VarInt,
314  Float,
315  String,
316  Chat,
317  OptChat,
318  Item,
319  Boolean,
320  Rotation,
321  Position,
322  OptPosition,
323  Direction,
324  OptUUID,
325  OptBlockID,
326  NBT,
327  Particle,
328  VillagerData,
329  OptVarInt,
330  Pose
331  };
332 
334  enum class Version
335  {
336  v1_8_0 = 47,
337  v1_9_0 = 107,
338  v1_9_1 = 108,
339  v1_9_2 = 109,
340  v1_9_4 = 110,
341  v1_10_0 = 210,
342  v1_11_0 = 315,
343  v1_11_1 = 316,
344  v1_12 = 335,
345  v1_12_1 = 338,
346  v1_12_2 = 340,
347  v1_13 = 393,
348  v1_13_1 = 401,
349  v1_13_2 = 404,
350  v1_14 = 477,
351  v1_14_1 = 480,
352  v1_14_2 = 485,
353  v1_14_3 = 490,
354  v1_14_4 = 498
355  };
356 
357  enum State
358  {
359  Status = 1,
360  Login = 2,
361  Game = 3,
362  };
363 
366  virtual void DataReceived(cByteBuffer & a_Buffer, ContiguousByteBuffer & a_Data) = 0;
367 
371  virtual void DataPrepared(ContiguousByteBuffer & a_Data) = 0;
372 
373  // Sending stuff to clients (alphabetically sorted):
374  virtual void SendAttachEntity (const cEntity & a_Entity, const cEntity & a_Vehicle) = 0;
375  virtual void SendBlockAction (Vector3i a_BlockPos, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType) = 0;
376  virtual void SendBlockBreakAnim (UInt32 a_EntityID, Vector3i a_BlockPos, char a_Stage) = 0;
377  virtual void SendBlockChange (Vector3i a_BlockPos, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) = 0;
378  virtual void SendBlockChanges (int a_ChunkX, int a_ChunkZ, const sSetBlockVector & a_Changes) = 0;
379  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) = 0;
380  virtual void SendBossBarRemove (UInt32 a_UniqueID) = 0;
381  virtual void SendBossBarUpdateHealth (UInt32 a_UniqueID, float a_FractionFilled) = 0;
382  virtual void SendBossBarUpdateFlags (UInt32 a_UniqueID, bool a_DarkenSky, bool a_PlayEndMusic, bool a_CreateFog) = 0;
383  virtual void SendBossBarUpdateStyle (UInt32 a_UniqueID, BossBarColor a_Color, BossBarDivisionType a_DivisionType) = 0;
384  virtual void SendBossBarUpdateTitle (UInt32 a_UniqueID, const cCompositeChat & a_Title) = 0;
385  virtual void SendCameraSetTo (const cEntity & a_Entity) = 0;
386  virtual void SendChat (const AString & a_Message, eChatType a_Type) = 0;
387  virtual void SendChat (const cCompositeChat & a_Message, eChatType a_Type, bool a_ShouldUseChatPrefixes) = 0;
388  virtual void SendChatRaw (const AString & a_MessageRaw, eChatType a_Type) = 0;
389  virtual void SendChunkData (ContiguousByteBufferView a_ChunkData) = 0;
390  virtual void SendCollectEntity (const cEntity & a_Collected, const cEntity & a_Collector, unsigned a_Count) = 0;
391  virtual void SendDestroyEntity (const cEntity & a_Entity) = 0;
392  virtual void SendDetachEntity (const cEntity & a_Entity, const cEntity & a_PreviousVehicle) = 0;
393  virtual void SendDisconnect (const AString & a_Reason) = 0;
394  virtual void SendEditSign (Vector3i a_BlockPos) = 0;
395  virtual void SendEntityEffect (const cEntity & a_Entity, int a_EffectID, int a_Amplifier, int a_Duration) = 0;
396  virtual void SendEntityAnimation (const cEntity & a_Entity, EntityAnimation a_Animation) = 0;
397  virtual void SendEntityEquipment (const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item) = 0;
398  virtual void SendEntityHeadLook (const cEntity & a_Entity) = 0;
399  virtual void SendEntityLook (const cEntity & a_Entity) = 0;
400  virtual void SendEntityMetadata (const cEntity & a_Entity) = 0;
401  virtual void SendEntityPosition (const cEntity & a_Entity) = 0;
402  virtual void SendEntityProperties (const cEntity & a_Entity) = 0;
403  virtual void SendEntityVelocity (const cEntity & a_Entity) = 0;
404  virtual void SendExplosion (Vector3f a_Position, float a_Power) = 0;
405  virtual void SendGameMode (eGameMode a_GameMode) = 0;
406  virtual void SendHealth (void) = 0;
407  virtual void SendHeldItemChange (int a_ItemIndex) = 0;
408  virtual void SendHideTitle (void) = 0;
409  virtual void SendInventorySlot (char a_WindowID, short a_SlotNum, const cItem & a_Item) = 0;
410  virtual void SendKeepAlive (UInt32 a_PingID) = 0;
411  virtual void SendLeashEntity (const cEntity & a_Entity, const cEntity & a_EntityLeashedTo) = 0;
412  virtual void SendLogin (const cPlayer & a_Player, const cWorld & a_World) = 0;
413  virtual void SendLoginSuccess (void) = 0;
414  virtual void SendMapData (const cMap & a_Map, int a_DataStartX, int a_DataStartY) = 0;
415  virtual void SendPaintingSpawn (const cPainting & a_Painting) = 0;
416  virtual void SendPlayerAbilities (void) = 0;
417  virtual void SendParticleEffect (const AString & a_SoundName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount) = 0;
418  virtual void SendParticleEffect (const AString & a_SoundName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array<int, 2> a_Data) = 0;
419  virtual void SendPlayerListAddPlayer (const cPlayer & a_Player) = 0;
420  virtual void SendPlayerListHeaderFooter (const cCompositeChat & a_Header, const cCompositeChat & a_Footer) = 0;
421  virtual void SendPlayerListRemovePlayer (const cPlayer & a_Player) = 0;
422  virtual void SendPlayerListUpdateGameMode (const cPlayer & a_Player) = 0;
423  virtual void SendPlayerListUpdatePing () = 0;
424  virtual void SendPlayerListUpdateDisplayName(const cPlayer & a_Player, const AString & a_CustomName) = 0;
425  virtual void SendPlayerMoveLook (Vector3d a_Pos, float a_Yaw, float a_Pitch, bool a_IsRelative) = 0;
426  virtual void SendPlayerMoveLook (void) = 0;
427  virtual void SendPlayerPermissionLevel (void) = 0;
428  virtual void SendPlayerPosition (void) = 0;
429  virtual void SendPlayerSpawn (const cPlayer & a_Player) = 0;
430  virtual void SendPluginMessage (const AString & a_Channel, ContiguousByteBufferView a_Message) = 0;
431  virtual void SendRemoveEntityEffect (const cEntity & a_Entity, int a_EffectID) = 0;
432  virtual void SendResetTitle (void) = 0;
433  virtual void SendResourcePack (const AString & a_ResourcePackUrl) = 0;
434  virtual void SendRespawn (eDimension a_Dimension) = 0;
435  virtual void SendExperience (void) = 0;
436  virtual void SendExperienceOrb (const cExpOrb & a_ExpOrb) = 0;
437  virtual void SendScoreboardObjective (const AString & a_Name, const AString & a_DisplayName, Byte a_Mode) = 0;
438  virtual void SendScoreUpdate (const AString & a_Objective, const AString & a_Player, cObjective::Score a_Score, Byte a_Mode) = 0;
439  virtual void SendDisplayObjective (const AString & a_Objective, cScoreboard::eDisplaySlot a_Display) = 0;
440  virtual void SendSetSubTitle (const cCompositeChat & a_SubTitle) = 0;
441  virtual void SendSetRawSubTitle (const AString & a_SubTitle) = 0;
442  virtual void SendSetTitle (const cCompositeChat & a_Title) = 0;
443  virtual void SendSetRawTitle (const AString & a_Title) = 0;
444  virtual void SendSoundEffect (const AString & a_SoundName, Vector3d a_Origin, float a_Volume, float a_Pitch) = 0;
445  virtual void SendSoundParticleEffect (const EffectID a_EffectID, Vector3i a_Origin, int a_Data) = 0;
446  virtual void SendSpawnEntity (const cEntity & a_Entity) = 0;
447  virtual void SendSpawnMob (const cMonster & a_Mob) = 0;
448  virtual void SendStatistics (const StatisticsManager & a_Manager) = 0;
449  virtual void SendTabCompletionResults (const AStringVector & a_Results) = 0;
450  virtual void SendThunderbolt (Vector3i a_Origin) = 0;
451  virtual void SendTitleTimes (int a_FadeInTicks, int a_DisplayTicks, int a_FadeOutTicks) = 0;
452  virtual void SendTimeUpdate (cTickTimeLong a_WorldAge, cTickTimeLong a_WorldDate, bool a_DoDaylightCycle) = 0;
453  virtual void SendUnleashEntity (const cEntity & a_Entity) = 0;
454  virtual void SendUnloadChunk (int a_ChunkX, int a_ChunkZ) = 0;
455  virtual void SendUpdateBlockEntity (cBlockEntity & a_BlockEntity) = 0;
456  virtual void SendUpdateSign (Vector3i a_BlockPos, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) = 0;
457  virtual void SendUnlockRecipe (UInt32 a_RecipeID) = 0;
458  virtual void SendInitRecipes (UInt32 a_RecipeID) = 0;
459  virtual void SendWeather (eWeather a_Weather) = 0;
460  virtual void SendWholeInventory (const cWindow & a_Window) = 0;
461  virtual void SendWindowClose (const cWindow & a_Window) = 0;
462  virtual void SendWindowOpen (const cWindow & a_Window) = 0;
463  virtual void SendWindowProperty (const cWindow & a_Window, size_t a_Property, short a_Value) = 0;
464 
466  virtual AString GetAuthServerID(void) = 0;
467 
468 protected:
469 
470  friend class cPacketizer;
471 
473 
478 
481 
484 
486  virtual UInt32 GetPacketID(ePacketType a_Packet) const = 0;
487 
489  virtual Version GetProtocolVersion() const = 0;
490 
493  virtual void SendPacket(cPacketizer & a_Packet) = 0;
494 } ;
std::vector< sSetBlock > sSetBlockVector
Definition: ChunkDef.h:441
unsigned char NIBBLETYPE
The datatype used by nibbledata (meta, light, skylight)
Definition: ChunkDef.h:44
unsigned char BLOCKTYPE
The datatype used by blockdata.
Definition: ChunkDef.h:41
eWeather
Definition: Defines.h:160
BossBarDivisionType
Definition: Defines.h:443
EntityAnimation
Definition: Defines.h:458
eChatType
Definition: Defines.h:149
eDimension
Dimension of a world.
Definition: Defines.h:231
eGameMode
Definition: Defines.h:125
BossBarColor
Definition: Defines.h:428
EffectID
Definition: EffectID.h:6
std::chrono::duration< signed long long int, cTickTime::period > cTickTimeLong
Definition: Globals.h:367
unsigned int UInt32
Definition: Globals.h:157
std::basic_string_view< std::byte > ContiguousByteBufferView
Definition: Globals.h:376
#define KiB
Allows arithmetic expressions like "32 KiB" (but consider using parenthesis around it,...
Definition: Globals.h:234
std::basic_string< std::byte > ContiguousByteBuffer
Definition: Globals.h:375
unsigned char Byte
Definition: Globals.h:161
std::vector< AString > AStringVector
Definition: StringUtils.h:12
std::string AString
Definition: StringUtils.h:11
An object that can store incoming bytes and lets its clients read the bytes sequentially The bytes ar...
Definition: ByteBuffer.h:32
Container for a single chat message composed of multiple functional parts.
Definition: CompositeChat.h:34
Definition: Entity.h:76
Definition: ExpOrb.h:13
Definition: Player.h:29
Definition: Item.h:37
Encapsulates an in-game world map.
Definition: Map.h:83
Composes an individual packet in the protocol's m_OutPacketBuffer; sends it just before being destruc...
Definition: Packetizer.h:60
virtual void SendThunderbolt(Vector3i a_Origin)=0
virtual Version GetProtocolVersion() const =0
Returns the current protocol's version, for handling status requests.
virtual void SendCameraSetTo(const cEntity &a_Entity)=0
virtual void SendWeather(eWeather a_Weather)=0
virtual void SendBlockChange(Vector3i a_BlockPos, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta)=0
virtual void SendParticleEffect(const AString &a_SoundName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount)=0
cCriticalSection m_CSPacket
Provides synchronization for sending the entire packet at once.
Definition: Protocol.h:477
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)=0
virtual void SendBlockAction(Vector3i a_BlockPos, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType)=0
cByteBuffer m_OutPacketLenBuffer
Buffer for composing packet length (so that each cPacketizer instance doesn't allocate a new cPacketB...
Definition: Protocol.h:483
virtual void SendPlayerAbilities(void)=0
virtual void SendHeldItemChange(int a_ItemIndex)=0
virtual void SendTimeUpdate(cTickTimeLong a_WorldAge, cTickTimeLong a_WorldDate, bool a_DoDaylightCycle)=0
virtual void SendChat(const cCompositeChat &a_Message, eChatType a_Type, bool a_ShouldUseChatPrefixes)=0
virtual void SendSetSubTitle(const cCompositeChat &a_SubTitle)=0
virtual void SendEditSign(Vector3i a_BlockPos)=0
Request the client to open up the sign editor for the sign (1.6+)
cProtocol(cClientHandle *a_Client)
Definition: Protocol.h:44
virtual void SendWindowProperty(const cWindow &a_Window, size_t a_Property, short a_Value)=0
virtual void SendSetRawSubTitle(const AString &a_SubTitle)=0
virtual void SendBlockBreakAnim(UInt32 a_EntityID, Vector3i a_BlockPos, char a_Stage)=0
virtual void SendWindowClose(const cWindow &a_Window)=0
virtual void SendWholeInventory(const cWindow &a_Window)=0
virtual void SendEntityAnimation(const cEntity &a_Entity, EntityAnimation a_Animation)=0
virtual void SendBossBarUpdateTitle(UInt32 a_UniqueID, const cCompositeChat &a_Title)=0
virtual void SendBlockChanges(int a_ChunkX, int a_ChunkZ, const sSetBlockVector &a_Changes)=0
virtual void SendStatistics(const StatisticsManager &a_Manager)=0
virtual void SendExperience(void)=0
virtual void SendBossBarUpdateStyle(UInt32 a_UniqueID, BossBarColor a_Color, BossBarDivisionType a_DivisionType)=0
virtual void DataReceived(cByteBuffer &a_Buffer, ContiguousByteBuffer &a_Data)=0
Called by cClientHandle to process data, when the client sends some.
virtual void SendSoundParticleEffect(const EffectID a_EffectID, Vector3i a_Origin, int a_Data)=0
virtual void SendPlayerPosition(void)=0
virtual void SendGameMode(eGameMode a_GameMode)=0
virtual void SendPlayerListHeaderFooter(const cCompositeChat &a_Header, const cCompositeChat &a_Footer)=0
virtual void SendPlayerMoveLook(void)=0
virtual void SendEntityMetadata(const cEntity &a_Entity)=0
EntityMetadataType
Definition: Protocol.h:311
virtual void SendPaintingSpawn(const cPainting &a_Painting)=0
virtual void SendUnloadChunk(int a_ChunkX, int a_ChunkZ)=0
virtual void SendChat(const AString &a_Message, eChatType a_Type)=0
virtual void SendTitleTimes(int a_FadeInTicks, int a_DisplayTicks, int a_FadeOutTicks)=0
virtual void SendSpawnEntity(const cEntity &a_Entity)=0
virtual void SendEntityPosition(const cEntity &a_Entity)=0
virtual void SendPacket(cPacketizer &a_Packet)=0
Sends a single packet contained within the cPacketizer class.
virtual void SendResetTitle(void)=0
virtual UInt32 GetPacketID(ePacketType a_Packet) const =0
Returns the protocol-specific packet ID given the protocol-agnostic packet enum.
ePacketType
Logical types of outgoing packets.
Definition: Protocol.h:57
@ pktUnloadChunk
Definition: Protocol.h:123
@ pktEntityHeadLook
Definition: Protocol.h:77
@ pktSoundEffect
Definition: Protocol.h:108
@ pktEntityRelMove
Definition: Protocol.h:81
@ pktSoundParticleEffect
Definition: Protocol.h:109
@ pktEntityVelocity
Definition: Protocol.h:84
@ pktEntityMeta
Definition: Protocol.h:79
@ pktAttachEntity
Definition: Protocol.h:58
@ pktBlockChanges
Definition: Protocol.h:62
@ pktDisplayObjective
Definition: Protocol.h:71
@ pktChatRaw
Definition: Protocol.h:65
@ pktUseBed
Definition: Protocol.h:129
@ pktMapData
Definition: Protocol.h:95
@ pktResourcePack
Definition: Protocol.h:104
@ pktSpawnGlobalEntity
Definition: Protocol.h:111
@ pktKeepAlive
Definition: Protocol.h:92
@ pktInventorySlot
Definition: Protocol.h:90
@ pktSpawnPainting
Definition: Protocol.h:114
@ pktParticleEffect
Definition: Protocol.h:96
@ pktSpawnOtherPlayer
Definition: Protocol.h:113
@ pktCameraSetTo
Definition: Protocol.h:64
@ pktEntityEffect
Definition: Protocol.h:75
@ pktTeleportEntity
Definition: Protocol.h:120
@ pktUpdateBlockEntity
Definition: Protocol.h:125
@ pktPluginMessage
Definition: Protocol.h:102
@ pktSpawnExperienceOrb
Definition: Protocol.h:110
@ pktSpawnObject
Definition: Protocol.h:107
@ pktPlayerMoveLook
Definition: Protocol.h:101
@ pktEditSign
Definition: Protocol.h:72
@ pktStatistics
Definition: Protocol.h:117
@ pktSpawnPosition
Definition: Protocol.h:115
@ pktTimeUpdate
Definition: Protocol.h:121
@ pktStatusResponse
Definition: Protocol.h:118
@ pktBossBar
Definition: Protocol.h:63
@ pktPlayerList
Definition: Protocol.h:99
@ pktEntityRelMoveLook
Definition: Protocol.h:82
@ pktJoinGame
Definition: Protocol.h:91
@ pktExplosion
Definition: Protocol.h:86
@ pktDifficulty
Definition: Protocol.h:68
@ pktDestroyEntity
Definition: Protocol.h:67
@ pktUpdateHealth
Definition: Protocol.h:126
@ pktUpdateScore
Definition: Protocol.h:127
@ pktHorseWindowOpen
Definition: Protocol.h:89
@ pktPingResponse
Definition: Protocol.h:97
@ pktEntityEquipment
Definition: Protocol.h:76
@ pktWindowOpen
Definition: Protocol.h:133
@ pktUpdateSign
Definition: Protocol.h:128
@ pktRespawn
Definition: Protocol.h:105
@ pktWindowProperty
Definition: Protocol.h:134
@ pktEntityProperties
Definition: Protocol.h:80
@ pktEntityStatus
Definition: Protocol.h:83
@ pktEncryptionRequest
Definition: Protocol.h:73
@ pktScoreboardObjective
Definition: Protocol.h:106
@ pktCollectEntity
Definition: Protocol.h:66
@ pktBlockChange
Definition: Protocol.h:61
@ pktRemoveEntityEffect
Definition: Protocol.h:103
@ pktUnlockRecipe
Definition: Protocol.h:124
@ pktBlockBreakAnim
Definition: Protocol.h:60
@ pktTabCompletionResults
Definition: Protocol.h:119
@ pktHeldItemChange
Definition: Protocol.h:88
@ pktEntityAnimation
Definition: Protocol.h:74
@ pktWindowClose
Definition: Protocol.h:132
@ pktSpawnMob
Definition: Protocol.h:112
@ pktStartCompression
Definition: Protocol.h:116
@ pktLoginSuccess
Definition: Protocol.h:94
@ pktPlayerListHeaderFooter
Definition: Protocol.h:100
@ pktEntityLook
Definition: Protocol.h:78
@ pktDisconnectDuringGame
Definition: Protocol.h:70
@ pktTitle
Definition: Protocol.h:122
@ pktPlayerAbilities
Definition: Protocol.h:98
@ pktWeather
Definition: Protocol.h:130
@ pktExperience
Definition: Protocol.h:85
@ pktGameMode
Definition: Protocol.h:87
@ pktLeashEntity
Definition: Protocol.h:93
@ pktDisconnectDuringLogin
Definition: Protocol.h:69
@ pktBlockAction
Definition: Protocol.h:59
@ pktWindowItems
Definition: Protocol.h:131
virtual void SendBossBarRemove(UInt32 a_UniqueID)=0
virtual void SendLeashEntity(const cEntity &a_Entity, const cEntity &a_EntityLeashedTo)=0
virtual void SendPlayerMoveLook(Vector3d a_Pos, float a_Yaw, float a_Pitch, bool a_IsRelative)=0
virtual void SendDetachEntity(const cEntity &a_Entity, const cEntity &a_PreviousVehicle)=0
virtual void SendWindowOpen(const cWindow &a_Window)=0
virtual void DataPrepared(ContiguousByteBuffer &a_Data)=0
Called by cClientHandle to finalise a buffer of prepared data before they are sent to the client.
virtual void SendExperienceOrb(const cExpOrb &a_ExpOrb)=0
virtual void SendDestroyEntity(const cEntity &a_Entity)=0
virtual void SendHealth(void)=0
Version
The protocol version number, received from the client in the Handshake packet.
Definition: Protocol.h:335
virtual void SendRespawn(eDimension a_Dimension)=0
virtual void SendEntityVelocity(const cEntity &a_Entity)=0
virtual void SendCollectEntity(const cEntity &a_Collected, const cEntity &a_Collector, unsigned a_Count)=0
virtual void SendSetTitle(const cCompositeChat &a_Title)=0
EntityMetadata
Definition: Protocol.h:138
virtual void SendChunkData(ContiguousByteBufferView a_ChunkData)=0
virtual void SendPlayerListAddPlayer(const cPlayer &a_Player)=0
virtual void SendPluginMessage(const AString &a_Channel, ContiguousByteBufferView a_Message)=0
virtual void SendMapData(const cMap &a_Map, int a_DataStartX, int a_DataStartY)=0
virtual void SendResourcePack(const AString &a_ResourcePackUrl)=0
virtual void SendUnlockRecipe(UInt32 a_RecipeID)=0
cByteBuffer m_OutPacketBuffer
Buffer for composing the outgoing packets, through cPacketizer.
Definition: Protocol.h:480
virtual void SendLogin(const cPlayer &a_Player, const cWorld &a_World)=0
virtual void SendChatRaw(const AString &a_MessageRaw, eChatType a_Type)=0
virtual void SendPlayerListRemovePlayer(const cPlayer &a_Player)=0
virtual void SendSoundEffect(const AString &a_SoundName, Vector3d a_Origin, float a_Volume, float a_Pitch)=0
virtual void SendUnleashEntity(const cEntity &a_Entity)=0
virtual void SendRemoveEntityEffect(const cEntity &a_Entity, int a_EffectID)=0
virtual void SendKeepAlive(UInt32 a_PingID)=0
virtual void SendDisplayObjective(const AString &a_Objective, cScoreboard::eDisplaySlot a_Display)=0
virtual void SendHideTitle(void)=0
virtual void SendInitRecipes(UInt32 a_RecipeID)=0
cClientHandle * m_Client
Definition: Protocol.h:472
virtual void SendParticleEffect(const AString &a_SoundName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array< int, 2 > a_Data)=0
virtual void SendPlayerPermissionLevel(void)=0
virtual void SendLoginSuccess(void)=0
virtual void SendExplosion(Vector3f a_Position, float a_Power)=0
virtual void SendEntityLook(const cEntity &a_Entity)=0
virtual void SendSpawnMob(const cMonster &a_Mob)=0
virtual void SendEntityEffect(const cEntity &a_Entity, int a_EffectID, int a_Amplifier, int a_Duration)=0
virtual void SendEntityEquipment(const cEntity &a_Entity, short a_SlotNum, const cItem &a_Item)=0
virtual void SendTabCompletionResults(const AStringVector &a_Results)=0
virtual void SendBossBarUpdateFlags(UInt32 a_UniqueID, bool a_DarkenSky, bool a_PlayEndMusic, bool a_CreateFog)=0
virtual void SendAttachEntity(const cEntity &a_Entity, const cEntity &a_Vehicle)=0
virtual void SendDisconnect(const AString &a_Reason)=0
virtual void SendPlayerSpawn(const cPlayer &a_Player)=0
virtual AString GetAuthServerID(void)=0
Returns the ServerID used for authentication through session.minecraft.net.
virtual void SendScoreboardObjective(const AString &a_Name, const AString &a_DisplayName, Byte a_Mode)=0
virtual void SendPlayerListUpdateGameMode(const cPlayer &a_Player)=0
virtual void SendPlayerListUpdatePing()=0
virtual void SendInventorySlot(char a_WindowID, short a_SlotNum, const cItem &a_Item)=0
virtual void SendUpdateSign(Vector3i a_BlockPos, const AString &a_Line1, const AString &a_Line2, const AString &a_Line3, const AString &a_Line4)=0
virtual void SendPlayerListUpdateDisplayName(const cPlayer &a_Player, const AString &a_CustomName)=0
virtual void SendSetRawTitle(const AString &a_Title)=0
virtual void SendEntityHeadLook(const cEntity &a_Entity)=0
virtual void SendUpdateBlockEntity(cBlockEntity &a_BlockEntity)=0
virtual void SendEntityProperties(const cEntity &a_Entity)=0
virtual void SendScoreUpdate(const AString &a_Objective, const AString &a_Player, cObjective::Score a_Score, Byte a_Mode)=0
virtual ~cProtocol()
Definition: Protocol.h:51
virtual void SendBossBarUpdateHealth(UInt32 a_UniqueID, float a_FractionFilled)=0
Class that manages the statistics and achievements of a single player.
Represents a UI window.
Definition: Window.h:54
Definition: World.h:53