#include "packets.h" #include "mcdatastream.h" packets::handshaking::serverbound::Handshake::Handshake(McDataStream &stream) { protocolVersion = stream.readVar(); serverAddress = stream.readVar(); stream >> serverPort; const auto socketState = stream.readVar(); Q_ASSERT(socketState == 1 || socketState == 2); nextState = SocketState(socketState); } packets::status::serverbound::Request::Request(McDataStream &stream) { Q_UNUSED(stream); } packets::status::serverbound::Ping::Ping(McDataStream &stream) { stream >> payload; } void packets::status::clientbound::Response::serialize(McDataStream &stream) { QByteArray buffer; McDataStream tempStream(&buffer, QIODevice::WriteOnly); tempStream.writeVar(PacketResponse); tempStream.writeVar(jsonResponse); stream.writeVar(buffer.length()); stream.writeRawData(buffer.constData(), buffer.length()); } void packets::status::clientbound::Pong::serialize(McDataStream &stream) { QByteArray buffer; McDataStream tempStream(&buffer, QIODevice::WriteOnly); tempStream.writeVar(PacketPong); tempStream << payload; stream.writeVar(buffer.length()); stream.writeRawData(buffer.constData(), buffer.length()); } packets::login::serverbound::Login::Login(McDataStream &stream) { name = stream.readVar(); } void packets::login::clientbound::LoginSuccess::serialize(McDataStream &stream) { QByteArray buffer; McDataStream tempStream(&buffer, QIODevice::WriteOnly); tempStream.writeVar(PacketLoginSuccess); tempStream.writeVar(uuid); tempStream.writeVar(username); stream.writeVar(buffer.length()); stream.writeRawData(buffer.constData(), buffer.length()); } packets::play::serverbound::ClientSettings::ClientSettings(McDataStream &stream) { locale = stream.readVar(); stream >> viewDistance; chatMode = stream.readVar(); stream >> chatColors >> displayedSkinParts; mainHand = stream.readVar(); } packets::play::serverbound::PluginMessage::PluginMessage(McDataStream &stream) { channel = stream.readVar(); //TODO read to end of buffer } void packets::play::clientbound::ServerDifficulty::serialize(McDataStream &stream) { QByteArray buffer; McDataStream tempStream(&buffer, QIODevice::WriteOnly); tempStream.writeVar(PacketServerDifficulty); tempStream << difficulty; stream.writeVar(buffer.length()); stream.writeRawData(buffer.constData(), buffer.length()); } void packets::play::clientbound::PluginMessage::serialize(McDataStream &stream) { QByteArray buffer; McDataStream tempStream(&buffer, QIODevice::WriteOnly); tempStream.writeVar(PacketPluginMessage); tempStream.writeVar(channel); buffer.append(data); stream.writeVar(buffer.length()); stream.writeRawData(buffer.constData(), buffer.length()); } void packets::play::clientbound::JoinGame::serialize(McDataStream &stream) { QByteArray buffer; McDataStream tempStream(&buffer, QIODevice::WriteOnly); tempStream.writeVar(PacketJoinGame); tempStream << entityid << gamemode << dimension << difficulty << maxPlayers; tempStream.writeVar(levelType); tempStream << reducedDebugInfo; stream.writeVar(buffer.length()); stream.writeRawData(buffer.constData(), buffer.length()); } void packets::play::clientbound::PlayerAbilities::serialize(McDataStream &stream) { QByteArray buffer; McDataStream tempStream(&buffer, QIODevice::WriteOnly); tempStream.writeVar(PacketPlayerAbilities); tempStream << flags; tempStream.writeFloat(flyingSpeed); tempStream.writeFloat(fieldOfViewModifier); stream.writeVar(buffer.length()); stream.writeRawData(buffer.constData(), buffer.length()); } void packets::play::clientbound::PlayerPositionAndLook::serialize(McDataStream &stream) { QByteArray buffer; McDataStream tempStream(&buffer, QIODevice::WriteOnly); tempStream.writeVar(PacketPlayerPositionAndLook); tempStream.writeDouble(x); tempStream.writeDouble(y); tempStream.writeDouble(z); tempStream.writeFloat(yaw); tempStream.writeFloat(pitch); tempStream << flags; tempStream.writeVar(teleportId); stream.writeVar(buffer.length()); stream.writeRawData(buffer.constData(), buffer.length()); } void packets::play::clientbound::SpawnPosition::serialize(McDataStream &stream) { QByteArray buffer; McDataStream tempStream(&buffer, QIODevice::WriteOnly); tempStream.writeVar(PacketSpawnPosition); tempStream.writePosition(location); stream.writeVar(buffer.length()); stream.writeRawData(buffer.constData(), buffer.length()); }