Esempio n. 1
0
        public override List <DownloadItem> GetAllItemsToDownload()
        {
            var l = new List <DownloadItem>();

            using (WebClient wc = new WebClient())
            {
                var json    = wc.DownloadString(MinecraftVersionManifestURL);
                var matches = Regex.Matches(json,
                                            "{\"id\": \"(.*?)\", \"type\": \"(.*?)\"," +
                                            " \"url\": \"(.*?)\", \"time\": \"(.*?)\"," +
                                            " \"releaseTime\": \"(.*?)\"}");
                foreach (Match m in matches)
                {
                    var e           = m.Groups.GetEnumerator();
                    var glist       = EnumeratorUtils.MakeListFromEnumerator(e);
                    var id          = ((Group)glist[1]).Value;
                    var type        = ((Group)glist[2]).Value;
                    var url         = ((Group)glist[3]).Value;
                    var releaseTime = ((Group)glist[5]).Value;
                    var vi          = new MinecraftDownloadItem(UseBMCLAPI, MinecraftFolderName, id, type, url, releaseTime);
                    l.Add(vi);
                }
            }
            return(l);
        }
Esempio n. 2
0
        public override List <DownloadItem> GetAllItemsToDownload()
        {
            var list = new List <DownloadItem>();

            using (var wc = new WebClient())
            {
                var manifestUrl = string.Format(
                    "http://files.minecraftforge.net/maven/net/minecraftforge/forge/index_{0}.html",
                    MCVersion.VersionName
                    );
                var htmllist = wc.DownloadString(manifestUrl);
                var matches  = Regex.Matches(htmllist, "<tr>\\n\\s*?<td class=\"download-version\">\\n\\s*(.*?)\\n");
                foreach (Match match in matches)
                {
                    var groups  = EnumeratorUtils.MakeListFromEnumerator(match.Groups.GetEnumerator());
                    var version = ((Group)groups[1]).Value;
                    var mc      = this.MCVersion.VersionName;
                    var url     = string.Format(
                        "http://files.minecraftforge.net/maven/net/minecraftforge/forge/{0}-{1}/forge-{0}-{1}-universal.jar",
                        mc,
                        version
                        );
                    list.Add(new ForgeDownloadItem(this.MCVersion, version, url, this.UseBMCL));
                }
            }
            return(list);
        }
