Skip to content
This repository has been archived by the owner on Jul 31, 2024. It is now read-only.

Commit

Permalink
🐛 导入设置改为UTF-8编码的十六进制字符串
Browse files Browse the repository at this point in the history
  • Loading branch information
DaiYu-233 committed May 12, 2024
1 parent 595a8aa commit e4abc13
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ Yu Minecraft Launcher (YMCL) 是使用 [.NET 8.0](https://dotnet.microsoft.com/z

```UrlScheme
#参数内不可包含特殊字符,如包含空格需使用单引号。[参数]必须,<参数>可选。
#在终端中使用:start ymcl://"<参数>"/
ymcl://<参数>/ #参数格式,示例:"ymcl://--launch 1.12.2/"
#在终端中使用:start ymcl://"<参数>"
ymcl://<参数> #参数格式,示例:ymcl://--launch 1.12.2
--launch [version] <minecraftFolder> <serverIP> #启动Minecraft
--import setting [json(base64格式)] #导入启动器设置
--import setting [json(UTF-8编码的十六进制字符串)] #导入启动器设置,json示例:796d636c(ymcl)
```
## 开源项目使用

Expand Down
2 changes: 1 addition & 1 deletion YMCL.Main/Properties/launchSettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"profiles": {
"YMCL.Main": {
"commandName": "Project",
"commandLineArgs": "ymcl://\"--import setting 'ew0KICAiR2FtZVdpZHRoIjogODU0LjAsDQogICJHYW1lSGVpZ2h0IjogNDgwLjAsDQogICJNYWluV2lkdGgiOiAxMTk0LjAsDQogICJNYWluSGVpZ2h0IjogNjgzLjAsDQogICJMYW5ndWFnZSI6ICJ6aC1DTiIsDQogICJNaW5lY3JhZnRGb2xkZXIiOiAiXFxcXDEyNy4wLjAuMVxcU2hhcmVcXFlNQ0xcXC5taW5lY3JhZnQiLA0KICAiTWluZWNyYWZ0VmVyc2lvbklkIjogbnVsbCwNCiAgIkN1c3RvbUhvbWVQYWdlTmV0WGFtbFVybCI6ICIiLA0KICAiQ3VzdG9tSG9tZVBhZ2VOZXRDU2hhcnBVcmwiOiAiIiwNCiAgIkphdmEiOiB7DQogICAgIklzNjRCaXQiOiBmYWxzZSwNCiAgICAiSmF2YVBhdGgiOiAiPEF1dG8+IiwNCiAgICAiSmF2YVZlcnNpb24iOiBudWxsLA0KICAgICJKYXZhU2x1Z1ZlcnNpb24iOiAwLA0KICAgICJKYXZhRGlyZWN0b3J5UGF0aCI6IG51bGwNCiAgfSwNCiAgIkFjY291bnRTZWxlY3Rpb25JbmRleCI6IDAsDQogICJNYXhNZW0iOiAxNDkyLjAsDQogICJBbG9uZUNvcmUiOiBmYWxzZSwNCiAgIkdldE91dHB1dCI6IHRydWUsDQogICJNYXhEb3dubG9hZFRocmVhZCI6IDU5LjAsDQogICJUaGVtZSI6IDAsDQogICJUaGVtZUNvbG9yIjogIiNGRjBEQzBBNSIsDQogICJDdXN0b21Ib21lUGFnZSI6IDAsDQogICJHYW1lV2luZG93IjogMCwNCiAgIkRvd25sb2FkU291cmNlIjogMSwNCiAgIlBsYXllclJlcGVhdCI6IDEsDQogICJEZXNrdG9wTHlyaWNUZXh0QWxpZ25tZW50IjogMSwNCiAgIkRlc2t0b3BMeXJpY1RleHRTaXplIjogMTYuMA0KfQ=='\"/"
"commandLineArgs": "ymcl://\"--import setting '7b0a20202247616d655769647468223a203835342e302c0a20202247616d65486569676874223a203438302e302c0a2020224d61696e5769647468223a20313139342e302c0a2020224d61696e486569676874223a203638332e302c0a2020224c616e6775616765223a20227a682d434e222c0a2020224d696e656372616674466f6c646572223a20225c5c5c5c3132372e302e302e315c5c53686172655c5c594d434c5c5c2e6d696e656372616674222c0a2020224d696e65637261667456657273696f6e4964223a206e756c6c2c0a202022437573746f6d486f6d65506167654e657458616d6c55726c223a2022222c0a202022437573746f6d486f6d65506167654e657443536861727055726c223a2022222c0a2020224a617661223a207b0a202020202249733634426974223a2066616c73652c0a20202020224a61766150617468223a20223c4175746f3e222c0a20202020224a61766156657273696f6e223a206e756c6c2c0a20202020224a617661536c756756657273696f6e223a20302c0a20202020224a6176614469726563746f727950617468223a206e756c6c0a20207d2c0a2020224163636f756e7453656c656374696f6e496e646578223a20302c0a2020224d61784d656d223a20313439322e302c0a202022416c6f6e65436f7265223a2066616c73652c0a2020224765744f7574707574223a20747275652c0a2020224d6178446f776e6c6f6164546872656164223a2035392e302c0a2020225468656d65223a20302c0a2020225468656d65436f6c6f72223a2022234646304443304135222c0a202022437573746f6d486f6d6550616765223a20302c0a20202247616d6557696e646f77223a20302c0a202022446f776e6c6f6164536f75726365223a20312c0a202022506c61796572526570656174223a20312c0a2020224465736b746f704c7972696354657874416c69676e6d656e74223a20312c0a2020224465736b746f704c797269635465787453697a65223a2031362e300a7d'\""
}
}
}
17 changes: 12 additions & 5 deletions YMCL.Main/Public/Method.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
using System.Text.RegularExpressions;
using System.Windows.Media.Imaging;
using YMCL.Main.Public.Lang;
using YMCL.Main.Views.Main.Pages.Download.Pages.Mods;

