From 9ae010a39158f6c5933d9cd849b15a9ef56e75fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=97=E5=AE=AB=E4=B8=B4=E9=A3=8E?= Date: Mon, 27 Jun 2016 17:43:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E8=87=AA=E5=8A=A8=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E6=95=B0=E6=8D=AE=E6=8E=92=E5=BA=8F=20=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E4=B8=8B=E8=BD=BD=E8=A1=A8=E6=A0=BC=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E8=A1=A8=E5=A4=B4=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/install/InstallerVersionList.java | 165 ++++++++++-------- .../forge/MinecraftForgeVersionList.java | 7 +- .../launcher/ui/InstallerPanel.java | 150 +++++++++------- .../launcher/ui/LauncherSettingsPanel.form | 2 +- .../launcher/ui/LauncherSettingsPanel.java | 2 +- .../hellominecraft/launcher/ui/MainFrame.java | 2 +- .../jackhuang/hellominecraft/lang/I18N.lang | 2 +- .../hellominecraft/lang/I18N.properties | 2 +- .../hellominecraft/lang/I18N_zh_TW.lang | 2 +- 9 files changed, 190 insertions(+), 144 deletions(-) diff --git a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/install/InstallerVersionList.java b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/install/InstallerVersionList.java index 2aefcea2c..c7eb180d4 100755 --- a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/install/InstallerVersionList.java +++ b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/install/InstallerVersionList.java @@ -30,91 +30,110 @@ import org.jackhuang.hellominecraft.util.tasks.Task; */ public abstract class InstallerVersionList { - /** - * Refresh installer versions list from the downloaded content. - * - * @param versions Minecraft versions you need to refresh - * - * @throws java.lang.Exception including network exceptions, IO exceptions. - */ - public abstract Task refresh(String[] versions); + /** + * Refresh installer versions list from the downloaded content. + * + * @param versions Minecraft versions you need to refresh + * + * @throws java.lang.Exception including network exceptions, IO exceptions. + */ + public abstract Task refresh(String[] versions); - /** - * Installer name. - * - * @return installer name. - */ - public abstract String getName(); + /** + * Installer name. + * + * @return installer name. + */ + public abstract String getName(); - /** - * Get installers you want. - * - * @param mcVersion the installers to this Minecraft version. - * - * @return cached result. - */ - protected abstract List getVersionsImpl(String mcVersion); + /** + * Get installers you want. + * + * @param mcVersion the installers to this Minecraft version. + * + * @return cached result. + */ + protected abstract List getVersionsImpl(String mcVersion); - /** - * Get installers you want, please cache this method's result to save time. - * - * @param mcVersion the installers to this Minecraft version. - * - * @return a copy of the cached data to prevent - * ConcurrentModificationException. - */ - public List getVersions(String mcVersion) { - List a = getVersionsImpl(mcVersion); - if (a == null) - return null; - else - return new ArrayList<>(a); - } + /** + * Get installers you want, please cache this method's result to save time. + * + * @param mcVersion the installers to this Minecraft version. + * + * @return a copy of the cached data to prevent + * ConcurrentModificationException. + */ + public List getVersions(String mcVersion) { + List a = getVersionsImpl(mcVersion); + if (a == null) { + return null; + } else { + return new ArrayList<>(a); + } + } - public static class InstallerVersion implements Comparable { + public static int compareVersion(String verOne, String verTwo) { + String[] verInfoOne = verOne.split("\\."); + String[] verInfoTwo = verTwo.split("\\."); + int idx = 0; + int minLength = Math.min(verInfoOne.length, verInfoTwo.length); + int diff = 0; + while (idx < minLength + && (diff = verInfoOne[idx].length() - verInfoTwo[idx].length()) == 0 + && (diff = verInfoOne[idx].compareTo(verInfoTwo[idx])) == 0) { + ++idx; + } + diff = (diff != 0) ? diff : verInfoOne.length - verInfoTwo.length; + return (diff == 0) ? 0 : (diff < 0 ? -1 : 1); + } - public String selfVersion, mcVersion; - public String installer, universal; - public String changelog; + public static class InstallerVersion implements Comparable { - public InstallerVersion(String selfVersion, String mcVersion) { - this.selfVersion = selfVersion; - this.mcVersion = mcVersion; - } + public String selfVersion, mcVersion; + public String installer, universal; + public String changelog; - @Override - public int compareTo(InstallerVersion o) { - return selfVersion.compareTo(o.selfVersion); - } + public InstallerVersion(String selfVersion, String mcVersion) { + this.selfVersion = selfVersion; + this.mcVersion = mcVersion; + } - @Override - public int hashCode() { - return selfVersion.hashCode(); - } + @Override + public int compareTo(InstallerVersion o) { + return compareVersion(selfVersion, o.selfVersion); + } - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final InstallerVersion other = (InstallerVersion) obj; - return Objects.equals(this.selfVersion, other.selfVersion); - } + @Override + public int hashCode() { + return selfVersion.hashCode(); + } - } + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final InstallerVersion other = (InstallerVersion) obj; + return Objects.equals(this.selfVersion, other.selfVersion); + } - public static class InstallerVersionComparator implements Comparator, Serializable { + } - private static final long serialVersionUID = 3276198781795213723L; + public static class InstallerVersionComparator implements Comparator, Serializable { - public static final InstallerVersionComparator INSTANCE = new InstallerVersionComparator(); + private static final long serialVersionUID = 3276198781795213723L; - @Override - public int compare(InstallerVersion o1, InstallerVersion o2) { - return o2.compareTo(o1); - } - } + public static final InstallerVersionComparator INSTANCE = new InstallerVersionComparator(); + + @Override + public int compare(InstallerVersion o1, InstallerVersion o2) { + return o2.compareTo(o1); + } + } } diff --git a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/install/forge/MinecraftForgeVersionList.java b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/install/forge/MinecraftForgeVersionList.java index 984425ca1..725b73328 100755 --- a/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/install/forge/MinecraftForgeVersionList.java +++ b/HMCL/src/core/java/org/jackhuang/hellominecraft/launcher/core/install/forge/MinecraftForgeVersionList.java @@ -76,10 +76,13 @@ public class MinecraftForgeVersionList extends InstallerVersionList { for (Map.Entry arr : root.mcversion.entrySet()) { String mcver = StrUtils.formatVersion(arr.getKey()); + if (mcver == null) { + mcver = arr.getKey(); + } ArrayList al = new ArrayList<>(); for (int num : arr.getValue()) { MinecraftForgeVersion v = root.number.get(num); - InstallerVersion iv = new InstallerVersion(v.version, StrUtils.formatVersion(v.mcversion)); + InstallerVersion iv = new InstallerVersion(v.version, v.mcversion); for (String[] f : v.files) { String ver = v.mcversion + "-" + v.version; @@ -108,7 +111,7 @@ public class MinecraftForgeVersionList extends InstallerVersionList { versions.add(iv); } - versionMap.put(StrUtils.formatVersion(mcver), al); + versionMap.put(mcver, al); } Collections.sort(versions, new InstallerVersionComparator()); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/InstallerPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/InstallerPanel.java index 26ebaad1b..32e2e2240 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/InstallerPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/InstallerPanel.java @@ -17,9 +17,13 @@ */ package org.jackhuang.hellominecraft.launcher.ui; +import java.util.Comparator; import java.util.List; +import javax.swing.RowSorter; import javax.swing.SwingUtilities; import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableModel; +import javax.swing.table.TableRowSorter; import org.jackhuang.hellominecraft.util.C; import org.jackhuang.hellominecraft.launcher.setting.Settings; import org.jackhuang.hellominecraft.launcher.core.install.InstallerType; @@ -36,29 +40,45 @@ import org.jackhuang.hellominecraft.util.ui.SwingUtils; */ public class InstallerPanel extends AnimatedPanel { - GameSettingsPanel gsp; + GameSettingsPanel gsp; - /** - * Creates new form InstallerPanel - * - * @param gsp To get the minecraft version - * @param installerType load which installer - */ - public InstallerPanel(GameSettingsPanel gsp, InstallerType installerType) { - initComponents(); + private static class VerComparator implements Comparator { - setOpaque(false); - this.gsp = gsp; - id = installerType; - list = Settings.getInstance().getDownloadSource().getProvider().getInstallerByType(id); - } + @Override + public int compare(String o1, String o2) { + return InstallerVersionList.compareVersion(o1, o2); + } + }; - /** - * This method is called from within the constructor to initialize the form. - * WARNING: Do NOT modify this code. The content of this method is always - * regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") + /** + * Creates new form InstallerPanel + * + * @param gsp To get the minecraft version + * @param installerType load which installer + */ + public InstallerPanel(GameSettingsPanel gsp, InstallerType installerType) { + initComponents(); + + //表格排序 + TableRowSorter sorter = new TableRowSorter(lstInstallers.getModel()); + VerComparator verComparator = new VerComparator(); + for (int i = 0; i < lstInstallers.getColumnCount(); i++) { + sorter.setComparator(i, verComparator); + } + lstInstallers.setRowSorter(sorter); + + setOpaque(false); + this.gsp = gsp; + id = installerType; + list = Settings.getInstance().getDownloadSource().getProvider().getInstallerByType(id); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { @@ -109,60 +129,64 @@ public class InstallerPanel extends AnimatedPanel { }// //GEN-END:initComponents private void btnInstallActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnInstallActionPerformed - downloadSelectedRow(); + downloadSelectedRow(); }//GEN-LAST:event_btnInstallActionPerformed private void btnRefreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshActionPerformed - refreshVersions(); + refreshVersions(); }//GEN-LAST:event_btnRefreshActionPerformed - transient List versions; - transient InstallerVersionList list; - InstallerType id; + transient List versions; + transient InstallerVersionList list; + InstallerType id; - void refreshVersions() { - if (TaskWindow.execute(list.refresh(new String[] { gsp.getMinecraftVersionFormatted() }))) - loadVersions(); - } + void refreshVersions() { + if (TaskWindow.execute(list.refresh(new String[]{gsp.getMinecraftVersionFormatted()}))) { + loadVersions(); + } + } - public synchronized InstallerVersionList.InstallerVersion getVersion(int idx) { - return versions.get(idx); - } + public synchronized InstallerVersionList.InstallerVersion getVersion(int idx) { + return versions.get(idx); + } - synchronized void downloadSelectedRow() { - int idx = lstInstallers.getSelectedRow(); - if (versions == null || idx < 0 || idx >= versions.size()) { - MessageBox.Show(C.i18n("install.not_refreshed")); - return; - } - TaskWindow.execute(Settings.getLastProfile().service().install().download(Settings.getLastProfile().getSelectedVersion(), getVersion(idx), id), - new TaskRunnable(this::refreshVersions)); - } + synchronized void downloadSelectedRow() { + int idx = lstInstallers.getSelectedRow(); + if (versions == null || idx < 0 || idx >= versions.size()) { + MessageBox.Show(C.i18n("install.not_refreshed")); + return; + } + TaskWindow.execute(Settings.getLastProfile().service().install().download(Settings.getLastProfile().getSelectedVersion(), getVersion(idx), id), + new TaskRunnable(this::refreshVersions)); + } - public void loadVersions() { - SwingUtilities.invokeLater(() -> { - synchronized (InstallerPanel.this) { - DefaultTableModel model = (DefaultTableModel) lstInstallers.getModel(); - String mcver = StrUtils.formatVersion(gsp.getMinecraftVersionFormatted()); - versions = list.getVersions(mcver); - SwingUtils.clearDefaultTable(lstInstallers); - if (versions != null) - for (InstallerVersionList.InstallerVersion v : versions) - if (v != null) - model.addRow(new Object[] { v.selfVersion == null ? "null" : v.selfVersion, v.mcVersion == null ? "null" : v.mcVersion }); - } - }); - } + public void loadVersions() { + SwingUtilities.invokeLater(() -> { + synchronized (InstallerPanel.this) { + DefaultTableModel model = (DefaultTableModel) lstInstallers.getModel(); + String mcver = StrUtils.formatVersion(gsp.getMinecraftVersionFormatted()); + versions = list.getVersions(mcver); + SwingUtils.clearDefaultTable(lstInstallers); + if (versions != null) { + for (InstallerVersionList.InstallerVersion v : versions) { + if (v != null) { + model.addRow(new Object[]{v.selfVersion == null ? "null" : v.selfVersion, v.mcVersion == null ? "null" : v.mcVersion}); + } + } + } + } + }); + } - boolean refreshed = false; + boolean refreshed = false; - @Override - public void onSelect() { - if (!refreshed) { - refreshVersions(); - refreshed = true; - } - } + @Override + public void onSelect() { + if (!refreshed) { + refreshVersions(); + refreshed = true; + } + } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnInstall; 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 9eabf0b12..553e2e43d 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 29203424f..554ca9b66 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, 65, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 80, 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/src/main/java/org/jackhuang/hellominecraft/launcher/ui/MainFrame.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/MainFrame.java index 8457cba22..aae86082a 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/MainFrame.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/MainFrame.java @@ -89,7 +89,7 @@ public final class MainFrame extends DraggableFrame { setContentSize(834, 542); else setContentSize(802, 511); - setDefaultCloseOperation(3); + setDefaultCloseOperation(EXIT_ON_CLOSE); setTitle(Main.makeTitle()); initComponents(); loadBackground(); 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 c57982610..cdbeb9c31 100755 --- a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.lang +++ b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.lang @@ -298,7 +298,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提供。
关于作者:
百度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.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 642388d74..2ea8f0ed0 100755 --- a/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.properties +++ b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N.properties @@ -298,7 +298,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
\u5982\u679c\u60a8\u5e0c\u671b\u672c\u8f6f\u4ef6\u7ee7\u7eed\u53d1\u5c55\uff0c\u8bf7\u8d5e\u52a9
\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
\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.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_zh_TW.lang b/HMCUtils/src/main/resources/org/jackhuang/hellominecraft/lang/I18N_zh_TW.lang index feaaa638c..bc0e5c092 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 @@ -298,7 +298,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提供。
關於作者:
百度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.download_source=下載源 launcher.background_location=背景地址 launcher.exit_failed=強制退出失敗,可能是Forge 1.7.10及更高版本導致的,無法解決。