Skip to content

Commit df9e9d4

Browse files
author
Tartilla_
committed
Fixed the error of opening the link when using .NET, not Framework
A temporary solution to the problem of launching 1.17+ permanently. Cleaning the code using the standard VS utility
1 parent a522738 commit df9e9d4

9 files changed

Lines changed: 63 additions & 62 deletions

File tree

CmlLib.Core.Installer.Forge/FLegacy.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
using CmlLib.Core.Downloader;
22
using ICSharpCode.SharpZipLib.Zip;
33
using Newtonsoft.Json.Linq;
4-
using System;
5-
using System.Collections.Generic;
64
using System.Diagnostics;
7-
using System.Linq;
8-
using System.Text;
9-
using System.Threading.Tasks;
105

116
namespace CmlLib.Core.Installer.Forge
127
{
@@ -39,7 +34,7 @@ public async Task<string> Install(string mcVersion, string forgeVersion, bool Al
3934

4035
var version_jar = minecraftPath.GetVersionJarPath(mcVersion); // get vanilla jar file
4136
var install_folder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); //create folder in temp
42-
37+
4338
await Parser.DownloadFile(mcVersion, forgeVersion, install_folder); //download forge version
4439
File.Copy(Path.Combine(install_folder, "installer.jar"), Path.Combine(install_folder, "version.zip"));
4540
new FastZip().ExtractZip(Path.Combine(install_folder, "version.zip"), install_folder, null); //unzip version
@@ -61,7 +56,7 @@ public async Task<string> Install(string mcVersion, string forgeVersion, bool Al
6156
setupFolderLegacy(mcVersion, forgeVersion, install_folder, version_name, version.ToString()); //copy version.json and forge.jar
6257

6358
//########################AD URL##############################
64-
Process.Start(Parser.getAdUrl()); //We support Forge developers!
59+
Process.Start(new ProcessStartInfo(Parser.getAdUrl()) { UseShellExecute = true });
6560
//########################AD URL##############################
6661

6762
await launcher.GetAllVersionsAsync(); //update version list

CmlLib.Core.Installer.Forge/FNewest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public async Task<string> Install(string mcVersion, string forgeVersion, bool Al
4747
setupFolder(mcVersion, forgeVersion, install_folder, version.ToString()); //copy version.json and forge.jar
4848

4949
//########################AD URL##############################
50-
Process.Start(Parser.getAdUrl()); //We support Forge developers!
50+
Process.Start(new ProcessStartInfo(Parser.getAdUrl()) { UseShellExecute = true });
5151
//########################AD URL##############################
5252

5353
await launcher.GetAllVersionsAsync(); //update version list

CmlLib.Core.Installer.Forge/ForgeLoader.cs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
using CmlLib.Core.Files;
33
using CmlLib.Utils;
44
using Newtonsoft.Json.Linq;
5-
using System;
6-
using System.Collections.Generic;
75
using System.Diagnostics;
86

97
namespace CmlLib.Core.Installer.Forge
@@ -17,15 +15,15 @@ public abstract class ForgeLoader : Func
1715
public event DownloadFileChangedHandler? FileChanged;
1816
public event EventHandler<string>? InstallerOutput;
1917

20-
public ForgeLoader(MinecraftPath minecraftPath, string JavaPath, CMLauncher launcher,
18+
public ForgeLoader(MinecraftPath minecraftPath, string JavaPath, CMLauncher launcher,
2119
IDownloader downloader, DownloadFileChangedHandler? FileChanged,
2220
EventHandler<string>? InstallerOutput)
2321
{
2422
this.minecraftPath = minecraftPath;
2523
this.JavaPath = JavaPath;
2624
this.downloader = downloader;
2725
this.launcher = launcher;
28-
this.FileChanged = FileChanged;
26+
this.FileChanged = FileChanged;
2927
this.InstallerOutput = InstallerOutput;
3028
}
3129

@@ -83,7 +81,7 @@ public Task checkLibraries(JArray? jarr)
8381
}
8482

8583
public Dictionary<string, string?> mapping(JObject data, string kind,
86-
string minecraftJar, string installerPath)
84+
string minecraftJar, string install_folder)
8785
{
8886
var dataMapping = new Dictionary<string, string?>();
8987
foreach (var item in data)
@@ -98,14 +96,15 @@ public Task checkLibraries(JArray? jarr)
9896
if (fullPath == value)
9997
{
10098
value = value.Trim('/');
101-
dataMapping.Add(key, Path.Combine(installerPath, value));
99+
dataMapping.Add(key, Path.Combine(install_folder, value));
102100
}
103101
else
104102
dataMapping.Add(key, fullPath);
105103
}
106104

107-
dataMapping.Add("SIDE", "CLIENT");
105+
dataMapping.Add("SIDE", "client");
108106
dataMapping.Add("MINECRAFT_JAR", minecraftJar);
107+
dataMapping.Add("INSTALLER", Path.Combine(install_folder, "installer.jar"));
109108

110109
return dataMapping;
111110
}
@@ -196,9 +195,6 @@ public void startProcessor(JToken processor, Dictionary<string, string?> mapData
196195

197196
public void startJava(string[] classpath, string mainClass, string[]? args, string install_folder)
198197
{
199-
for (int i = 0; i < args.Length; i++)
200-
if (args[i] == "{INSTALLER}")
201-
args[i] = args[i].Replace("{INSTALLER}", Path.Combine(install_folder, "installer.jar"));
202198
var arg =
203199
$"-cp {IOUtil.CombinePath(classpath)} " +
204200
$"{mainClass}";
@@ -210,7 +206,7 @@ public void startJava(string[] classpath, string mainClass, string[]? args, stri
210206
process.StartInfo = new ProcessStartInfo()
211207
{
212208
FileName = JavaPath,
213-
Arguments = arg.Replace("--side CLIENT", "--side client"), //fix installertools bug
209+
Arguments = arg,
214210
};
215211

216212
var p = new ProcessUtil(process);

CmlLib.Core.Installer.Forge/ForgeVersionFile.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
using CmlLib.Core.Installer.Forge;
2-
3-
public class ForgeVersionFile
1+
public class ForgeVersionFile
42
{
53
public string? MD5 { get; set; }
64
public string? SHA1 { get; set; }

CmlLib.Core.Installer.Forge/Func.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-

2-
using System;
3-
using System.Collections.Generic;
4-
using System.Linq;
5-
using System.Text;
6-
using System.Threading.Tasks;
7-
8-
namespace CmlLib.Core.Installer.Forge
1+
namespace CmlLib.Core.Installer.Forge
92
{
103
public class Func
114
{

CmlLib.Core.Installer.Forge/IOUtil.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
using System;
2-
using System.IO;
3-
using System.Linq;
4-
using System.Text;
5-
using System.Threading.Tasks;
1+
using System.Text;
62

73
namespace CmlLib.Utils
84
{

CmlLib.Core.Installer.Forge/MForge.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public async Task<string> Install(string mcVersion, string forgeVersion, bool Al
3535
var newest = new FNewest(minecraftPath, JavaPath, launcher, downloader, FileChanged, InstallerOutput);
3636
return await newest.Install(mcVersion, forgeVersion, AlwaysUpdate);
3737
}
38-
38+
3939
private void fireEvent(MFile kind, string name, int total, int progressed)
4040
{
4141
FileChanged?.Invoke(new DownloadFileChangedEventArgs(kind, this, name, total, progressed));

CmlLib.Core.Installer.Forge/Parser.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
using HtmlAgilityPack;
2-
using System;
3-
using System.Collections.Generic;
4-
using System.Linq;
5-
using System.Net.Http;
62
using System.Security.Cryptography;
7-
using System.Text;
8-
using System.Threading.Tasks;
93

104
namespace CmlLib.Core.Installer.Forge
115
{

SampleForgeInstaller/Program.cs

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,52 @@
11
using CmlLib.Core.Installer.Forge;
2+
using CmlLib.Core;
3+
using CmlLib.Core.Auth;
24

3-
var httpClient = new HttpClient();
4-
var forgeVersionLoader = new ForgeVersionLoader(httpClient);
5-
var result = await forgeVersionLoader.GetForgeVersions("1.12.2");
6-
foreach (var v in result)
5+
var path = new MinecraftPath("C:\\Users\\semoy\\minecraft"); // use default directory
6+
7+
var launcher = new CMLauncher(path);
8+
9+
// show launch progress to console
10+
launcher.FileChanged += (e) => Console.WriteLine($"[{e.FileKind.ToString()}] {e.FileName} - {e.ProgressedFileCount}/{e.TotalFileCount}");
11+
launcher.ProgressChanged += (s, e) => Console.WriteLine($"{e.ProgressPercentage}%");
12+
13+
//Initialize variables with the Minecraft version and the Forge version
14+
var mcVersion = "1.20.1";
15+
var forgeVersion = "47.0.35";
16+
17+
//Initialize MForge
18+
var forge = new MForge(path, launcher);
19+
var version_name = await forge.Install(mcVersion, forgeVersion); //Use await in the asynchronous method
20+
//OR var version_name = forge.Install(mcVersion, forgeVersion).GetAwaiter().GetResult();
21+
22+
//Start MineCraft
23+
var launchOption = new MLaunchOption
724
{
8-
Console.WriteLine("MinecraftVersionName : " + v.MinecraftVersionName);
9-
Console.WriteLine("ForgeVersionName : " + v.ForgeVersionName);
10-
Console.WriteLine("Time : " + v.Time);
11-
if (v.Files != null)
12-
{
13-
foreach (var f in v.Files)
14-
{
15-
Console.WriteLine("Type : " + f.Type);
16-
Console.WriteLine("AdUrl : " + f.AdUrl);
17-
Console.WriteLine("DirectUrl : " + f.DirectUrl);
18-
Console.WriteLine("MD5 : " + f.MD5);
19-
Console.WriteLine("SHA1 : " + f.SHA1);
20-
}
21-
}
22-
Console.WriteLine();
23-
}
25+
MaximumRamMb = 1024,
26+
Session = MSession.GetOfflineSession("TaiogStudio"),
27+
};
28+
29+
var process = launcher.CreateProcess(version_name, launchOption);
30+
process.Start();
31+
32+
//var httpClient = new HttpClient();
33+
//var forgeVersionLoader = new ForgeVersionLoader(httpClient);
34+
//var result = await forgeVersionLoader.GetForgeVersions("1.12.2");
35+
//foreach (var v in result)
36+
//{
37+
// Console.WriteLine("MinecraftVersionName : " + v.MinecraftVersionName);
38+
// Console.WriteLine("ForgeVersionName : " + v.ForgeVersionName);
39+
// Console.WriteLine("Time : " + v.Time);
40+
// if (v.Files != null)
41+
// {
42+
// foreach (var f in v.Files)
43+
// {
44+
// Console.WriteLine("Type : " + f.Type);
45+
// Console.WriteLine("AdUrl : " + f.AdUrl);
46+
// Console.WriteLine("DirectUrl : " + f.DirectUrl);
47+
// Console.WriteLine("MD5 : " + f.MD5);
48+
// Console.WriteLine("SHA1 : " + f.SHA1);
49+
// }
50+
// }
51+
// Console.WriteLine();
52+
//}

0 commit comments

Comments
 (0)