Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using HoneycombServer.Utility;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- namespace HoneycombServer.Networking.Packets
- {
- /// <summary>
- /// 0x00: Handshake Packet (Serverbound)
- ///
- /// This causes the server to switch into the target state.
- /// </summary>
- class HandshakePacket_C2S : Packet
- {
- internal struct PacketFields
- {
- public int protocolVersion; // VarInt
- public string serverAddress; // Length prefixed string
- public ushort serverPort; // ushort
- public ConnectionState nextState; // VarInt enum
- }
- private PacketFields _fields;
- public PacketFields Fields => _fields;
- public override void ReadPacketData(byte[] data)
- {
- var stream = new MemoryStream(data);
- var reader = new BinaryReader(stream);
- // Read packet fields (protocol version, address)
- int protocolVersion = reader.ReadVarInt();
- int addressLength = reader.ReadVarInt();
- var address = new byte[addressLength];
- int read = stream.Read(address, 0, addressLength);
- // Read the port as a unsigned short (UInt16)
- ushort port = reader.ReadUInt16();
- int nextState = reader.ReadVarInt();
- // Store the packet data in the Data property
- _fields = new PacketFields
- {
- protocolVersion = protocolVersion,
- serverAddress = address.ToString(),
- serverPort = port,
- nextState = (ConnectionState)nextState
- };
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement