diff options
author | LaG1924 <12997935+LaG1924@users.noreply.github.com> | 2017-06-17 16:23:53 +0200 |
---|---|---|
committer | LaG1924 <12997935+LaG1924@users.noreply.github.com> | 2017-06-17 16:23:53 +0200 |
commit | 789f70b6f1a9067843dfc1ff73d86b645efe1da9 (patch) | |
tree | f3db085f2ac1ec5fd6ad0869a63e77a7f0fb1a17 /src/packet | |
parent | 2017-06-14 (diff) | |
download | AltCraft-789f70b6f1a9067843dfc1ff73d86b645efe1da9.tar AltCraft-789f70b6f1a9067843dfc1ff73d86b645efe1da9.tar.gz AltCraft-789f70b6f1a9067843dfc1ff73d86b645efe1da9.tar.bz2 AltCraft-789f70b6f1a9067843dfc1ff73d86b645efe1da9.tar.lz AltCraft-789f70b6f1a9067843dfc1ff73d86b645efe1da9.tar.xz AltCraft-789f70b6f1a9067843dfc1ff73d86b645efe1da9.tar.zst AltCraft-789f70b6f1a9067843dfc1ff73d86b645efe1da9.zip |
Diffstat (limited to 'src/packet')
-rw-r--r-- | src/packet/Field.cpp | 303 | ||||
-rw-r--r-- | src/packet/Field.hpp | 121 | ||||
-rw-r--r-- | src/packet/FieldParser.cpp | 105 | ||||
-rw-r--r-- | src/packet/FieldParser.hpp | 30 | ||||
-rw-r--r-- | src/packet/Packet.cpp | 101 | ||||
-rw-r--r-- | src/packet/Packet.hpp | 130 | ||||
-rw-r--r-- | src/packet/PacketBuilder.cpp | 65 | ||||
-rw-r--r-- | src/packet/PacketBuilder.hpp | 17 | ||||
-rw-r--r-- | src/packet/PacketParser.cpp | 147 | ||||
-rw-r--r-- | src/packet/PacketParser.hpp | 38 |
10 files changed, 0 insertions, 1057 deletions
diff --git a/src/packet/Field.cpp b/src/packet/Field.cpp deleted file mode 100644 index 9be2469..0000000 --- a/src/packet/Field.cpp +++ /dev/null @@ -1,303 +0,0 @@ -#include "Field.hpp" - -Field::Field() { -} - -Field::Field(const Field &other) : m_dataLength(other.m_dataLength), m_type(other.m_type) { - - m_data = new byte[m_dataLength]; - std::copy(other.m_data,other.m_data+m_dataLength,m_data); -} - -void Field::swap(Field &other) { - std::swap(other.m_dataLength, m_dataLength); - std::swap(other.m_data, m_data); - std::swap(other.m_type, m_type); -} - -Field &Field::operator=(Field other) { - other.swap(*this); - return *this; -} - -Field::~Field() { - Clear(); -} - -size_t Field::GetLength() { - if (m_data != nullptr && m_dataLength == 0) - throw 102; - return m_dataLength; -} - -void Field::Clear() { - m_dataLength = 0; - delete[] m_data; - m_data = nullptr; -} - -void Field::CopyToBuff(byte *ptr) { - if (m_dataLength > 0) - std::copy(m_data,m_data+m_dataLength,ptr); -} - -void Field::SetRaw(byte *ptr, size_t len, FieldType type) { - Clear(); - m_dataLength = len; - m_type = type; - m_data = new byte[m_dataLength]; - std::copy(ptr,ptr+m_dataLength,m_data); -} - -int Field::GetVarInt() { - - size_t readed; - return VarIntRead(m_data, readed); - -} - -void Field::SetVarInt(int value) { - Clear(); - m_type = VarIntType; - m_data = new byte[5]; - m_dataLength = VarIntWrite(value, m_data); -} - -int Field::GetInt() { - int value = *(reinterpret_cast<int *>(m_data)); - endswap(&value); - return value; -} - -void Field::SetInt(int value) { - Clear(); - m_type = Int; - m_data = new byte[4]; - m_dataLength = 4; - int *p = reinterpret_cast<int *>(m_data); - *p = value; - endswap(p); -} - -bool Field::GetBool() { - return *m_data != 0x00; -} - -void Field::SetBool(bool value) { - Clear(); - m_type = Boolean; - m_data = new byte[1]; - m_dataLength = 1; - *m_data = value ? 0x01 : 0x00; -} - -unsigned short Field::GetUShort() { - unsigned short *p = reinterpret_cast<unsigned short *>(m_data); - unsigned short t = *p; - endswap(&t); - return t; -} - -void Field::SetUShort(unsigned short value) { - Clear(); - m_type = UnsignedShort; - m_dataLength = 2; - m_data = new byte[2]; - unsigned short *p = reinterpret_cast<unsigned short *>(m_data); - *p = value; - endswap(p); -} - -std::string Field::GetString() { - Field fLen; - byte *ptr = m_data; - size_t l; - int val = VarIntRead(ptr, l); - ptr += l; - std::string s((char *) ptr, val); - return s; -} - -void Field::SetString(std::string value) { - Clear(); - m_type = String; - Field fLen; - fLen.SetVarInt(value.size()); - m_dataLength = value.size() + fLen.GetLength(); - m_data = new byte[m_dataLength]; - byte *p = m_data; - fLen.CopyToBuff(p); - p += fLen.GetLength(); - std::copy(value.begin(),value.end(),p); -} - -long long Field::GetLong() { - long long t = *reinterpret_cast<long long *>(m_data); - endswap(&t); - return t; -} - -void Field::SetLong(long long value) { - Clear(); - m_type = Long; - m_dataLength = 8; - m_data = new byte[m_dataLength]; - long long *p = reinterpret_cast<long long *>(m_data); - *p = value; - endswap(p); -} - -FieldType Field::GetType() { - return m_type; -} - -byte Field::GetUByte() { - byte t = *reinterpret_cast<byte *>(m_data); - endswap(&t); - return t; -} - -void Field::SetUByte(byte value) { - Clear(); - m_type = UnsignedByte; - endswap(&value); - m_dataLength = 1; - m_data = new byte[m_dataLength]; - byte *p = reinterpret_cast<byte *>(m_data); - *p = value; -} - -sbyte Field::GetByte() { - sbyte t = *reinterpret_cast<sbyte *>(m_data); - endswap(&t); - return t; -} - -void Field::SetByte(sbyte value) { - Clear(); - m_type = Byte8_t; - endswap(&value); - m_dataLength = 1; - m_data = new byte[m_dataLength]; - sbyte *p = reinterpret_cast<sbyte *>(m_data); - *p = value; -} - -float Field::GetFloat() { - float t = *reinterpret_cast<float *>(m_data); - endswap(&t); - return t; -} - -void Field::SetFloat(float value) { - Clear(); - m_type = Float; - endswap(&value); - m_dataLength = 4; - m_data = new byte[m_dataLength]; - float *p = reinterpret_cast<float *>(m_data); - *p = value; -} - -Vector Field::GetPosition() { - unsigned long long t = *reinterpret_cast<unsigned long long *>(m_data); - endswap(&t); - int x = t >> 38; - int y = (t >> 26) & 0xFFF; - int z = t << 38 >> 38; - if (x >= pow(2, 25)) { - x -= pow(2, 26); - } - if (y >= pow(2, 11)) { - y -= pow(2, 12); - } - if (z >= pow(2, 25)) { - z -= pow(2, 26); - } - Vector val(x,y,z); - return val; -} - -void Field::SetPosition(Vector value) { - Clear(); - m_type = Position; - m_dataLength = 8; - m_data = new byte[m_dataLength]; - unsigned long long *t = reinterpret_cast<unsigned long long *>(m_data); - unsigned long long x = ((unsigned long long) value.GetX()) << 38; - unsigned long long y = ((unsigned long long) value.GetY()) << 26; - unsigned long long z = value.GetZ(); - endswap(&x); - endswap(&z); - endswap(&y); - *t = x | y | z; -} - -double Field::GetDouble() { - double t = *reinterpret_cast<double *>(m_data); - endswap(&t); - return t; -} - -void Field::SetDouble(double value) { - Clear(); - m_type = Double; - endswap(&value); - m_dataLength = 8; - m_data = new byte[m_dataLength]; - double *p = reinterpret_cast<double *>(m_data); - *p = value; -} - -size_t Field::GetFieldLength(FieldType type) { - switch (type) { - case UnknownType: - return 0; - case Boolean: - return 1; - case Byte8_t: - return 1; - case UnsignedByte: - return 1; - case Short: - return 2; - case UnsignedShort: - return 2; - case Int: - return 4; - case Long: - return 8; - case Float: - return 4; - case Double: - return 8; - case Position: - return 8; - case Angle: - return 4; - case Uuid: - return 16; - default: - return 0; - } -} - -std::vector<Field> Field::GetArray() { - /*std::vector<Field> vec; - if (m_type<20){ - size_t fieldLen=GetFieldLength(m_type); - byte* ptr = m_data; - for (int i=0;i<m_dataLength/fieldLen;i++){ - Field f; - f.SetRaw(ptr,fieldLen,m_type); - vec.push_back(f); - ptr+=fieldLen; - } - return vec; - }*/ - return m_childs; -} - -void Field::Attach(Field field) { - m_childs.push_back(field); -} diff --git a/src/packet/Field.hpp b/src/packet/Field.hpp deleted file mode 100644 index c33cd1c..0000000 --- a/src/packet/Field.hpp +++ /dev/null @@ -1,121 +0,0 @@ -#pragma once - -#include <cstddef> -#include <cstdint> -#include <cmath> -#include <string> -#include <vector> - -#include "../utility/utility.h" -#include "../utility/Vector.hpp" - -typedef unsigned char byte; -typedef signed char sbyte; - -enum FieldType { - UnknownType = 0, - Boolean, //Bool - Byte8_t, //int8_t - UnsignedByte, //uint8_t - Short, //int16_t - UnsignedShort, //uint16_t - Int, //int32_t - Long, //int64_t - Float, //float - Double, //double - Position, //PositionI - Angle, //uint8_t - Uuid, //byte* (2 bytes) - //Unknown-length data - - String = 100, //std::string - Chat, //std::string - VarIntType, //int32_t - VarLong, //int64_t - ChunkSection, //byte* - EntityMetadata, //byte* - Slot, //byte* - NbtTag, //byte* - ByteArray, //byte* -}; - -class Field { -public: - Field(); - - Field(const Field &other); - - void swap(Field &other); - - Field &operator=(Field other); - - ~Field(); - - size_t GetLength(); - - void Clear(); - - void CopyToBuff(byte *ptr); - - void SetRaw(byte *ptr, size_t len = 0, FieldType type = UnknownType); - - FieldType GetType(); - - void Attach(Field field); - - static size_t GetFieldLength(FieldType type); - - //Cpp-types setters/getters for binary content of MC's data types - - int GetVarInt(); - - void SetVarInt(int value); - - int GetInt(); - - void SetInt(int value); - - bool GetBool(); - - void SetBool(bool value); - - unsigned short GetUShort(); - - void SetUShort(unsigned short value); - - std::string GetString(); - - void SetString(std::string value); - - long long GetLong(); - - void SetLong(long long value); - - byte GetUByte(); - - void SetUByte(byte value); - - sbyte GetByte(); - - void SetByte(sbyte value); - - float GetFloat(); - - void SetFloat(float value); - - Vector GetPosition(); - - void SetPosition(Vector value); - - double GetDouble(); - - void SetDouble(double value); - - std::vector<Field> GetArray(); - -private: - size_t m_dataLength = 0; - byte *m_data = nullptr; - FieldType m_type = UnknownType; - std::vector<Field> m_childs; -}; diff --git a/src/packet/FieldParser.cpp b/src/packet/FieldParser.cpp deleted file mode 100644 index 295e78f..0000000 --- a/src/packet/FieldParser.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include "FieldParser.hpp" - -Field FieldParser::Parse(FieldType type, byte *data, size_t len) { - switch (type) { - case VarIntType: - return ParseVarInt(data, len); - case Boolean: - return ParseBool(data); - case String: - return ParseString(data); - case Long: - return ParseLong(data); - case Int: - return ParseInt(data); - case UnsignedByte: - return ParseUByte(data); - case Byte8_t: - return ParseByte(data); - case Float: - return ParseFloat(data); - case Position: - return ParsePosition(data); - case Double: - return ParseDouble(data); - case ByteArray: - return ParseByteArray(data, len); - default: - throw 105; - } -} - -Field FieldParser::ParseString(byte *data) { - Field fLen = ParseVarInt(data, 0); - Field f; - f.SetRaw(data, fLen.GetLength() + fLen.GetVarInt(), String); - return f; -} - -Field FieldParser::ParseBool(byte *data) { - Field f; - f.SetRaw(data, 1, Boolean); - return f; -} - -Field FieldParser::ParseVarInt(byte *data, size_t len) { - if (len != 0) { - Field f; - f.SetRaw(data, len, VarIntType); - return f; - } - int val = VarIntRead(data, len); - Field f; - f.SetVarInt(val); - return f; -} - -Field FieldParser::ParseLong(byte *data) { - Field f; - f.SetRaw(data, 8, Long); - return f; -} - -Field FieldParser::ParseInt(byte *data) { - Field f; - f.SetRaw(data, 4, Int); - return f; -} - -Field FieldParser::ParseUByte(byte *data) { - Field f; - f.SetRaw(data, 1, UnsignedByte); - return f; -} - -Field FieldParser::ParseByte(byte *data) { - Field f; - f.SetRaw(data, 1, Byte8_t); - return f; -} - -Field FieldParser::ParseFloat(byte *data) { - Field f; - f.SetRaw(data, 4, Float); - return f; -} - -Field FieldParser::ParsePosition(byte *data) { - Field f; - f.SetRaw(data, 8, Position); - return f; -} - -Field FieldParser::ParseDouble(byte *data) { - Field f; - f.SetRaw(data, 8, Double); - return f; -} - -Field FieldParser::ParseByteArray(byte *data, size_t len) { - if (len == 0) - throw 119; - Field f; - f.SetRaw(data, len, Byte8_t); - return f; -} diff --git a/src/packet/FieldParser.hpp b/src/packet/FieldParser.hpp deleted file mode 100644 index f256b34..0000000 --- a/src/packet/FieldParser.hpp +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include "Field.hpp" - -class FieldParser { -public: - static Field ParseVarInt(byte *data, size_t len); - - static Field ParseBool(byte *data); - - static Field ParseString(byte *data); - - static Field Parse(FieldType type, byte* data, size_t len=0); - - static Field ParseLong(byte *data); - - static Field ParseInt(byte *data); - - static Field ParseUByte(byte *data); - - static Field ParseByte(byte *data); - - static Field ParseFloat(byte *data); - - static Field ParsePosition(byte *data); - - static Field ParseDouble(byte *data); - - static Field ParseByteArray(byte *data, size_t len); -};
\ No newline at end of file diff --git a/src/packet/Packet.cpp b/src/packet/Packet.cpp deleted file mode 100644 index 68cc3c3..0000000 --- a/src/packet/Packet.cpp +++ /dev/null @@ -1,101 +0,0 @@ -#include "Packet.hpp" - -Packet::Packet(int id) { - Field fLen; - fLen.SetVarInt(0); - m_fields.push_back(fLen); - Field fId; - fId.SetVarInt(id); - m_fields.push_back(fId); -} - -Packet Packet::operator=(Packet other) { - other.swap(*this); - return *this; -} - -void Packet::swap(Packet &other) { - std::swap(m_fields, other.m_fields); - std::swap(m_data, other.m_data); - std::swap(m_parsePtr, other.m_parsePtr); - std::swap(m_dataLength, other.m_dataLength); -} - -void Packet::CopyToBuff(byte *ptr) { - m_fields[0].SetVarInt(GetLength() - m_fields[0].GetLength()); - for (auto &it:m_fields) { - it.CopyToBuff(ptr); - ptr += it.GetLength(); - } -} - -void Packet::ParseField(FieldType type, size_t len) { - if (type == ByteArray && len == 0) - throw 118; - Field f = FieldParser::Parse(type, m_parsePtr, len); - m_fields.push_back(f); - m_parsePtr += f.GetLength(); - if (m_parsePtr == m_data + m_dataLength) { - delete[] m_data; - m_data = nullptr; - m_dataLength = 0; - m_parsePtr = nullptr; - } -} - -Packet::Packet(byte *data) { - Field fLen = FieldParser::Parse(VarIntType, data); - data += fLen.GetLength(); - Field fId = FieldParser::Parse(VarIntType, data); - data += fId.GetLength(); - m_dataLength = fLen.GetVarInt() - fId.GetLength(); - m_data = new byte[m_dataLength]; - std::copy(data, data + m_dataLength, m_data); - m_parsePtr = m_data; - m_fields.push_back(fLen); - m_fields.push_back(fId); -} - -Field &Packet::GetField(int id) { - if (id < -2 || id >= (int) m_fields.size() - 2) - throw 111; - return m_fields[id + 2]; -} - -size_t Packet::GetLength() { - size_t len = 0; - for (auto &it:m_fields) { - len += it.GetLength(); - } - return len + m_dataLength; -} - -void Packet::AddField(Field field) { - m_fields.push_back(field); -} - -int Packet::GetId() { - return m_fields[1].GetVarInt(); -} - -Packet::Packet(const Packet &other) { - if (other.m_dataLength > 0) { - m_dataLength = other.m_dataLength; - m_data = new byte[m_dataLength]; - m_parsePtr = m_data + (other.m_data - other.m_parsePtr); - std::copy(other.m_data, other.m_data + m_dataLength, m_data); - } - m_fields = other.m_fields; -} - -void Packet::ParseFieldArray(Field &field, FieldType type, size_t len) { - Field f = FieldParser::Parse(type, m_parsePtr, len); - field.Attach(f); - m_parsePtr += f.GetLength(); - if (m_parsePtr == m_data + m_dataLength) { - delete[] m_data; - m_data = nullptr; - m_dataLength = 0; - m_parsePtr = nullptr; - } -} diff --git a/src/packet/Packet.hpp b/src/packet/Packet.hpp deleted file mode 100644 index 68a5d5e..0000000 --- a/src/packet/Packet.hpp +++ /dev/null @@ -1,130 +0,0 @@ -#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, - CloseWindowEvent, - 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 diff --git a/src/packet/PacketBuilder.cpp b/src/packet/PacketBuilder.cpp deleted file mode 100644 index 4083ea3..0000000 --- a/src/packet/PacketBuilder.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "PacketBuilder.hpp" - -Packet PacketBuilder::CHandshaking0x00(int protocolVerison, std::string address, unsigned short port, int nextState) { - Packet handshakePacket(0); - Field fProtocol; - fProtocol.SetVarInt(protocolVerison); - Field fAddress; - fAddress.SetString(address); - Field fPort; - fPort.SetUShort(port); - Field fNextState; - fNextState.SetVarInt(nextState); - handshakePacket.AddField(fProtocol); - handshakePacket.AddField(fAddress); - handshakePacket.AddField(fPort); - handshakePacket.AddField(fNextState); - return handshakePacket; -} - -Packet PacketBuilder::CPlay0x0B(int keepAliveId) { - Packet keepAlivePacket(0x0B); - Field fKeepAlive; - fKeepAlive.SetVarInt(keepAliveId); - keepAlivePacket.AddField(fKeepAlive); - return keepAlivePacket; -} - -Packet PacketBuilder::CPlay0x03(int actionId) { - Packet clientStatusPacket(0x03); - Field fActionId; - fActionId.SetVarInt(actionId); - clientStatusPacket.AddField(fActionId); - return clientStatusPacket; -} - -Packet PacketBuilder::CPlay0x00(int teleportId) { - Packet teleportConfirmPacket(0x00); - Field fTeleportId; - fTeleportId.SetVarInt(teleportId); - teleportConfirmPacket.AddField(fTeleportId); - return teleportConfirmPacket; -} - -Packet PacketBuilder::CPlay0x0D(double x, double y, double z, float yaw, float pitch, bool onGround) { - Packet playerPositionAndLookPacket(0x0D); - Field fX; - Field fY; - Field fZ; - Field fYaw; - Field fPitch; - Field fOnGround; - fX.SetDouble(x); - fY.SetDouble(y); - fZ.SetDouble(z); - fYaw.SetFloat(yaw); - fPitch.SetFloat(pitch); - fOnGround.SetBool(onGround); - playerPositionAndLookPacket.AddField(fX); - playerPositionAndLookPacket.AddField(fY); - playerPositionAndLookPacket.AddField(fZ); - playerPositionAndLookPacket.AddField(fYaw); - playerPositionAndLookPacket.AddField(fPitch); - playerPositionAndLookPacket.AddField(fOnGround); - return playerPositionAndLookPacket; -} diff --git a/src/packet/PacketBuilder.hpp b/src/packet/PacketBuilder.hpp deleted file mode 100644 index 2fcb737..0000000 --- a/src/packet/PacketBuilder.hpp +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - - -#include "Packet.hpp" - -class PacketBuilder { -public: - static Packet CHandshaking0x00(int protocolVerison, std::string address, unsigned short port, int nextState); - static Packet CPlay0x0B(int keepAliveId); - - static Packet CPlay0x03(int actionId); - - static Packet CPlay0x00(int teleportId); - - static Packet CPlay0x0D(double x, double y, double z, float yaw, float pitch, bool onGround); -}; - diff --git a/src/packet/PacketParser.cpp b/src/packet/PacketParser.cpp deleted file mode 100644 index a609011..0000000 --- a/src/packet/PacketParser.cpp +++ /dev/null @@ -1,147 +0,0 @@ -#include "PacketParser.hpp" - -void PacketParser::Parse(Packet &packet, ConnectionState state, bool ClientBound) { - if (ClientBound) { - switch (state) { - case Login: - ParseLogin(packet); - break; - case Handshaking: - break; - case Play: - ParsePlay(packet); - break; - case Status: - - break; - } - } else { - ParseServerBound(packet, state); - } -} - -void PacketParser::ParseServerBound(Packet &packet, ConnectionState state) { - if (packet.GetLength() != state) - throw 107; -} - -void PacketParser::ParseLogin(Packet &packet) { - switch (packet.GetId()) { - case 0x00: - ParseLogin0x00(packet); - break; - case 0x02: - ParseLogin0x02(packet); - break; - default: { - - //throw 112; - } - } -} - -void PacketParser::ParsePlay(Packet &packet) { - switch (packet.GetId()) { - case 0x23: - ParsePlay0x23(packet); - break; - case 0x1F: - ParsePlay0x1F(packet); - break; - case 0x0D: - ParsePlay0x0D(packet); - break; - case 0x2B: - ParsePlay0x2B(packet); - break; - case 0x43: - ParsePlay0x43(packet); - break; - case 0x2E: - ParsePlay0x2E(packet); - break; - case 0x1A: - ParsePlay0x1A(packet); - break; - case 0x20: - ParsePlay0x20(packet); - break; - case 0x07: - ParsePlay0x07(packet); - default: - //throw 113; - break; - } -} - -void PacketParser::ParseLogin0x00(Packet &packet) { - packet.ParseField(String); -} - -void PacketParser::ParseLogin0x02(Packet &packet) { - packet.ParseField(String); - packet.ParseField(String); -} - -void PacketParser::ParsePlay0x23(Packet &packet) { - packet.ParseField(Int); - packet.ParseField(UnsignedByte); - packet.ParseField(Int); - packet.ParseField(UnsignedByte); - packet.ParseField(UnsignedByte); - packet.ParseField(String); - packet.ParseField(Boolean); -} - -void PacketParser::ParsePlay0x1F(Packet &packet) { - packet.ParseField(VarIntType); -} - -void PacketParser::ParsePlay0x0D(Packet &packet) { - packet.ParseField(UnsignedByte); -} - -void PacketParser::ParsePlay0x2B(Packet &packet) { - packet.ParseField(Byte8_t); - packet.ParseField(Float); - packet.ParseField(Float); -} - -void PacketParser::ParsePlay0x43(Packet &packet) { - packet.ParseField(Position); -} - -void PacketParser::ParsePlay0x2E(Packet &packet) { - packet.ParseField(Double); - packet.ParseField(Double); - packet.ParseField(Double); - packet.ParseField(Float); - packet.ParseField(Float); - packet.ParseField(Byte8_t); - packet.ParseField(VarIntType); -} - -void PacketParser::ParsePlay0x1A(Packet &packet) { - packet.ParseField(String); -} - -void PacketParser::ParsePlay0x20(Packet &packet) { - packet.ParseField(Int); - packet.ParseField(Int); - packet.ParseField(Boolean); - packet.ParseField(VarIntType); - packet.ParseField(VarIntType); - packet.ParseField(ByteArray, packet.GetField(4).GetVarInt()); - packet.ParseField(VarIntType); - //packet.ParseField(NbtTag); - //packet.GetField(7).SetArray(packet.GetField(6).GetVarInt()); -} - -void PacketParser::ParsePlay0x07(Packet &packet) { - packet.ParseField(VarIntType); - packet.AddField(Field()); - for (int i = 0; i < packet.GetField(0).GetVarInt(); i++) { - packet.ParseFieldArray(packet.GetField(1), String, 0); - packet.ParseFieldArray(packet.GetField(1), VarIntType, 0); - } -} diff --git a/src/packet/PacketParser.hpp b/src/packet/PacketParser.hpp deleted file mode 100644 index 8ca6195..0000000 --- a/src/packet/PacketParser.hpp +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - - -#include "Packet.hpp" - -class PacketParser { -public: - static void Parse(Packet &packet, ConnectionState state = Play, bool ClientBound = true); - - static void ParseServerBound(Packet &packet, ConnectionState state); - - static void ParseLogin(Packet &packet); - - static void ParsePlay(Packet &packet); - - static void ParseLogin0x00(Packet &packet); - - static void ParseLogin0x02(Packet &packet); - - static void ParsePlay0x23(Packet &packet); - - static void ParsePlay0x1F(Packet &packet); - - static void ParsePlay0x0D(Packet &packet); - - static void ParsePlay0x2B(Packet &packet); - - static void ParsePlay0x43(Packet &packet); - - static void ParsePlay0x2E(Packet &packet); - - static void ParsePlay0x1A(Packet &packet); - - static void ParsePlay0x20(Packet &packet); - - static void ParsePlay0x07(Packet &packet); -}; - |