コード例 #1
0
        public static void ImportOldMc(string importName, string importFrom, Delegate callback = null)
        {
            var thread = new Thread(() =>
            {
                OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportMain"));
                Directory.CreateDirectory(".minecraft\\versions\\" + importName);
                File.Copy(importFrom + "\\bin\\minecraft.jar",
                          ".minecraft\\versions\\" + importName + "\\" + importName + ".jar");
                OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportCreateJson"));
                var info = new gameinfo {
                    id = importName
                };
                string timezone = DateTimeOffset.Now.Offset.ToString();
                if (timezone[0] != '-')
                {
                    timezone = "+" + timezone;
                }
                info.time               = DateTime.Now.GetDateTimeFormats('s')[0] + timezone;
                info.releaseTime        = DateTime.Now.GetDateTimeFormats('s')[0] + timezone;
                info.type               = "Port By BMCL";
                info.minecraftArguments = "${auth_player_name}";
                info.mainClass          = "net.minecraft.client.Minecraft";
                OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportSolveNative"));
                var libs = new ArrayList();
                var bin  = new DirectoryInfo(importFrom + "\\bin");
                foreach (FileInfo file in bin.GetFiles("*.jar"))
                {
                    var libfile = new libraries.libraryies();
                    if (file.Name == "minecraft.jar")
                    {
                        continue;
                    }
                    if (
                        !Directory.Exists(".minecraft\\libraries\\" + importName + "\\" +
                                          file.Name.Substring(0, file.Name.Length - 4) + "\\BMCL\\"))
                    {
                        Directory.CreateDirectory(".minecraft\\libraries\\" + importName + "\\" +
                                                  file.Name.Substring(0, file.Name.Length - 4) + "\\BMCL\\");
                    }
                    File.Copy(file.FullName,
                              ".minecraft\\libraries\\" + importName + "\\" + file.Name.Substring(0, file.Name.Length - 4) +
                              "\\BMCL\\" + file.Name.Substring(0, file.Name.Length - 4) + "-BMCL.jar");
                    libfile.name = importName + ":" + file.Name.Substring(0, file.Name.Length - 4) + ":BMCL";
                    libs.Add(libfile);
                }
                FileHelper.CreateDirectoryIfNotExist(".minecraft\\libraries\\" + importName + "\\BMCL\\");
                var nativejar =
                    new ZipArchive(
                        new FileStream(
                            ".minecraft\\libraries\\" + importName + "\\native\\BMCL\\native-BMCL-natives-windows.jar",
                            FileMode.OpenOrCreate));
                var nativeInfo = new DirectoryInfo(importFrom + "\\bin\\natives").GetFiles("\\.dll$");
                foreach (var fileInfo in nativeInfo)
                {
                    nativejar.CreateEntryFromFile(fileInfo.FullName, fileInfo.Name);
                }
                var nativefile = new libraries.libraryies {
                    name = importName + ":native:BMCL"
                };
                var nativeos = new libraries.OS {
                    windows = "natives-windows"
                };
                nativefile.natives = nativeos;
                nativefile.extract = new libraries.extract();
                libs.Add(nativefile);
                info.libraries = (libraries.libraryies[])libs.ToArray(typeof(libraries.libraryies));
                OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportWriteJson"));
                var wcfg = new FileStream(".minecraft\\versions\\" + importName + "\\" + importName + ".json",
                                          FileMode.Create);
                var infojson = new DataContractJsonSerializer(typeof(gameinfo));
                infojson.WriteObject(wcfg, info);
                wcfg.Close();
                OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportSolveLib"));
                if (Directory.Exists(importFrom + "\\lib"))
                {
                    if (!Directory.Exists(".minecraft\\lib"))
                    {
                        Directory.CreateDirectory(".minecraft\\lib");
                    }
                    foreach (
                        string libfile in Directory.GetFiles(importFrom + "\\lib", "*", SearchOption.AllDirectories))
                    {
                        if (!File.Exists(".minecraft\\lib\\" + System.IO.Path.GetFileName(libfile)))
                        {
                            File.Copy(libfile, ".minecraft\\lib\\" + System.IO.Path.GetFileName(libfile));
                        }
                    }
                }
                OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportSolveMod"));
                if (Directory.Exists(importFrom + "\\mods"))
                {
                    util.FileHelper.Dircopy(importFrom + "\\mods", ".minecraft\\versions\\" + importName + "\\mods");
                }
                else
                {
                    Directory.CreateDirectory(".minecraft\\versions\\" + importName + "\\mods");
                }
                if (Directory.Exists(importFrom + "\\coremods"))
                {
                    util.FileHelper.Dircopy(importFrom + "\\coremods",
                                            ".minecraft\\versions\\" + importName + "\\coremods");
                }
                else
                {
                    Directory.CreateDirectory(".minecraft\\versions\\" + importName + "\\coremods");
                }
                if (Directory.Exists(importFrom + "\\config"))
                {
                    util.FileHelper.Dircopy(importFrom + "\\config", ".minecraft\\versions\\" + importName + "\\config");
                }
                else
                {
                    Directory.CreateDirectory(".minecraft\\versions\\" + importName + "\\configmods");
                }
                OnImportFinish();
                if (callback != null)
                {
                    BmclCore.Invoke(callback);
                }
            });

            thread.Start();
        }
