From 95af0222f333622e26501173cbe2909cf0413f5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=97=E5=AE=AB=E4=B8=B4=E9=A3=8E?= Date: Thu, 7 Jul 2016 14:32:35 +0800 Subject: [PATCH] update dynamic provider --- HMCL/build.gradle | 2 +- .../launcher/core/download/DownloadType.java | 2 +- .../download/DynamicDownloadProvider.java | 81 +++++++++++-------- .../launcher/ui/LauncherSettingsPanel.form | 2 +- .../launcher/ui/LauncherSettingsPanel.java | 2 +- HMCL/version.properties | 4 +- .../jackhuang/hellominecraft/lang/I18N.lang | 2 +- .../hellominecraft/lang/I18N.properties | 2 +- .../hellominecraft/lang/I18N_en.lang | 2 +- .../hellominecraft/lang/I18N_en.properties | 2 +- .../hellominecraft/lang/I18N_zh_TW.lang | 2 +- .../hellominecraft/lang/I18N_zh_TW.properties | 2 +- 12 files changed, 58 insertions(+), 47 deletions(-) diff --git a/HMCL/build.gradle b/HMCL/build.gradle index 7fb9f2de6..d6864df76 100755 --- a/HMCL/build.gradle +++ b/HMCL/build.gradle @@ -71,7 +71,7 @@ if (buildnumber == null) def versionroot = System.getenv("VERSION_ROOT") if (versionroot == null) - versionroot = "2.4.2" + versionroot = "2.5.0" String mavenGroupId = 'HMCL' String mavenVersion = versionroot + '.' + buildnumber diff --git a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/download/DownloadType.java b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/download/DownloadType.java index 14e1711e6..c9dadd4c8 100755 --- a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/download/DownloadType.java +++ b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/download/DownloadType.java @@ -30,7 +30,7 @@ public enum DownloadType { BMCL("download.BMCL", new BMCLAPIDownloadProvider()), //RapidData("download.rapid_data", new RapidDataDownloadProvider()), Curse("Curse CDN", new CurseDownloadProvider()), - Dynamic(DynamicDownloadProvider.getInstance().getName(), DynamicDownloadProvider.getInstance()); + Dynamic("HMCLSoft", DynamicDownloadProvider.getInstance()); private final String name; private final IDownloadProvider provider; diff --git a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/download/DynamicDownloadProvider.java b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/download/DynamicDownloadProvider.java index cb772d9e2..0c6535e78 100644 --- a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/download/DynamicDownloadProvider.java +++ b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/download/DynamicDownloadProvider.java @@ -31,37 +31,35 @@ import org.jackhuang.hellominecraft.util.StrUtils; public class DynamicDownloadProvider extends MojangDownloadProvider { private static final String PROVIDER_ADDR = "http://client.api.mcgogogo.com:81/provider.php"; - + private volatile static DynamicDownloadProvider instance; + private String versionManifestAddr = null; + private String launcherMetaAddr = null; + private String launcherAddr = null; + private String librariesAddr = null; private String assetsAddr = null; - private String name = "精灵"; - - public void setName(String name) { - this.name = name; - } - public String getName() { - return name; + public void setVersionManifestAddr(String versionManifestAddr) { + this.versionManifestAddr = versionManifestAddr; } - public String getLibrariesAddr() { - return librariesAddr; + public void setLauncherMetaAddr(String launcherMetaAddr) { + this.launcherMetaAddr = launcherMetaAddr; + } + + public void setLauncherAddr(String launcherAddr) { + this.launcherAddr = launcherAddr; } public void setLibrariesAddr(String librariesAddr) { this.librariesAddr = librariesAddr; } - public String getAssetsAddr() { - return assetsAddr; - } - public void setAssetsAddr(String assetsAddr) { this.assetsAddr = assetsAddr; } - private DynamicDownloadProvider() { @@ -87,7 +85,7 @@ public class DynamicDownloadProvider extends MojangDownloadProvider { public String getRetryLibraryDownloadURL() { return super.getLibraryDownloadURL(); } - + @Override public String getAssetsDownloadURL() { if (StrUtils.isNotBlank(assetsAddr)) { @@ -104,41 +102,54 @@ public class DynamicDownloadProvider extends MojangDownloadProvider { return super.getLibraryDownloadURL(); } + @Override + public String getVersionsListDownloadURL() { + if (StrUtils.isNotBlank(versionManifestAddr)) { + return versionManifestAddr; + } + return super.getVersionsListDownloadURL(); + } + @Override public String getParsedDownloadURL(String str) { if (StrUtils.isNotBlank(librariesAddr)) { str = str.replace("https://libraries.minecraft.net", librariesAddr); } + if (StrUtils.isNotBlank(launcherMetaAddr)) { + str = str.replace("https://launchermeta.mojang.com", launcherMetaAddr); + } + if (StrUtils.isNotBlank(launcherMetaAddr)) { + str = str.replace("https://launcher.mojang.com", launcherAddr); + } return super.getParsedDownloadURL(str); } public void init() { new Thread() { + + private String getValue(Map addrInfo, String key) { + String value = null; + do { + if (!addrInfo.containsKey(key)) + continue; + value = addrInfo.get(key); + } while(false); + return value; + } + @Override public void run() { try { String providerInfo = NetUtils.get(PROVIDER_ADDR); Map addrInfo = null; - addrInfo = C.GSON.fromJson(providerInfo, new TypeToken>(){}.getType()); + addrInfo = C.GSON.fromJson(providerInfo, new TypeToken>() { + }.getType()); if (addrInfo != null) { - if (addrInfo.containsKey("libraries")) { - String librariesAddr = addrInfo.get("libraries"); - if (StrUtils.isNotBlank(librariesAddr)) { - DynamicDownloadProvider.this.setLibrariesAddr(librariesAddr); - } - } - if (addrInfo.containsKey("assets")) { - String assetsAddr = addrInfo.get("assets"); - if (StrUtils.isNotBlank(assetsAddr)) { - DynamicDownloadProvider.this.setAssetsAddr(assetsAddr); - } - } - if (addrInfo.containsKey("name")) { - String name = addrInfo.get("name"); - if (StrUtils.isNotBlank(name)) { - DynamicDownloadProvider.this.setName(name); - } - } + setLibrariesAddr(getValue(addrInfo, "libraries")); + setAssetsAddr(getValue(addrInfo, "assets")); + setLauncherMetaAddr(getValue(addrInfo, "launcherMeta")); + setLauncherAddr(getValue(addrInfo, "launcher")); + setVersionManifestAddr(getValue(addrInfo, "versionManifest")); } } catch (IOException ex) { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.form index 553e2e43d..e63183c93 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.form +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.form @@ -131,7 +131,7 @@ - + diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.java index 11c8c034c..29ebfbc13 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/LauncherSettingsPanel.java @@ -349,7 +349,7 @@ public class LauncherSettingsPanel extends AnimatedPanel { .addComponent(btnMCBBS)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lblRestart) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 80, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 134, Short.MAX_VALUE) .addComponent(lblModpack, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lblAbout, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) diff --git a/HMCL/version.properties b/HMCL/version.properties index c76f53efc..600781aa7 100644 --- a/HMCL/version.properties +++ b/HMCL/version.properties @@ -1,2 +1,2 @@ -#Tue Jul 05 12:01:21 CST 2016 -VERSION_CODE=63 +#Thu Jul 07 14:30:49 CST 2016 +VERSION_CODE=92 diff --git a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.lang b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.lang index 069c0526e..783e5efc9 100755 --- a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.lang +++ b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.lang @@ -299,7 +299,7 @@ mainwindow.enter_script_name=输入要生成脚本的文件名 mainwindow.make_launch_succeed=启动脚本已生成完毕: mainwindow.no_version=未找到任何版本,是否进入游戏下载? -launcher.about=默认背景图感谢gamerteam提供。
关于作者:
百度ID:huanghongxun20
mcbbs:huanghongxun
邮箱:huanghongxun2008@126.com
Minecraft Forum ID: klkl6523
欢迎提交Bug哦
Copyright (c) 2013-2016 huangyuhui.
免责声明:Minecraft软件版权归Mojang AB所有,使用本软件产生的版权问题本软件制作方概不负责。
本启动器在GPLv3协议下开源:https://github.com/huanghongxun/HMCL/ ,感谢issues和pull requests贡献者
本软件使用了基于Apache License 2.0的Gson项目,感谢贡献者。 +launcher.about=默认背景图感谢gamerteam提供。
关于作者:
邮箱:contact@hmclsoft.com
欢迎提交Bug哦
Copyright (c) 2013-2016 HMCLSoft.
免责声明:Minecraft软件版权归Mojang AB所有,使用本软件产生的版权问题本软件制作方概不负责。
本启动器在GPLv3协议下开源:https://github.com/mclauncher/HMCL,感谢issues和pull requests贡献者
本软件使用了基于Apache License 2.0的Gson项目,感谢贡献者。 launcher.download_source=下载源 launcher.background_location=背景地址 launcher.exit_failed=强制退出失败,可能是Forge 1.7.10及更高版本导致的,无法解决。 diff --git a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.properties b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.properties index 19cf4ec34..9a97e85c5 100755 --- a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.properties +++ b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.properties @@ -299,7 +299,7 @@ mainwindow.enter_script_name=\u8f93\u5165\u8981\u751f\u6210\u811a\u672c\u7684\u6 mainwindow.make_launch_succeed=\u542f\u52a8\u811a\u672c\u5df2\u751f\u6210\u5b8c\u6bd5: mainwindow.no_version=\u672a\u627e\u5230\u4efb\u4f55\u7248\u672c\uff0c\u662f\u5426\u8fdb\u5165\u6e38\u620f\u4e0b\u8f7d\uff1f -launcher.about=\u9ed8\u8ba4\u80cc\u666f\u56fe\u611f\u8c22gamerteam\u63d0\u4f9b\u3002
\u5173\u4e8e\u4f5c\u8005\uff1a
\u767e\u5ea6ID\uff1ahuanghongxun20
mcbbs\uff1ahuanghongxun
\u90ae\u7bb1\uff1ahuanghongxun2008@126.com
Minecraft Forum ID: klkl6523
\u6b22\u8fce\u63d0\u4ea4Bug\u54e6
Copyright (c) 2013-2016 huangyuhui.
\u514d\u8d23\u58f0\u660e\uff1aMinecraft\u8f6f\u4ef6\u7248\u6743\u5f52Mojang AB\u6240\u6709\uff0c\u4f7f\u7528\u672c\u8f6f\u4ef6\u4ea7\u751f\u7684\u7248\u6743\u95ee\u9898\u672c\u8f6f\u4ef6\u5236\u4f5c\u65b9\u6982\u4e0d\u8d1f\u8d23\u3002
\u672c\u542f\u52a8\u5668\u5728GPLv3\u534f\u8bae\u4e0b\u5f00\u6e90:https://github.com/huanghongxun/HMCL/ ,\u611f\u8c22issues\u548cpull requests\u8d21\u732e\u8005
\u672c\u8f6f\u4ef6\u4f7f\u7528\u4e86\u57fa\u4e8eApache License 2.0\u7684Gson\u9879\u76ee\uff0c\u611f\u8c22\u8d21\u732e\u8005\u3002 +launcher.about=\u9ed8\u8ba4\u80cc\u666f\u56fe\u611f\u8c22gamerteam\u63d0\u4f9b\u3002
\u5173\u4e8e\u4f5c\u8005\uff1a
\u90ae\u7bb1\uff1acontact@hmclsoft.com
\u6b22\u8fce\u63d0\u4ea4Bug\u54e6
Copyright (c) 2013-2016 HMCLSoft.
\u514d\u8d23\u58f0\u660e\uff1aMinecraft\u8f6f\u4ef6\u7248\u6743\u5f52Mojang AB\u6240\u6709\uff0c\u4f7f\u7528\u672c\u8f6f\u4ef6\u4ea7\u751f\u7684\u7248\u6743\u95ee\u9898\u672c\u8f6f\u4ef6\u5236\u4f5c\u65b9\u6982\u4e0d\u8d1f\u8d23\u3002
\u672c\u542f\u52a8\u5668\u5728GPLv3\u534f\u8bae\u4e0b\u5f00\u6e90\uff1ahttps://github.com/mclauncher/HMCL\uff0c\u611f\u8c22issues\u548cpull requests\u8d21\u732e\u8005
\u672c\u8f6f\u4ef6\u4f7f\u7528\u4e86\u57fa\u4e8eApache License 2.0\u7684Gson\u9879\u76ee\uff0c\u611f\u8c22\u8d21\u732e\u8005\u3002 launcher.download_source=\u4e0b\u8f7d\u6e90 launcher.background_location=\u80cc\u666f\u5730\u5740 launcher.exit_failed=\u5f3a\u5236\u9000\u51fa\u5931\u8d25\uff0c\u53ef\u80fd\u662fForge 1.7.10\u53ca\u66f4\u9ad8\u7248\u672c\u5bfc\u81f4\u7684\uff0c\u65e0\u6cd5\u89e3\u51b3\u3002 diff --git a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_en.lang b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_en.lang index 45306da46..ae6fb1bdb 100755 --- a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_en.lang +++ b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_en.lang @@ -299,7 +299,7 @@ mainwindow.enter_script_name=Enter the script name. mainwindow.make_launch_succeed=Finished script creation. mainwindow.no_version=No version found. Switch to Game Downloads Tab? -launcher.about=About Author
Email:huanghongxun2008@126.com
Minecraft Forum ID: klkl6523
Copyright (c) 2013 huangyuhui
Opened source under GPL v3 license:http://github.com/huanghongxun/HMCL/
This software used project Gson which is under Apache License 2.0, thanks contributors. +launcher.about=About Author
Email: contact@hmclsoft.com
Copyright (c) 2013 HMCLSoft.
Opened source under GPL v3 license: http://github.com/mclauncher/HMCL
This software used project Gson which is under Apache License 2.0, thanks contributors. launcher.download_source=Download Source launcher.background_location=Background Location launcher.exit_failed=Failed to shutdown. diff --git a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_en.properties b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_en.properties index 97ff8ee36..ae6fb1bdb 100755 --- a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_en.properties +++ b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_en.properties @@ -299,7 +299,7 @@ mainwindow.enter_script_name=Enter the script name. mainwindow.make_launch_succeed=Finished script creation. mainwindow.no_version=No version found. Switch to Game Downloads Tab? -launcher.about=About Author
Email\uff1ahuanghongxun2008@126.com
Minecraft Forum ID: klkl6523
Copyright (c) 2013 huangyuhui
Opened source under GPL v3 license:http://github.com/huanghongxun/HMCL/
This software used project Gson which is under Apache License 2.0, thanks contributors. +launcher.about=About Author
Email: contact@hmclsoft.com
Copyright (c) 2013 HMCLSoft.
Opened source under GPL v3 license: http://github.com/mclauncher/HMCL
This software used project Gson which is under Apache License 2.0, thanks contributors. launcher.download_source=Download Source launcher.background_location=Background Location launcher.exit_failed=Failed to shutdown. diff --git a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_zh_TW.lang b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_zh_TW.lang index 26f4c847a..49abdb985 100755 --- a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_zh_TW.lang +++ b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_zh_TW.lang @@ -299,7 +299,7 @@ mainwindow.enter_script_name=輸入要生成腳本的資料名 mainwindow.make_launch_succeed=啟動腳本已生成完畢: mainwindow.no_version=未找到任何版本,是否進入遊戲下載? -launcher.about=默認背景圖感謝gamerteam提供。
關於作者:
百度ID:huanghongxun20
mcbbs:huanghongxun
郵箱:huanghongxun2008@126.com
Minecraft Forum ID: klkl6523
歡迎提交Bug哦
Copyright (c) 2013-2016 huangyuhui.
免責聲明:Minecraft軟體版權歸Mojang AB所有,遊戲由於誤操作本啟動器而丟失數據的概不負責。
本啟動器在GPLv3協議下開源:http://github.com/huanghongxun/HMCL/ ,感谢issues和pull requests贡献者
本軟體使用了基於Apache License 2.0的Gson項目,感謝貢獻者。 +launcher.about=默認背景圖感謝gamerteam提供。
關於作者:
郵箱:contact@hmclsoft.com
歡迎提交Bug哦
Copyright (c) 2013-2016 HMCLSoft.
免責聲明:Minecraft軟體版權歸Mojang AB所有,遊戲由於誤操作本啟動器而丟失數據的概不負責。
本啟動器在GPLv3協議下開源:http://github.com/huanghongxun/HMCL,感谢issues和pull requests贡献者
本軟體使用了基於Apache License 2.0的Gson項目,感謝貢獻者。 launcher.download_source=下載源 launcher.background_location=背景地址 launcher.exit_failed=強制退出失敗,可能是Forge 1.7.10及更高版本導致的,無法解決。 diff --git a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_zh_TW.properties b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_zh_TW.properties index dd02f34b6..d1da548e3 100755 --- a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_zh_TW.properties +++ b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_zh_TW.properties @@ -299,7 +299,7 @@ mainwindow.enter_script_name=\u8f38\u5165\u8981\u751f\u6210\u8173\u672c\u7684\u8 mainwindow.make_launch_succeed=\u555f\u52d5\u8173\u672c\u5df2\u751f\u6210\u5b8c\u7562: mainwindow.no_version=\u672a\u627e\u5230\u4efb\u4f55\u7248\u672c\uff0c\u662f\u5426\u9032\u5165\u904a\u6232\u4e0b\u8f09\uff1f -launcher.about=\u9ed8\u8a8d\u80cc\u666f\u5716\u611f\u8b1dgamerteam\u63d0\u4f9b\u3002
\u5982\u679c\u60a8\u5e0c\u671b\u672c\u8edf\u4ef6\u7e7c\u7e8c\u767c\u5c55\uff0c\u8acb\u8d0a\u52a9
\u95dc\u65bc\u4f5c\u8005\uff1a
\u767e\u5ea6ID\uff1ahuanghongxun20
mcbbs\uff1ahuanghongxun
\u90f5\u7bb1\uff1ahuanghongxun2008@126.com
Minecraft Forum ID: klkl6523
\u6b61\u8fce\u63d0\u4ea4Bug\u54e6
Copyright (c) 2013-2016 huangyuhui.
\u514d\u8cac\u8072\u660e\uff1aMinecraft\u8edf\u9ad4\u7248\u6b0a\u6b78Mojang AB\u6240\u6709\uff0c\u904a\u6232\u7531\u65bc\u8aa4\u64cd\u4f5c\u672c\u555f\u52d5\u5668\u800c\u4e1f\u5931\u6578\u64da\u7684\u6982\u4e0d\u8ca0\u8cac\u3002
\u672c\u555f\u52d5\u5668\u5728GPLv3\u5354\u8b70\u4e0b\u958b\u6e90:http://github.com/huanghongxun/HMCL/ ,\u611f\u8c22issues\u548cpull requests\u8d21\u732e\u8005
\u672c\u8edf\u9ad4\u4f7f\u7528\u4e86\u57fa\u65bcApache License 2.0\u7684Gson\u9805\u76ee\uff0c\u611f\u8b1d\u8ca2\u737b\u8005\u3002 +launcher.about=\u9ed8\u8a8d\u80cc\u666f\u5716\u611f\u8b1dgamerteam\u63d0\u4f9b\u3002
\u95dc\u65bc\u4f5c\u8005\uff1a
\u90f5\u7bb1\uff1acontact@hmclsoft.com
\u6b61\u8fce\u63d0\u4ea4Bug\u54e6
Copyright (c) 2013-2016 HMCLSoft.
\u514d\u8cac\u8072\u660e\uff1aMinecraft\u8edf\u9ad4\u7248\u6b0a\u6b78Mojang AB\u6240\u6709\uff0c\u904a\u6232\u7531\u65bc\u8aa4\u64cd\u4f5c\u672c\u555f\u52d5\u5668\u800c\u4e1f\u5931\u6578\u64da\u7684\u6982\u4e0d\u8ca0\u8cac\u3002
\u672c\u555f\u52d5\u5668\u5728GPLv3\u5354\u8b70\u4e0b\u958b\u6e90\uff1ahttp://github.com/huanghongxun/HMCL\uff0c\u611f\u8c22issues\u548cpull requests\u8d21\u732e\u8005
\u672c\u8edf\u9ad4\u4f7f\u7528\u4e86\u57fa\u65bcApache License 2.0\u7684Gson\u9805\u76ee\uff0c\u611f\u8b1d\u8ca2\u737b\u8005\u3002 launcher.download_source=\u4e0b\u8f09\u6e90 launcher.background_location=\u80cc\u666f\u5730\u5740 launcher.exit_failed=\u5f37\u5236\u9000\u51fa\u5931\u6557\uff0c\u53ef\u80fd\u662fForge 1.7.10\u53ca\u66f4\u9ad8\u7248\u672c\u5c0e\u81f4\u7684\uff0c\u7121\u6cd5\u89e3\u6c7a\u3002