summaryrefslogtreecommitdiffstats
path: root/Packet.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'Packet.hpp')
-rw-r--r--Packet.hpp130
1 files changed, 130 insertions, 0 deletions
diff --git a/Packet.hpp b/Packet.hpp
new file mode 100644
index 0000000..67e95e5
--- /dev/null
+++ b/Packet.hpp
@@ -0,0 +1,130 @@
+#pragma once
+
+#include <vector>
+#include "Field.hpp"
+#include "FieldParser.hpp"
+
+enum ConnectionState {
+ Login,
+ Handshaking,
+ Play,
+ Status,
+};
+
+enum PacketsClientBound{
+ SpawnObject=0x00,
+ SpawnExperienceOrb,
+ SpawnGlobalEntity,
+ SpawnMob,
+ SpawnPainting,
+ SpawnPlayer,
+ Animation,
+ Statistics,
+ BlockBreakAnimation,
+ UpdateBlockEntity,
+ BlockAction,
+ BlockChange,
+ BossBar,
+ ServerDifficulty,
+ Tab,
+ ChatMessage,
+ MultiBlockChange,
+ ConfirmTransaction,
+ CloseWindow,
+ OpenWindow,
+ WindowItems,
+ WindowProperty,
+ SetSlot,
+ SetCooldown,
+ PluginMessage,
+ NamedSoundEffect,
+ Disconnect,
+ EntityStatus,
+ Explosion,
+ UnloadChunk,
+ ChangeGameState,
+ KeepAlive,
+ ChunkData,
+ Effect,
+ Particle,
+ JoinGame,
+ Map,
+ EntityRelativeMove,
+ EntityLookAndRelativeMove,
+ EntityLook,
+ Entity,
+ VehicleMove,
+ OpenSignEditor,
+ PlayerAbilities,
+ CombatEvent,
+ PlayerListItem,
+ PlayerPositionAndLook,
+ UseBed,
+ DestroyEntities,
+ RemoveEntityEffect,
+ ResourcePackSend,
+ Respawn,
+ EntityHeadLook,
+ WorldBorder,
+ Camera,
+ HeldItemChange,
+ DisplayScoreboard,
+ EntityMetadata_,
+ AttachEntity,
+ EntityVelocity,
+ EntityEquipment,
+ SetExperience,
+ UpdateHealth,
+ ScoreboardObjective,
+ SetPassengers,
+ Teams,
+ UpdateScore,
+ SpawnPosition,
+ TimeUpdate,
+ Title,
+ SoundEffect,
+ PlayerListHeaderAndFooter,
+ CollectItem,
+ EntityTeleport,
+ EntityProperties,
+ EntityEffect,
+};
+
+class Packet {
+public:
+ Packet(int id);
+
+ Packet(byte *data);
+
+ Packet(const Packet &other);
+
+ ~Packet() {
+ delete[] m_data;
+ }
+
+ int GetId();
+
+ void AddField(Field field);
+
+ void ParseField(FieldType type, size_t len = 0);
+
+ void ParseFieldArray(Field &field, FieldType type, size_t len);
+
+ Field & GetField(int id);
+
+ size_t GetLength();
+
+ void CopyToBuff(byte *ptr);
+
+ void swap(Packet &other);
+
+ Packet operator=(Packet other);
+
+private:
+ Packet();
+
+ std::vector<Field> m_fields;
+ byte *m_data = nullptr;
+ byte *m_parsePtr = nullptr;
+ size_t m_dataLength = 0;
+}; \ No newline at end of file