public static void ShakeData() { ServerList.servers.Sort((a, b) => { var diffPing = (int)(a.Ping - b.Ping); if (diffPing != 0) { return(diffPing); } if (a.serverInfo.discord == "" && b.serverInfo.discord != "") { return(1); } if (a.serverInfo.discord != "" && b.serverInfo.discord == "") { return(-1); } var diffProject = string.Compare(a.serverInfo.discord, b.serverInfo.discord); if (diffProject != 0) { // We are kinda respecting original sort order return(a.counter - b.counter); } var diffName = string.Compare(a.Info, b.Info); if (diffName != 0) { return(diffName); } return(a.serverPlayers.current - b.serverPlayers.current); }); if (ServerList.servers.Count > 100) { ServerList.PingStop(); ServerList.servers.RemoveRange(100, ServerList.servers.Count - 100); } }