123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Text.Json;
- using System.Threading.Tasks;
- namespace VeloeMinecraftLauncher.MinecraftLauncher
- {
- internal static class StartCommandBuilder
- {
- public static string Build(Entity.Version.Version version, string username)
- {
- var returnString = new StringBuilder();
- if (version is null)
- return returnString.ToString();
- if(Settings.setMaxRam)
- returnString.Append($"-Xmx{Settings.MaxRam}M ");
- //for forge
- if (version.inheritsFrom is null)
- returnString.Append($"-Djava.library.path={Settings.MinecraftForlderPath + "versions\\" + version.id + "\\natives\\"}");
- else
- returnString.Append($"-Djava.library.path={Settings.MinecraftForlderPath + "versions\\" + version.inheritsFrom + "\\natives\\"}");
- returnString.Append(" -cp ");
- foreach(var library in version.libraries)
- {
- if (library.natives is null)
- returnString.Append(Settings.MinecraftForlderPath + "libraries\\" + library.downloads.artifact.path.Replace("/", "\\") + ";");
- }
- //for forge
- Entity.Version.Version inheritsFrom = new();
- if (version.inheritsFrom is null)
- returnString.Append(Settings.MinecraftForlderPath + "versions/" + version.id + "/" + version.id + ".jar");
- else
- {
- var inheritsJsonString = File.ReadAllText(Settings.MinecraftForlderPath + "versions/" + version.inheritsFrom + "/" + version.inheritsFrom + ".json");
-
- inheritsFrom = JsonSerializer.Deserialize<Entity.Version.Version>(inheritsJsonString);
- foreach (var library in inheritsFrom.libraries)
- {
- if (library.natives is null)
- returnString.Append(Settings.MinecraftForlderPath + "libraries\\" + library.downloads.artifact.path.Replace("/", "\\") + ";");
-
- }
- returnString.Append(Settings.MinecraftForlderPath + "versions/" + version.inheritsFrom + "/" + version.inheritsFrom + ".jar");
- }
- returnString.Append(" " + version.mainClass);
- List<string> args = new List<string>();
- List<string> argsValues = new List<string>();
- if (version.arguments is not null)
- foreach (var argument in version.arguments.game)
- {
- if (argument is null)
- continue;
- var type = argument.GetType();
- if (!(argument is JsonElement))
- continue;
- if (!(((JsonElement)argument).ValueKind == JsonValueKind.String))
- continue;
- var value = ((JsonElement)argument).Deserialize(typeof(string));
- //if ()
- if (!(value as string).Contains("--"))
- {
- argsValues.Add(value as string);
- continue;
- }
- args.Add(value as string);
- }
- if (version.minecraftArguments is not null)
- {
- var minecraftArguments = version.minecraftArguments.Split(' ');
- //args = version.minecraftArguments.Split(' ').Where(x=> x.Contains("--")).ToList();
- for (int i = 0; i < minecraftArguments.Count(); i++)
- {
- if (minecraftArguments[i].Contains("--"))
- args.Add(minecraftArguments[i]);
- else
- argsValues.Add(minecraftArguments[i]);
- }
- }
- for (int i = 0; i < args.Count; i++)
- {
- switch (args[i])
- {
- case "--username":
- returnString.Append(" --username " + username);
- break;
- case "--version":
- returnString.Append(" --version " + "\"Copy of VeloeLauncher\"");
- break;
- case "--gameDir":
- //for forge
- if (!(argsValues.Where(x => x.Contains("forge")).Count() > 0 || argsValues.Where(x => x.Contains("fabric")).Count() > 0))
- returnString.Append(" --gameDir " + Settings.MinecraftForlderPath);
- else
- returnString.Append(" --gameDir " + Settings.MinecraftForlderPath + "versions\\" + version.id);
- break;
- case "--assetsDir":
- //for forge
- if (version.inheritsFrom is null)
- returnString.Append(" --assetsDir " + Settings.MinecraftForlderPath + "assets\\" + version.assets + "\\");
- else
- returnString.Append(" --assetsDir " + Settings.MinecraftForlderPath + "assets\\" + inheritsFrom.assets + "\\");
- break;
- case "--assetIndex":
- //for forge
- if (version.inheritsFrom is null)
- returnString.Append(" --assetIndex " + version.assets);
- else
- returnString.Append(" --assetIndex " + inheritsFrom.assets);
- break;
- case "--uuid":
- returnString.Append(" --uuid sample_token");
- break;
- case "--accessToken":
- returnString.Append(" --accessToken sample_token");
- break;
- case "--userType":
- returnString.Append(" --userType offline");
- break;
- case "--userProperties":
- returnString.Append(" --userProperties " + "{\"veloelauncher\":[\"wtfisthis\"]}");
- break;
- case "--versionType":
- returnString.Append(" --versionType " + version.type);
- break;
- case "--tweakClass":
- returnString.Append(" --tweakClass");
- if (argsValues[i] is not null)
- returnString.Append(" " + argsValues[i]);
- break;
- }
- }
- return returnString.ToString();
- }
- }
- }
|