Esempio n. 3
0
        public IEnumerator Init(IProgress <float> progress)
        {
            valuesStore = new BlockValuesStore();
            var enumerator = EnumeratorUtils.ReportForeachOperation(blockTemplateBag, RegisterBlockTemplate, progress);

            while (enumerator.MoveNext())
            {
                yield return(enumerator.Current);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// <p>Builds a list of item-item correlations given an {@link ItemCorrelation} implementation and a
        /// <see cref="DataModel">DataModel</see>, rather than a list of {@link ItemItemCorrelation}s.</p>
        /// <p>It's valid to build a <see cref="GenericItemCorrelation"/> this way, but perhaps missing some of the point
        /// of an item-based Recommender. Item-based recommenders use the assumption that item-item correlations
        /// are relatively fixed, and might be known already independent of user preferences. Hence it is useful
        /// to inject that information, using {@link GenericItemCorrelation(java.util.Collection)}.</p>
        /// </summary>
        /// <param name="otherCorrelation">otherCorrelation other {@link ItemCorrelation} to get correlations from</param>
        /// <param name="dataModel">dataModel data Model to get {@link Item}s from</param>
        public GenericItemCorrelation(ItemCorrelation otherCorrelation, DataModel dataModel)
        {
            List <Item> items = EnumeratorUtils.EnumerableToList <Item>(dataModel.GetItems());
            int         size  = items.Count;

            for (int i = 0; i < size; i++)
            {
                Item item1 = items[i];
                for (int j = i + 1; j < size; j++)
                {
                    Item   item2                  = items[j];
                    double correlation            = otherCorrelation.GetItemCorrelation(item1, item2);
                    Dictionary <Item, Double> map = null;
                    if (!correlationMaps.TryGetValue(item1, out map))
                    {
                        map = new Dictionary <Item, Double>(1009);
                        correlationMaps.Add(item1, map);
                    }
                    map.Add(item2, correlation);
                }
            }
        }
Esempio n. 5
0
 public static void Visit <T>(this IEnumerator <T> enumerator, Action <T> visitor)
 {
     EnumeratorUtils.Visit(enumerator, visitor);
 }
Esempio n. 6
0
 public static void Visit <T>(this IEnumerator <T> enumerator, Func <T, bool> visitor)
 {
     EnumeratorUtils.Visit(enumerator, visitor);
 }
Esempio n. 7
0
 public static void MoveToEnd(this IEnumerator enumerator)
 {
     EnumeratorUtils.MoveToEnd(enumerator);
 }
Esempio n. 8
0
 public static IEnumerable <object> Enumerate(this IEnumerator enumerator)
 {
     return(EnumeratorUtils.Enumerate(enumerator));
 }
Esempio n. 9
0
 public static IEnumerable <T> Enumerate <T>(this IEnumerator <T> enumerator)
 {
     return(EnumeratorUtils.Enumerate(enumerator));
 }
Esempio n. 10
0
        public override void Download()
        {
            bool NeedBranchName = !NetUtils.IsUrlExists(Url);

            if (NeedBranchName)
            {
                Url = string.Format(
                    "http://files.minecraftforge.net/maven/net/minecraftforge/forge/{0}-{1}-{0}/forge-{0}-{1}-{0}-universal.jar",
                    MCVersion.VersionName,
                    ForgeVersion
                    );
            }
            if (UseBMCL)
            {
                Url = Url.Replace("files.minecraftforge.net", "bmclapi2.bangbang93.com");
            }
            OnProgressChanged("正在检查launchwrapper安装情况并确保安装", 0);
            MCVersion.InstallLaunchWrapper();
            string jarfile, folder;

            if (NeedBranchName)
            {
                jarfile = string.Format("forge-{0}-{1}-{0}.jar", this.MCVersion.VersionName, this.ForgeVersion);
                folder  = string.Format("net/minecraftforge/forge/{0}-{1}-{0}/", this.MCVersion.VersionName, this.ForgeVersion);
            }
            else
            {
                jarfile = string.Format("forge-{0}-{1}.jar", this.MCVersion.VersionName, this.ForgeVersion);
                folder  = string.Format("net/minecraftforge/forge/{0}-{1}/", this.MCVersion.VersionName, this.ForgeVersion);
            }
            var location     = folder + jarfile;
            var realLocation = LauncherMain.Instance.Settings.MinecraftFolderName + "libraries\\" + location.Replace('/', '\\');
            var realFolder   = LauncherMain.Instance.Settings.MinecraftFolderName + "libraries\\" + folder.Replace('/', '\\');

            if (!Directory.Exists(realFolder))
            {
                Directory.CreateDirectory(realFolder);
            }
            using (var wc = new WebClient())
            {
                OnProgressChanged("开始下载" + jarfile, 0);
                bool downloaded = false;
                wc.DownloadFileCompleted += (o, e) =>
                {
                    downloaded = true;
                    wc.Dispose();
                };
                wc.DownloadProgressChanged += (o, e) => OnProgressChanged(null, e.ProgressPercentage);
                wc.DownloadFileAsync(new Uri(this.Url), realLocation);
                while (!downloaded)
                {
                    Thread.Sleep(100);
                }
            }
            var zip = ZipFile.Open(realLocation, ZipArchiveMode.Read);
            var versionlistentry = zip.GetEntry("version.json");
            var sr   = new StreamReader(versionlistentry.Open());
            var json = sr.ReadToEnd();

            sr.Close();
            zip.Dispose();
            var matches         = Regex.Matches(json, "\"name\"\\s*:\\s*\"(.*?)\"");
            var manifest        = MinecraftManifest.AnalyzeFromVersion(MCVersion);
            int needDownload    = 0;
            int downloadedCount = 0;

            foreach (Match match in matches)
            {
                var groups  = EnumeratorUtils.MakeListFromEnumerator(match.Groups.GetEnumerator());
                var libname = ((Group)groups[1]).Value;
                var names   = new List <string>(libname.Split(':'));
                if (names[1] != "launchwrapper")
                {
                    manifest.libraries.RemoveAll(m =>
                    {
                        var ns = m.name.Split(':');
                        return(ns[1] == names[1]);
                    });
                    var fnames = names[0].Split('.');
                    names.RemoveAt(0);
                    names.InsertRange(0, fnames);
                    string url;
                    if (this.UseBMCL)
                    {
                        url = "http://bmclapi2.bangbang93.com/maven/";
                    }
                    else
                    {
                        if (Regex.IsMatch(
                                json,
                                string.Format(
                                    "\"name\"\\s*:\\s*\"{0}\"\\n" +
                                    "\\s*?\"url\"\\s*:\\s*\"http://files\\.minecraftforge\\.net/maven/\"",
                                    libname.Replace(".", "\\.")
                                    )
                                ))
                        {
                            url = "http://files.minecraftforge.net/maven/";
                        }
                        else
                        {
                            url = "https://libraries.minecraft.net/";
                        }
                    }
                    url += string.Join("/", names);
                    var jarname = names[names.Count - 2] + "-" + names[names.Count - 1] + ".jar";
                    url += "/" + jarname;
                    var localDir = LauncherMain.Instance.Settings.MinecraftFolderName + "libraries\\" + string.Join("\\", names) + "\\";
                    if (!Directory.Exists(localDir))
                    {
                        Directory.CreateDirectory(localDir);
                    }
                    var localLoc = localDir + jarname;
                    if (!File.Exists(localLoc))
                    {
                        var wc = new WebClient();
                        wc.DownloadFileCompleted += (o, e) =>
                        {
                            downloadedCount++;
                            OnProgressChanged(jarname + "已下载", (int)(downloadedCount / (double)needDownload * 100));
                            wc.Dispose();
                        };
                        wc.DownloadProgressChanged += (o, e) =>
                                                      Debug.WriteLine(string.Format("{0} Downloaded {1}", jarname, e.ProgressPercentage));
                        wc.DownloadFileAsync(new Uri(url), localLoc);
                    }
                    var library = new MinecraftLibrary
                    {
                        name = libname
                    };
                    manifest.libraries.Add(library);
                    needDownload++;
                }
            }
            while (needDownload != downloadedCount)
            {
                Thread.Sleep(100);
            }
            if (manifest.arguments == null)
            {
                manifest.minecraftArguments += " --tweakClass cpw.mods.fml.common.launcher.FMLTweaker";
            }
            else
            {
                manifest.arguments.game.Add("--tweakClass");
                manifest.arguments.game.Add("cpw.mods.fml.common.launcher.FMLTweaker");
            }
            MCVersion.SaveManifest(manifest);
        }
Esempio n. 11
0
        public override List <DownloadItem> GetAllItemsToDownload()
        {
            var list     = new List <DownloadItem>();
            var manifest = MinecraftManifest.AnalyzeFromVersion(this.Version);
            var id       = manifest.id;

            downloadVersionInfos = new List <OptifineDownloadItem>();
            using (var wc = new WebClient())
            {
                if (UseBMCL)
                {
                    var jsonurl  = string.Format(BMCLAPI_OPTIFINE_LIST_FORMAT, id);
                    var seri     = new JavaScriptSerializer();
                    var itemList = seri.Deserialize <List <BMCLOptifineDownloadItem> >(
                        wc.DownloadString(jsonurl)
                        );
                    foreach (var item in itemList)
                    {
                        var MCVersion = this.Version;
                        var Type      = item.type;
                        var Patch     = item.patch;
                        var Url       = string.Format(
                            "https://bmclapi2.bangbang93.com/optifine/{0}/{1}/{2}",
                            item.mcversion,
                            item.type,
                            item.patch
                            );
                        var listItem = new OptifineDownloadItem(MCVersion, Type, Patch, Url);
                        downloadVersionInfos.Add(listItem);
                        list.Add(listItem);
                    }
                }
                else
                {
                    var   downloads = wc.DownloadString(OPTIFINE_OFFICAL_DOWNLOADS);
                    Match main      = Regex.Match(
                        downloads,
                        string.Format("<h2>Minecraft {0}</h2>((.|\n)*?)</table>", id.Replace(".", "\\."))
                        );
                    MatchCollection matches = Regex.Matches(
                        main.Value,
                        "<tr class='downloadLine.*?'>\\n<td class='downloadLineFile.*?'>(.*?)</td>\\n<td class='downloadLineDownload.*?'><a href=.*?>Download</a></td>\\n<td class='downloadLineMirror'><a href=\"(.*?)\">&nbsp; \\(mirror\\)</a></td>"
                        );
                    foreach (Match match in matches)
                    {
                        var groups = EnumeratorUtils.MakeListFromEnumerator(
                            match.Groups.GetEnumerator()
                            );
                        var name   = ((Group)groups[1]).Value;
                        var mirror = ((Group)groups[2]).Value;
                        var t      = EnumeratorUtils.MakeListFromEnumerator(
                            Regex.Match(
                                mirror,
                                "http://optifine.net/adloadx\\?f=(.*)"
                                ).Groups.GetEnumerator()
                            );
                        var jar    = ((Group)t[1]).Value;
                        var adsite = wc.DownloadString(mirror);
                        var uri    = Regex.Match(adsite, string.Format("downloadx\\?f={0}&x=.*?'", jar.Replace(".", "\\."))).Value;
                        uri = uri.Substring(0, uri.Length - 1);
                        var url   = "https://optifine.net/" + uri;
                        var args  = name.Split(' ');
                        var type  = args[2] + "_" + args[3];
                        var patch = args[4];
                        var info  = new OptifineDownloadItem(Version, type, patch, url);
                        downloadVersionInfos.Add(info);
                        list.Add(info);
                    }
                }
            }
            return(list);
        }