public override void HandlePacket(MinecraftServer server, MinecraftClient client) { if (ProtocolVersion < MinecraftServer.ProtocolVersion) { client.SendPacket(new DisconnectPacket("Outdated client!")); server.ProcessSendQueue(); return; } if (ProtocolVersion > MinecraftServer.ProtocolVersion) { client.SendPacket(new DisconnectPacket("Outdated server!")); server.ProcessSendQueue(); return; } if (server.Clients.Count(c => c.Username == Username) != 0) { client.SendPacket(new DisconnectPacket("You are already logged in!")); server.ProcessSendQueue(); return; } client.Username = Username; client.Hostname = Hostname + ":" + Port.ToString(); // Respond with encryption request if (server.OnlineMode) client.AuthenticationHash = CreateHash(); else client.AuthenticationHash = "-"; if (server.EncryptionEnabled) { var keyRequest = new EncryptionKeyRequestPacket(client.AuthenticationHash, server.ServerKey); client.SendPacket(keyRequest); server.ProcessSendQueue(); } else server.LogInPlayer(client); client.StartWorkers(); }