コード例 #2
0
ファイル: VersionHelper.cs プロジェクト: Apache553/BMCL
 public static void ImportOldMc(string importName, string importFrom, Delegate callback = null)
 {
     var thread = new Thread(() =>
     {
         OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportMain"));
         Directory.CreateDirectory(".minecraft\\versions\\" + importName);
         File.Copy(importFrom + "\\bin\\minecraft.jar",
             ".minecraft\\versions\\" + importName + "\\" + importName + ".jar");
         OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportCreateJson"));
         var info = new gameinfo {id = importName};
         string timezone = DateTimeOffset.Now.Offset.ToString();
         if (timezone[0] != '-')
         {
             timezone = "+" + timezone;
         }
         info.time = DateTime.Now.GetDateTimeFormats('s')[0] + timezone;
         info.releaseTime = DateTime.Now.GetDateTimeFormats('s')[0] + timezone;
         info.type = "Port By BMCL";
         info.minecraftArguments = "${auth_player_name}";
         info.mainClass = "net.minecraft.client.Minecraft";
         OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportSolveNative"));
         var libs = new ArrayList();
         var bin = new DirectoryInfo(importFrom + "\\bin");
         foreach (FileInfo file in bin.GetFiles("*.jar"))
         {
             var libfile = new libraries.libraryies();
             if (file.Name == "minecraft.jar")
                 continue;
             if (
                 !Directory.Exists(".minecraft\\libraries\\" + importName + "\\" +
                                   file.Name.Substring(0, file.Name.Length - 4) + "\\BMCL\\"))
             {
                 Directory.CreateDirectory(".minecraft\\libraries\\" + importName + "\\" +
                                           file.Name.Substring(0, file.Name.Length - 4) + "\\BMCL\\");
             }
             File.Copy(file.FullName,
                 ".minecraft\\libraries\\" + importName + "\\" + file.Name.Substring(0, file.Name.Length - 4) +
                 "\\BMCL\\" + file.Name.Substring(0, file.Name.Length - 4) + "-BMCL.jar");
             libfile.name = importName + ":" + file.Name.Substring(0, file.Name.Length - 4) + ":BMCL";
             libs.Add(libfile);
         }
         var nativejar = new ICSharpCode.SharpZipLib.Zip.FastZip();
         if (!Directory.Exists(".minecraft\\libraries\\" + importName + "\\BMCL\\"))
         {
             Directory.CreateDirectory(".minecraft\\libraries\\" + importName + "\\native\\BMCL\\");
         }
         nativejar.CreateZip(
             ".minecraft\\libraries\\" + importName + "\\native\\BMCL\\native-BMCL-natives-windows.jar",
             importFrom + "\\bin\\natives", false, @"\.dll");
         var nativefile = new libraries.libraryies {name = importName + ":native:BMCL"};
         var nativeos = new libraries.OS {windows = "natives-windows"};
         nativefile.natives = nativeos;
         nativefile.extract = new libraries.extract();
         libs.Add(nativefile);
         info.libraries = (libraries.libraryies[]) libs.ToArray(typeof (libraries.libraryies));
         OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportWriteJson"));
         var wcfg = new FileStream(".minecraft\\versions\\" + importName + "\\" + importName + ".json",
             FileMode.Create);
         var infojson = new DataContractJsonSerializer(typeof (gameinfo));
         infojson.WriteObject(wcfg, info);
         wcfg.Close();
         OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportSolveLib"));
         if (Directory.Exists(importFrom + "\\lib"))
         {
             if (!Directory.Exists(".minecraft\\lib"))
             {
                 Directory.CreateDirectory(".minecraft\\lib");
             }
             foreach (
                 string libfile in Directory.GetFiles(importFrom + "\\lib", "*", SearchOption.AllDirectories))
             {
                 if (!File.Exists(".minecraft\\lib\\" + System.IO.Path.GetFileName(libfile)))
                 {
                     File.Copy(libfile, ".minecraft\\lib\\" + System.IO.Path.GetFileName(libfile));
                 }
             }
         }
         OnImportProgressChangeEvent(LangManager.GetLangFromResource("ImportSolveMod"));
         if (Directory.Exists(importFrom + "\\mods"))
             util.FileHelper.dircopy(importFrom + "\\mods", ".minecraft\\versions\\" + importName + "\\mods");
         else
             Directory.CreateDirectory(".minecraft\\versions\\" + importName + "\\mods");
         if (Directory.Exists(importFrom + "\\coremods"))
             util.FileHelper.dircopy(importFrom + "\\coremods",
                 ".minecraft\\versions\\" + importName + "\\coremods");
         else
             Directory.CreateDirectory(".minecraft\\versions\\" + importName + "\\coremods");
         if (Directory.Exists(importFrom + "\\config"))
             util.FileHelper.dircopy(importFrom + "\\config", ".minecraft\\versions\\" + importName + "\\config");
         else
             Directory.CreateDirectory(".minecraft\\versions\\" + importName + "\\configmods");
         OnImportFinish();
         if (callback != null)
         {
             BmclCore.Invoke(callback);
         }
     });
     thread.Start();
 }