private void PerformHandshake() { var handshakePacket = new HandshakePacket(-1, "localhost", 25565, 1); var nPacket = new NotchianPacket(0x00, handshakePacket.Serialize()); socket.Send(nPacket.Serialize()); }
public ServerStatus GetStatus() { if (socket.Connected) { // Send handshake PerformHandshake(); // Send SLP request packet SendSlpRequest(); byte[] recvBuffer = new byte[1024 * 128]; int len = socket.Receive(recvBuffer); var packet = NotchianPacket.Deserialize(recvBuffer, 0, len); var jsonData = Encoding.UTF8.GetString(packet.Data, 0, packet.Data.Length); var token = JsonConvert.DeserializeObject <JToken>(jsonData); var status = new ServerStatus() { Version = token["version"]["name"].ToString(), ProtocolVersion = token["version"]["protocol"].Value <int>(), Players = null, MaxPlayers = token["players"]["max"].Value <int>(), OnlinePlayersCount = token["players"]["online"].Value <int>(), Description = token["description"]["text"].ToString(), Favicon = BitmapConvert.FromBase64String(token["favicon"].ToString().Substring("data:image/png;base64,".Length)) }; return(status); } else { throw new NotConnectedException(); } }
private void SendSlpRequest() { var mcPacket2 = new NotchianPacket(0x00, new byte[0]); socket.Send(mcPacket2.Serialize()); }