blob: f4b388971127aadfa8a08cf36eee7cd2d92b124d (
plain) (
tree)
|
|
#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) {
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(VarInt);
}
void PacketParser::ParsePlay0x0D(Packet &packet) {
packet.ParseField(UnsignedByte);
}
void PacketParser::ParsePlay0x2B(Packet &packet) {
packet.ParseField(Byte);
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(Byte);
packet.ParseField(VarInt);
}
void PacketParser::ParsePlay0x1A(Packet &packet) {
packet.ParseField(String);
}
void PacketParser::ParsePlay0x20(Packet &packet) {
packet.ParseField(Int);
packet.ParseField(Int);
packet.ParseField(Boolean);
packet.ParseField(VarInt);
packet.ParseField(VarInt);
packet.ParseField(ByteArray, packet.GetField(4).GetVarInt());
packet.ParseField(VarInt);
//packet.ParseField(NbtTag);
//packet.GetField(7).SetArray(packet.GetField(6).GetVarInt());
}
void PacketParser::ParsePlay0x07(Packet &packet) {
packet.ParseField(VarInt);
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), VarInt, 0);
}
}
|