diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java index 466f79caa..fc97bb59c 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Map; +import java.util.concurrent.ThreadPoolExecutor; import org.jackhuang.hellominecraft.C; import org.jackhuang.hellominecraft.HMCLog; import org.jackhuang.hellominecraft.launcher.settings.Settings; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java index 7ab2a32d1..6fbb39261 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java @@ -124,6 +124,7 @@ public abstract class IAssetsHandler { progress = 0; max = assetsDownloadURLs.size(); al = new ArrayList<>(); + int hasDownloaded = 0; for (int i = 0; i < max; i++) { String mark = assetsDownloadURLs.get(i); String url = u + mark; @@ -137,7 +138,10 @@ public abstract class IAssetsHandler { String sha = DigestUtils.sha1Hex(NetUtils.getBytesFromStream(fis)); IOUtils.closeQuietly(fis); if (contents.get(i).eTag.equals(sha)) { + hasDownloaded++; HMCLog.log("File " + assetsLocalNames.get(i) + " has downloaded successfully, skipped downloading."); + if (ppl != null) + ppl.setProgress(this, hasDownloaded, max); continue; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProvider.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProvider.java deleted file mode 100644 index df03af137..000000000 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProvider.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2013 huangyuhui - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. - */ -package org.jackhuang.hellominecraft.tasks; - -/** - * - * @author huangyuhui - */ -public abstract class ProgressProvider { - - protected ProgressProviderListener ppl; - - public ProgressProvider setProgressProviderListener(ProgressProviderListener p) { - ppl = p; - return this; - } -} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java index e5a94d0a1..b19630107 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/ProgressProviderListener.java @@ -22,9 +22,9 @@ package org.jackhuang.hellominecraft.tasks; */ public interface ProgressProviderListener { - void setProgress(int prog, int max); + void setProgress(Task task, int prog, int max); - void setStatus(String sta); + void setStatus(Task task, String sta); - void onProgressProviderDone(); + void onProgressProviderDone(Task task); } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java index 018c2042d..3e6a54a6e 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java @@ -22,7 +22,7 @@ import java.util.Collection; * * @author huangyuhui */ -public abstract class Task extends ProgressProvider { +public abstract class Task { /** * Run in a new thread(packed in TaskList). @@ -75,4 +75,11 @@ public abstract class Task extends ProgressProvider { public Collection getAfterTasks() { return null; } + + protected ProgressProviderListener ppl; + + public Task setProgressProviderListener(ProgressProviderListener p) { + ppl = p; + return this; + } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.form b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.form index b24570722..d390b2600 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.form +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.form @@ -1,6 +1,6 @@ -
+ @@ -53,7 +53,7 @@ - + @@ -114,10 +114,14 @@ - + - - + + + + + + diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java index df9173ac9..135ba5012 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java @@ -18,6 +18,7 @@ package org.jackhuang.hellominecraft.tasks; import java.awt.EventQueue; import java.util.ArrayList; +import javax.swing.SwingUtilities; import org.jackhuang.hellominecraft.C; import org.jackhuang.hellominecraft.utils.functions.NonConsumer; import org.jackhuang.hellominecraft.HMCLog; @@ -72,8 +73,9 @@ public class TaskWindow extends javax.swing.JDialog pgsSingle.setValue(0); pgsTotal.setValue(0); suc = false; - SwingUtils.clear(lstDownload); + SwingUtils.clearDefaultTable(lstDownload); failReasons.clear(); + tasks.clear(); try { taskList.start(); } catch (Exception e) { @@ -100,7 +102,7 @@ public class TaskWindow extends javax.swing.JDialog lblTotalProgress = new javax.swing.JLabel(); pgsTotal = new javax.swing.JProgressBar(); srlDownload = new javax.swing.JScrollPane(); - lstDownload = new javax.swing.JList(); + lstDownload = new javax.swing.JTable(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N"); // NOI18N @@ -126,6 +128,10 @@ public class TaskWindow extends javax.swing.JDialog pgsTotal.setStringPainted(true); + lstDownload.setModel(SwingUtils.makeDefaultTableModel(new String[]{C.i18n("taskwindow.file_name"), C.i18n("taskwindow.download_progress")}, new Class[]{String.class, String.class}, new boolean[]{false,false}) + ); + lstDownload.setRowSelectionAllowed(false); + lstDownload.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); srlDownload.setViewportView(lstDownload); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); @@ -151,7 +157,7 @@ public class TaskWindow extends javax.swing.JDialog layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() - .addComponent(srlDownload, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE) + .addComponent(srlDownload, javax.swing.GroupLayout.DEFAULT_SIZE, 232, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(btnCancel, javax.swing.GroupLayout.Alignment.TRAILING) @@ -175,6 +181,8 @@ public class TaskWindow extends javax.swing.JDialog }//GEN-LAST:event_btnCancelActionPerformed private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed + tasks.clear(); + if (!this.failReasons.isEmpty()) { MessageBox.Show(StrUtils.parseParams("", failReasons.toArray(), "\n"), C.i18n("message.error"), MessageBox.ERROR_MESSAGE); failReasons.clear(); @@ -190,16 +198,29 @@ public class TaskWindow extends javax.swing.JDialog private javax.swing.JButton btnCancel; private javax.swing.JLabel lblSingleProgress; private javax.swing.JLabel lblTotalProgress; - private javax.swing.JList lstDownload; + private javax.swing.JTable lstDownload; private javax.swing.JProgressBar pgsSingle; private javax.swing.JProgressBar pgsTotal; private javax.swing.JScrollPane srlDownload; // End of variables declaration//GEN-END:variables + ArrayList tasks = new ArrayList<>(); + ArrayList progresses = new ArrayList<>(); + @Override - public void setProgress(int progress, int max) { - pgsSingle.setMaximum(max); - pgsSingle.setValue(progress); + public void setProgress(Task task, int progress, int max) { + SwingUtilities.invokeLater(() -> { + int idx = tasks.indexOf(task); + if(idx == -1) return; + int pgs = progress * 100 / max; + if(progresses.get(idx) != pgs) { + SwingUtils.setValueAt(lstDownload, pgs + "%", idx, 1); + progresses.set(idx, pgs); + } + if(task.isParallelExecuting()) return; + pgsSingle.setMaximum(max); + pgsSingle.setValue(progress); + }); } @Override @@ -211,11 +232,14 @@ public class TaskWindow extends javax.swing.JDialog @Override public void onDoing(Task task) { - if (!task.isParallelExecuting()) - task.setProgressProviderListener(this); + task.setProgressProviderListener(this); - SwingUtils.appendLast(lstDownload, task.getInfo()); - SwingUtils.moveEnd(srlDownload); + SwingUtilities.invokeLater(() -> { + tasks.add(task); + progresses.add(0); + SwingUtils.appendLast(lstDownload, task.getInfo(), "0%"); + SwingUtils.moveEnd(srlDownload); + }); } public boolean areTasksFinished() { @@ -224,26 +248,39 @@ public class TaskWindow extends javax.swing.JDialog @Override public void onDone(Task task) { - pgsTotal.setMaximum(taskList.taskCount()); - pgsTotal.setValue(pgsTotal.getValue() + 1); + SwingUtilities.invokeLater(() -> { + pgsTotal.setMaximum(taskList.taskCount()); + pgsTotal.setValue(pgsTotal.getValue() + 1); + int idx = tasks.indexOf(task); + if (idx == -1) return; + tasks.remove(idx); + progresses.remove(idx); + SwingUtils.removeRow(lstDownload, idx); + }); } @Override public void onFailed(Task task) { - failReasons.add(task.getInfo() + ": " + (null == task.getFailReason() ? "No exception" : task.getFailReason().getLocalizedMessage())); - pgsTotal.setMaximum(taskList.taskCount()); - pgsTotal.setValue(pgsTotal.getValue() + 1); - SwingUtils.replaceLast(lstDownload, task.getFailReason()); - SwingUtils.moveEnd(srlDownload); + SwingUtilities.invokeLater(() -> { + failReasons.add(task.getInfo() + ": " + (null == task.getFailReason() ? "No exception" : task.getFailReason().getLocalizedMessage())); + pgsTotal.setMaximum(taskList.taskCount()); + pgsTotal.setValue(pgsTotal.getValue() + 1); + int idx = tasks.indexOf(task); + SwingUtils.setValueAt(lstDownload, task.getFailReason(), idx, 0); + SwingUtils.setValueAt(lstDownload, "0%", idx, 1); + SwingUtils.moveEnd(srlDownload); + }); } @Override - public void onProgressProviderDone() { + public void onProgressProviderDone(Task task) { } @Override - public void setStatus(String sta) { - SwingUtils.replaceLast(lstDownload, sta); + public void setStatus(Task task, String sta) { + SwingUtilities.invokeLater(() -> { + SwingUtils.setValueAt(lstDownload, sta, lstDownload.getRowCount(), 0); + }); } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java index 4e8619301..a1dfc2424 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java @@ -204,13 +204,13 @@ public class FileDownloadTask extends Task implements PreviousResult, Prev downloaded += read; if (ppl != null) { - ppl.setProgress(downloaded, size); + ppl.setProgress(this, downloaded, size); } } closeFiles(); tempFile.renameTo(filePath); if (ppl != null) { - ppl.onProgressProviderDone(); + ppl.onProgressProviderDone(this); } return true; } catch (Exception e) { diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java index 9dec940e2..f3a2d2620 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java @@ -62,7 +62,7 @@ public class HTTPGetTask extends TaskInfo implements PreviousResult { while ((i = is.read()) != -1) { baos.write(i); if (ppl != null) { - ppl.setProgress(++read, size); + ppl.setProgress(this, ++read, size); } if (!shouldContinue) { return true; diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java index 7d35d1482..0f7b07c50 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java @@ -126,5 +126,20 @@ public class SwingUtils { model.removeRow(0); table.updateUI(); } + + public static void appendLast(JTable table, Object... elements) { + DefaultTableModel model = (DefaultTableModel) table.getModel(); + model.addRow(elements); + } + + public static void setValueAt(JTable table, Object element, int row, int col) { + DefaultTableModel model = (DefaultTableModel) table.getModel(); + model.setValueAt(element, row, col); + } + + public static void removeRow(JTable table, int row) { + DefaultTableModel model = (DefaultTableModel) table.getModel(); + model.removeRow(row); + } } diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties index 4707222b9..5e915e445 100644 --- a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties +++ b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N.properties @@ -208,6 +208,8 @@ advancedsettings.game_dir.default=\u9ed8\u8ba4(.minecraft/) advancedsettings.game_dir.independent=\u5404\u7248\u672c\u72ec\u7acb(.minecraft/versions/<\u7248\u672c\u540d>/,\u9664assets,libraries) advancedsettings.no_jvm_args=\u4e0d\u6dfb\u52a0JVM\u53c2\u6570(\u4f7f\u7528Java9\u65f6\u5fc5\u52fe) advancedsettings.java_args_default=\u542f\u52a8\u5668\u9ed8\u8ba4\u6dfb\u52a0\u7684\u53c2\u6570\uff08\u8bf7\u4e0d\u8981\u91cd\u590d\u6dfb\u52a0\uff09\uff1a-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true +advancedsettings.wrapper_launcher=\u524d\u7f6e\u542f\u52a8\u6307\u4ee4(\u4e0d\u5fc5\u586b\u5199\uff0c\u5185\u5bb9\u5c06\u52a0\u5728\u542f\u52a8\u811a\u672c\u6700\u524d\uff0c\u5982optirun...) +advancedsettings.server_ip=\u76f4\u5165\u670d\u52a1\u5668ip\u5730\u5740(\u4e0d\u5fc5\u586b\u5199\uff0c\u542f\u52a8\u6e38\u620f\u540e\u76f4\u63a5\u8fdb\u5165\u5bf9\u5e94\u670d\u52a1\u5668) mainwindow.show_log=\u67e5\u770b\u65e5\u5fd7 mainwindow.make_launch_script=\u751f\u6210\u542f\u52a8\u811a\u672c @@ -266,6 +268,8 @@ taskwindow.single_progress=\u5355\u9879\u8fdb\u5ea6 taskwindow.total_progress=\u603b\u8fdb\u5ea6 taskwindow.cancel=\u53d6\u6d88 taskwindow.no_more_instance=\u53ef\u80fd\u540c\u65f6\u6253\u5f00\u4e86\u591a\u4e2a\u4efb\u52a1\u7a97\u53e3\uff0c\u8bf7\u4e0d\u8981\u591a\u6b21\u6253\u5f00\uff01 +taskwindow.file_name=\u4efb\u52a1 +taskwindow.download_progress=\u8fdb\u5ea6 setupwindow.include_minecraft=\u5bfc\u5165\u6e38\u620f\u6587\u4ef6\u5939 setupwindow.find_in_configurations=\u5bfc\u5165\u5b8c\u6210\uff0c\u5feb\u5230\u914d\u7f6e\u4e0b\u62c9\u6846\u4e2d\u627e\u65b0\u6e38\u620f\u8def\u5f84\u5427\uff01 @@ -298,5 +302,3 @@ color.green=\u7eff\u8272 color.orange=\u6a59\u8272 color.dark_blue=\u6df1\u84dd\u8272 color.purple=\u7d2b\u8272 -advancedsettings.wrapper_launcher=\u524d\u7f6e\u542f\u52a8\u6307\u4ee4(\u4e0d\u5fc5\u586b\u5199\uff0c\u5185\u5bb9\u5c06\u52a0\u5728\u542f\u52a8\u811a\u672c\u6700\u524d\uff0c\u5982optirun...) -advancedsettings.server_ip=\u76f4\u5165\u670d\u52a1\u5668ip\u5730\u5740(\u4e0d\u5fc5\u586b\u5199\uff0c\u542f\u52a8\u6e38\u620f\u540e\u76f4\u63a5\u8fdb\u5165\u5bf9\u5e94\u670d\u52a1\u5668) diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_en_US.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_en_US.properties index a7f8d2ff8..47594630a 100644 --- a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_en_US.properties +++ b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_en_US.properties @@ -203,6 +203,8 @@ advancedsettings.game_dir.default=Default (.minecraft/) advancedsettings.game_dir.independent=Independent (.minecraft/versions//,\u9664assets,libraries) advancedsettings.no_jvm_args=No JVM Args advancedsettings.java_args_default=Default java args: -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true +advancedsettings.wrapper_launcher=Wrapper Launcher(like optirun...) +advancedsettings.server_ip=Server Host mainwindow.show_log=Show Logs mainwindow.make_launch_script=Make Launching Script. @@ -258,6 +260,8 @@ taskwindow.single_progress=Single progress taskwindow.total_progress=Total progress taskwindow.cancel=Cancel taskwindow.no_more_instance=Maybe you opened more than one task window, dont open it again! +taskwindow.file_name=Task +taskwindow.download_progress=Progress setupwindow.include_minecraft=Import game setupwindow.find_in_configurations=Finished importing. You can find it in the configuration selection bar. diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_CN.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_CN.properties index 527c2d38b..5b1e52f50 100644 --- a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_CN.properties +++ b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_CN.properties @@ -203,6 +203,8 @@ advancedsettings.game_dir.default=\u9ed8\u8ba4(.minecraft/) advancedsettings.game_dir.independent=\u5404\u7248\u672c\u72ec\u7acb(.minecraft/versions/<\u7248\u672c\u540d>/,\u9664assets,libraries) advancedsettings.no_jvm_args=\u4e0d\u6dfb\u52a0JVM\u53c2\u6570(\u4f7f\u7528Java9\u65f6\u5fc5\u52fe) advancedsettings.java_args_default=\u542f\u52a8\u5668\u9ed8\u8ba4\u6dfb\u52a0\u7684\u53c2\u6570\uff08\u8bf7\u4e0d\u8981\u91cd\u590d\u6dfb\u52a0\uff09\uff1a-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true +advancedsettings.wrapper_launcher=\u524d\u7f6e\u542f\u52a8\u6307\u4ee4(\u4e0d\u5fc5\u586b\u5199\uff0c\u5185\u5bb9\u5c06\u52a0\u5728\u542f\u52a8\u811a\u672c\u6700\u524d\uff0c\u5982optirun...) +advancedsettings.server_ip=\u76f4\u5165\u670d\u52a1\u5668ip\u5730\u5740(\u4e0d\u5fc5\u586b\u5199\uff0c\u542f\u52a8\u6e38\u620f\u540e\u76f4\u63a5\u8fdb\u5165\u5bf9\u5e94\u670d\u52a1\u5668) mainwindow.show_log=\u67e5\u770b\u65e5\u5fd7 mainwindow.make_launch_script=\u751f\u6210\u542f\u52a8\u811a\u672c @@ -260,6 +262,8 @@ taskwindow.single_progress=\u5355\u9879\u8fdb\u5ea6 taskwindow.total_progress=\u603b\u8fdb\u5ea6 taskwindow.cancel=\u53d6\u6d88 taskwindow.no_more_instance=\u53ef\u80fd\u540c\u65f6\u6253\u5f00\u4e86\u591a\u4e2a\u4efb\u52a1\u7a97\u53e3\uff0c\u8bf7\u4e0d\u8981\u591a\u6b21\u6253\u5f00\uff01 +taskwindow.file_name=\u4efb\u52a1 +taskwindow.download_progress=\u8fdb\u5ea6 setupwindow.include_minecraft=\u5bfc\u5165\u6e38\u620f\u6587\u4ef6\u5939 setupwindow.find_in_configurations=\u5bfc\u5165\u5b8c\u6210\uff0c\u5feb\u5230\u914d\u7f6e\u4e0b\u62c9\u6846\u4e2d\u627e\u65b0\u6e38\u620f\u8def\u5f84\u5427\uff01 diff --git a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_TW.properties b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_TW.properties index 2952a1082..3dfb8edac 100644 --- a/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_TW.properties +++ b/HMCLAPI/src/main/resources/org/jackhuang/hellominecraft/launcher/I18N_zh_TW.properties @@ -203,6 +203,8 @@ advancedsettings.game_dir.default=\u9ed8\u8a8d(.minecraft/) advancedsettings.game_dir.independent=\u5404\u7248\u672c\u7368\u7acb(.minecraft/versions/<\u7248\u672c\u540d>/,\u9664assets,libraries) advancedsettings.no_jvm_args=\u4e0d\u6dfb\u52a0JVM\u53c3\u6578(\u4f7f\u7528Java9\u6642\u5fc5\u52fe) advancedsettings.java_args_default=\u555f\u52d5\u5668\u9ed8\u8a8d\u6dfb\u52a0\u7684\u53c3\u6578\uff08\u8acb\u4e0d\u8981\u91cd\u8907\u6dfb\u52a0\uff09\uff1a-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml. ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true +advancedsettings.wrapper_launcher=\u524d\u7f6e\u555f\u52d5\u6307\u4ee4(\u4e0d\u5fc5\u586b\u5beb\uff0c\u5167\u5bb9\u5c07\u52a0\u5728\u555f\u52d5\u8173\u672c\u6700\u524d\uff0c\u5982optirun...) +advancedsettings.server_ip=\u76f4\u5165\u670d\u52d9\u5668ip\u5730\u5740(\u4e0d\u5fc5\u586b\u5beb\uff0c\u555f\u52d5\u904a\u6232\u5f8c\u76f4\u63a5\u9032\u5165\u5c0d\u61c9\u670d\u52d9\u5668) mainwindow.show_log=\u67e5\u770b\u65e5\u8a8c mainwindow.make_launch_script=\u751f\u6210\u555f\u52d5\u8173\u672c @@ -258,6 +260,8 @@ taskwindow.single_progress=\u55ae\u9805\u9032\u5ea6 taskwindow.total_progress=\u7e3d\u9032\u5ea6 taskwindow.cancel=\u53d6\u6d88 taskwindow.no_more_instance=\u53ef\u80fd\u540c\u6642\u6253\u958b\u4e86\u591a\u500b\u4efb\u52d9\u7a97\u53e3\uff0c\u8acb\u4e0d\u8981\u591a\u6b21\u6253\u958b\uff01 +taskwindow.file_name=\u4efb\u52d9 +taskwindow.download_progress=\u9032\u5ea6 setupwindow.include_minecraft=\u5c0e\u5165\u904a\u6232\u6587\u4ef6\u593e setupwindow.find_in_configurations=\u5c0e\u5165\u5b8c\u6210\uff0c\u5feb\u5230\u914d\u7f6e\u4e0b\u62c9\u6846\u4e2d\u627e\u65b0\u904a\u6232\u8def\u5f91\u5427\uff01