public static async Task HandleServerStats(Client client, PacketReader reader) { await reader.ReadByte(); using (var packet = new PacketWriter(SendOpcode.Kick)) { packet.WriteString("§1\0{0}\0{1}\0{2}\0{3}\0{4}", Server.Protocol, Server.Version, Server.Instance.GetMOTD(), Server.Instance.PlayerCount, Server.Instance.Max); client.Send(packet); } }
public static async Task HandleHandshake(Client client, PacketReader reader) { byte protocol = await reader.ReadByte(); string username = await reader.ReadString(); string host = await reader.ReadString(); uint port = await reader.ReadUInt32(); // TODO: This has to happen as a seperate task!! not on this thread LoginResult res = client.Authenticate(username, host, port); if (res != LoginResult.LoggedIn) { using (var packet = new PacketWriter(SendOpcode.Kick)) { packet.WriteString("DERP!!! Server disconnected, reason: {0}", res.ToString()); client.Send(packet); } } else { //TODO: chunks? } }
private static async void SendLoginInformation(Client client) { using (var packet = new PacketWriter(SendOpcode.Login)) { uint entityID = 4432; // TODO: make dynamic string levelType = "default"; byte gameMode = 1; byte dimension = 0; byte difficulty = 2; byte maxPlayers = Server.MaxPlayers; packet.Write(entityID); packet.WriteString(levelType); packet.Write(gameMode); packet.Write(dimension); packet.Write(difficulty); // unused byte packet.Write((byte)0); packet.Write(maxPlayers); client.Send(packet); } WorldHandler.TestSpawn(client); }