namespace YMCL.Main.Public
{
Expand All @@ -16,8 +15,12 @@ internal class Method
public static void ParameterProcessing()
{
if (App.StartupArgs.Length == 0) return;
var urlScheme = App.StartupArgs[0];
urlScheme = urlScheme.Substring(7, urlScheme.Length - 8).Trim('"');
MessageBoxX.Show(App.StartupArgs[0]);
var urlScheme = System.Web.HttpUtility.UrlDecode(App.StartupArgs[0]);
urlScheme = urlScheme.Substring(7).Trim('"');
if (urlScheme.EndsWith("/"))
urlScheme = urlScheme.TrimEnd('/');
MessageBoxX.Show(urlScheme);
foreach (Match match in Regex.Matches(urlScheme, @"--\w+(\s+('[^']*'|[^'\s]+))*?(?=\s*--\w+|$)"))
{
var value = match.Value.Trim().Substring(2, match.Value.Trim().Length - 2);
Expand Down Expand Up @@ -48,8 +51,12 @@ public static void ParameterProcessing()
case "import":
if (parameters[0] == "setting")
{
var base64 = parameters[1].ToString();
var data = Encoding.UTF8.GetString(Convert.FromBase64String(base64));
var hexString = parameters[1];
byte[] hexBytes = Enumerable.Range(0, hexString.Length / 2)
.Select(i => Convert.ToByte(hexString.Substring(i * 2, 2), 16))
.ToArray();
string data = Encoding.ASCII.GetString(hexBytes);
MessageBoxX.Show(data);
var source = JObject.FromObject(JsonConvert.DeserializeObject<Class.Setting>(File.ReadAllText(Const.SettingDataPath)));
var import = JObject.Parse(data);
source.Merge(import, new JsonMergeSettings
Expand Down

0 comments on commit e4abc13

Please sign in to comment.