mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-10 04:16:02 -04:00
TaskWindow now shows progress of each task.
This commit is contained in:
parent
538688c8f1
commit
369fe5e164
@ -20,6 +20,7 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
import org.jackhuang.hellominecraft.C;
|
import org.jackhuang.hellominecraft.C;
|
||||||
import org.jackhuang.hellominecraft.HMCLog;
|
import org.jackhuang.hellominecraft.HMCLog;
|
||||||
import org.jackhuang.hellominecraft.launcher.settings.Settings;
|
import org.jackhuang.hellominecraft.launcher.settings.Settings;
|
||||||
|
@ -124,6 +124,7 @@ public abstract class IAssetsHandler {
|
|||||||
progress = 0;
|
progress = 0;
|
||||||
max = assetsDownloadURLs.size();
|
max = assetsDownloadURLs.size();
|
||||||
al = new ArrayList<>();
|
al = new ArrayList<>();
|
||||||
|
int hasDownloaded = 0;
|
||||||
for (int i = 0; i < max; i++) {
|
for (int i = 0; i < max; i++) {
|
||||||
String mark = assetsDownloadURLs.get(i);
|
String mark = assetsDownloadURLs.get(i);
|
||||||
String url = u + mark;
|
String url = u + mark;
|
||||||
@ -137,7 +138,10 @@ public abstract class IAssetsHandler {
|
|||||||
String sha = DigestUtils.sha1Hex(NetUtils.getBytesFromStream(fis));
|
String sha = DigestUtils.sha1Hex(NetUtils.getBytesFromStream(fis));
|
||||||
IOUtils.closeQuietly(fis);
|
IOUtils.closeQuietly(fis);
|
||||||
if (contents.get(i).eTag.equals(sha)) {
|
if (contents.get(i).eTag.equals(sha)) {
|
||||||
|
hasDownloaded++;
|
||||||
HMCLog.log("File " + assetsLocalNames.get(i) + " has downloaded successfully, skipped downloading.");
|
HMCLog.log("File " + assetsLocalNames.get(i) + " has downloaded successfully, skipped downloading.");
|
||||||
|
if (ppl != null)
|
||||||
|
ppl.setProgress(this, hasDownloaded, max);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2013 huangyuhui <huanghongxun2008@126.com>
|
|
||||||
*
|
|
||||||
* 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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -22,9 +22,9 @@ package org.jackhuang.hellominecraft.tasks;
|
|||||||
*/
|
*/
|
||||||
public interface ProgressProviderListener {
|
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);
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ import java.util.Collection;
|
|||||||
*
|
*
|
||||||
* @author huangyuhui
|
* @author huangyuhui
|
||||||
*/
|
*/
|
||||||
public abstract class Task extends ProgressProvider {
|
public abstract class Task {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run in a new thread(packed in TaskList).
|
* Run in a new thread(packed in TaskList).
|
||||||
@ -75,4 +75,11 @@ public abstract class Task extends ProgressProvider {
|
|||||||
public Collection<Task> getAfterTasks() {
|
public Collection<Task> getAfterTasks() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected ProgressProviderListener ppl;
|
||||||
|
|
||||||
|
public Task setProgressProviderListener(ProgressProviderListener p) {
|
||||||
|
ppl = p;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
|
<Form version="1.6" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="defaultCloseOperation" type="int" value="2"/>
|
<Property name="defaultCloseOperation" type="int" value="2"/>
|
||||||
<Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
@ -53,7 +53,7 @@
|
|||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Component id="srlDownload" pref="241" max="32767" attributes="0"/>
|
<Component id="srlDownload" pref="232" max="32767" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="btnCancel" alignment="1" min="-2" max="-2" attributes="0"/>
|
<Component id="btnCancel" alignment="1" min="-2" max="-2" attributes="0"/>
|
||||||
@ -114,10 +114,14 @@
|
|||||||
|
|
||||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||||
<SubComponents>
|
<SubComponents>
|
||||||
<Component class="javax.swing.JList" name="lstDownload">
|
<Component class="javax.swing.JTable" name="lstDownload">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor">
|
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
|
||||||
<StringArray count="0"/>
|
<Connection code="SwingUtils.makeDefaultTableModel(new String[]{C.i18n("taskwindow.file_name"), C.i18n("taskwindow.download_progress")}, new Class[]{String.class, String.class}, new boolean[]{false,false})
" type="code"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="rowSelectionAllowed" type="boolean" value="false"/>
|
||||||
|
<Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor">
|
||||||
|
<JTableSelectionModel selectionMode="0"/>
|
||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
|
@ -18,6 +18,7 @@ package org.jackhuang.hellominecraft.tasks;
|
|||||||
|
|
||||||
import java.awt.EventQueue;
|
import java.awt.EventQueue;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
import org.jackhuang.hellominecraft.C;
|
import org.jackhuang.hellominecraft.C;
|
||||||
import org.jackhuang.hellominecraft.utils.functions.NonConsumer;
|
import org.jackhuang.hellominecraft.utils.functions.NonConsumer;
|
||||||
import org.jackhuang.hellominecraft.HMCLog;
|
import org.jackhuang.hellominecraft.HMCLog;
|
||||||
@ -72,8 +73,9 @@ public class TaskWindow extends javax.swing.JDialog
|
|||||||
pgsSingle.setValue(0);
|
pgsSingle.setValue(0);
|
||||||
pgsTotal.setValue(0);
|
pgsTotal.setValue(0);
|
||||||
suc = false;
|
suc = false;
|
||||||
SwingUtils.clear(lstDownload);
|
SwingUtils.clearDefaultTable(lstDownload);
|
||||||
failReasons.clear();
|
failReasons.clear();
|
||||||
|
tasks.clear();
|
||||||
try {
|
try {
|
||||||
taskList.start();
|
taskList.start();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -100,7 +102,7 @@ public class TaskWindow extends javax.swing.JDialog
|
|||||||
lblTotalProgress = new javax.swing.JLabel();
|
lblTotalProgress = new javax.swing.JLabel();
|
||||||
pgsTotal = new javax.swing.JProgressBar();
|
pgsTotal = new javax.swing.JProgressBar();
|
||||||
srlDownload = new javax.swing.JScrollPane();
|
srlDownload = new javax.swing.JScrollPane();
|
||||||
lstDownload = new javax.swing.JList();
|
lstDownload = new javax.swing.JTable();
|
||||||
|
|
||||||
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||||
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N"); // NOI18N
|
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);
|
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);
|
srlDownload.setViewportView(lstDownload);
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
@ -151,7 +157,7 @@ public class TaskWindow extends javax.swing.JDialog
|
|||||||
layout.setVerticalGroup(
|
layout.setVerticalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.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)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(btnCancel, javax.swing.GroupLayout.Alignment.TRAILING)
|
.addComponent(btnCancel, javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
@ -175,6 +181,8 @@ public class TaskWindow extends javax.swing.JDialog
|
|||||||
}//GEN-LAST:event_btnCancelActionPerformed
|
}//GEN-LAST:event_btnCancelActionPerformed
|
||||||
|
|
||||||
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
|
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
|
||||||
|
tasks.clear();
|
||||||
|
|
||||||
if (!this.failReasons.isEmpty()) {
|
if (!this.failReasons.isEmpty()) {
|
||||||
MessageBox.Show(StrUtils.parseParams("", failReasons.toArray(), "\n"), C.i18n("message.error"), MessageBox.ERROR_MESSAGE);
|
MessageBox.Show(StrUtils.parseParams("", failReasons.toArray(), "\n"), C.i18n("message.error"), MessageBox.ERROR_MESSAGE);
|
||||||
failReasons.clear();
|
failReasons.clear();
|
||||||
@ -190,16 +198,29 @@ public class TaskWindow extends javax.swing.JDialog
|
|||||||
private javax.swing.JButton btnCancel;
|
private javax.swing.JButton btnCancel;
|
||||||
private javax.swing.JLabel lblSingleProgress;
|
private javax.swing.JLabel lblSingleProgress;
|
||||||
private javax.swing.JLabel lblTotalProgress;
|
private javax.swing.JLabel lblTotalProgress;
|
||||||
private javax.swing.JList lstDownload;
|
private javax.swing.JTable lstDownload;
|
||||||
private javax.swing.JProgressBar pgsSingle;
|
private javax.swing.JProgressBar pgsSingle;
|
||||||
private javax.swing.JProgressBar pgsTotal;
|
private javax.swing.JProgressBar pgsTotal;
|
||||||
private javax.swing.JScrollPane srlDownload;
|
private javax.swing.JScrollPane srlDownload;
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
|
ArrayList<Task> tasks = new ArrayList<>();
|
||||||
|
ArrayList<Integer> progresses = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setProgress(int progress, int max) {
|
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.setMaximum(max);
|
||||||
pgsSingle.setValue(progress);
|
pgsSingle.setValue(progress);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -211,11 +232,14 @@ public class TaskWindow extends javax.swing.JDialog
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDoing(Task task) {
|
public void onDoing(Task task) {
|
||||||
if (!task.isParallelExecuting())
|
|
||||||
task.setProgressProviderListener(this);
|
task.setProgressProviderListener(this);
|
||||||
|
|
||||||
SwingUtils.appendLast(lstDownload, task.getInfo());
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
tasks.add(task);
|
||||||
|
progresses.add(0);
|
||||||
|
SwingUtils.appendLast(lstDownload, task.getInfo(), "0%");
|
||||||
SwingUtils.moveEnd(srlDownload);
|
SwingUtils.moveEnd(srlDownload);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean areTasksFinished() {
|
public boolean areTasksFinished() {
|
||||||
@ -224,26 +248,39 @@ public class TaskWindow extends javax.swing.JDialog
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDone(Task task) {
|
public void onDone(Task task) {
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
pgsTotal.setMaximum(taskList.taskCount());
|
pgsTotal.setMaximum(taskList.taskCount());
|
||||||
pgsTotal.setValue(pgsTotal.getValue() + 1);
|
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
|
@Override
|
||||||
public void onFailed(Task task) {
|
public void onFailed(Task task) {
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
failReasons.add(task.getInfo() + ": " + (null == task.getFailReason() ? "No exception" : task.getFailReason().getLocalizedMessage()));
|
failReasons.add(task.getInfo() + ": " + (null == task.getFailReason() ? "No exception" : task.getFailReason().getLocalizedMessage()));
|
||||||
pgsTotal.setMaximum(taskList.taskCount());
|
pgsTotal.setMaximum(taskList.taskCount());
|
||||||
pgsTotal.setValue(pgsTotal.getValue() + 1);
|
pgsTotal.setValue(pgsTotal.getValue() + 1);
|
||||||
SwingUtils.replaceLast(lstDownload, task.getFailReason());
|
int idx = tasks.indexOf(task);
|
||||||
|
SwingUtils.setValueAt(lstDownload, task.getFailReason(), idx, 0);
|
||||||
|
SwingUtils.setValueAt(lstDownload, "0%", idx, 1);
|
||||||
SwingUtils.moveEnd(srlDownload);
|
SwingUtils.moveEnd(srlDownload);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onProgressProviderDone() {
|
public void onProgressProviderDone(Task task) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setStatus(String sta) {
|
public void setStatus(Task task, String sta) {
|
||||||
SwingUtils.replaceLast(lstDownload, sta);
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
SwingUtils.setValueAt(lstDownload, sta, lstDownload.getRowCount(), 0);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -204,13 +204,13 @@ public class FileDownloadTask extends Task implements PreviousResult<File>, Prev
|
|||||||
downloaded += read;
|
downloaded += read;
|
||||||
|
|
||||||
if (ppl != null) {
|
if (ppl != null) {
|
||||||
ppl.setProgress(downloaded, size);
|
ppl.setProgress(this, downloaded, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
closeFiles();
|
closeFiles();
|
||||||
tempFile.renameTo(filePath);
|
tempFile.renameTo(filePath);
|
||||||
if (ppl != null) {
|
if (ppl != null) {
|
||||||
ppl.onProgressProviderDone();
|
ppl.onProgressProviderDone(this);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -62,7 +62,7 @@ public class HTTPGetTask extends TaskInfo implements PreviousResult<String> {
|
|||||||
while ((i = is.read()) != -1) {
|
while ((i = is.read()) != -1) {
|
||||||
baos.write(i);
|
baos.write(i);
|
||||||
if (ppl != null) {
|
if (ppl != null) {
|
||||||
ppl.setProgress(++read, size);
|
ppl.setProgress(this, ++read, size);
|
||||||
}
|
}
|
||||||
if (!shouldContinue) {
|
if (!shouldContinue) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -127,4 +127,19 @@ public class SwingUtils {
|
|||||||
table.updateUI();
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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.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.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.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.show_log=\u67e5\u770b\u65e5\u5fd7
|
||||||
mainwindow.make_launch_script=\u751f\u6210\u542f\u52a8\u811a\u672c
|
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.total_progress=\u603b\u8fdb\u5ea6
|
||||||
taskwindow.cancel=\u53d6\u6d88
|
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.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.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
|
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.orange=\u6a59\u8272
|
||||||
color.dark_blue=\u6df1\u84dd\u8272
|
color.dark_blue=\u6df1\u84dd\u8272
|
||||||
color.purple=\u7d2b\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)
|
|
||||||
|
@ -203,6 +203,8 @@ advancedsettings.game_dir.default=Default (.minecraft/)
|
|||||||
advancedsettings.game_dir.independent=Independent (.minecraft/versions/<version name>/,\u9664assets,libraries)
|
advancedsettings.game_dir.independent=Independent (.minecraft/versions/<version name>/,\u9664assets,libraries)
|
||||||
advancedsettings.no_jvm_args=No JVM Args
|
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.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.show_log=Show Logs
|
||||||
mainwindow.make_launch_script=Make Launching Script.
|
mainwindow.make_launch_script=Make Launching Script.
|
||||||
@ -258,6 +260,8 @@ taskwindow.single_progress=Single progress
|
|||||||
taskwindow.total_progress=Total progress
|
taskwindow.total_progress=Total progress
|
||||||
taskwindow.cancel=Cancel
|
taskwindow.cancel=Cancel
|
||||||
taskwindow.no_more_instance=Maybe you opened more than one task window, dont open it again!
|
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.include_minecraft=Import game
|
||||||
setupwindow.find_in_configurations=Finished importing. You can find it in the configuration selection bar.
|
setupwindow.find_in_configurations=Finished importing. You can find it in the configuration selection bar.
|
||||||
|
@ -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.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.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.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.show_log=\u67e5\u770b\u65e5\u5fd7
|
||||||
mainwindow.make_launch_script=\u751f\u6210\u542f\u52a8\u811a\u672c
|
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.total_progress=\u603b\u8fdb\u5ea6
|
||||||
taskwindow.cancel=\u53d6\u6d88
|
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.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.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
|
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
|
||||||
|
@ -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.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.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.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.show_log=\u67e5\u770b\u65e5\u8a8c
|
||||||
mainwindow.make_launch_script=\u751f\u6210\u555f\u52d5\u8173\u672c
|
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.total_progress=\u7e3d\u9032\u5ea6
|
||||||
taskwindow.cancel=\u53d6\u6d88
|
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.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.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
|
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user