Compare commits

...
8 Commits
Author SHA1 Message Date
huangyuhui 3ba75d2de3 Fixed #39 2016-03-01 12:37:12 +08:00
huangyuhui dfc6e91321 Adds some suggested files to remove 2016-02-28 14:47:31 +08:00
huangyuhui a5504a4b74 Added font anti-aliasing 2016-02-28 13:49:22 +08:00
huangyuhui d10a7fad20 Fixed #38 2016-02-28 13:43:03 +08:00
huangyuhui f811d4c89f Adds some localization items 2016-02-27 17:08:29 +08:00
huangyuhui dcaa6241ec Testtest 2016-02-27 14:14:23 +08:00
huangyuhui 9527783cdb Fixed #31 2016-02-26 23:59:36 +08:00
huangyuhui db2b0cb159 Fixed #36 2016-02-26 23:42:45 +08:00
37 changed files with 291 additions and 154 deletions

No files matched your search

+11 -2
View File
@@ -1,15 +1,24 @@
language: java
jdk:
- oraclejdk8
branches:
only:
- master
before_deploy:
- git config --global user.email ${GITHUB_EMAIL}
- git config --global user.name ${GITHUB_NAME}
- git tag ${VERSION_ROOT}.${TRAVIS_BUILD_NUMBER}
- git push -q ${REPO} --tags
deploy:
provider: releases
api_key:
secure: lfFEwKtij/s9Ao/SKL7oVdsWcfASshZuwT27gllMrTx1ZQqLCG2I5mGJOp5ukx7lb3y4Tu316nFasLjy9NI3eLXSx9f0w4q+wMf0K5Yj9iOwu/TIn7JkLyHDMQ20qRwGxZplS2WUb669gIRg+l6jUHeTBW+dlTxr0mMa6WHIl8UDpHwfFrGC3i6dL4y6WlDwGl2rYktvOoA/iqvtglBcHuXaL2sDfhp5MXRcYULTIw+b9zmiQXP665DQN+Su5I3gwB4y5X8RH72GAacZn13fEIo5i8UUoHM7UQxM8y8DKSO3avyFCfpUle9+9sErQVW7b6JV1c+AoLWuAhNJLMlUTKarZE7UMqfjvoQHxX5hp2B2WHLEON/UJiGf25HJWx6VhJitE0/odujqnG/umesqki2jMTs6gPcxbc9iBjzUg+ZmFztdtC+Emnni7lpqVVl+Y5hsJRn3Z6rIiNgwmaE0r2OQgAm1vRYFc7jvOdRfyFG+uCRZF6nS56BzJ7dLc0WW8dTgSft6YFll4ZYL6hiI9qiIaBAK948y5HV+6VBWuO3xf/G2CUFbE1Y9qUCjToh3ahxNDzZvXB+rXqvlvNQOi5l8n594oQ61n45qIHSKlMBn9Bxhw29oWT5mo1aYIaNXbpzKam2w4mK0T3VrgTszu/3282wRbNr+VAwdGMfwW1s=
file:
- HMCL/build/libs/HMCL-2.4.0.233.jar
- HMCL/build/libs/HMCL-2.4.0.233.exe
- HMCL/build/libs/HMCL-${VERSION_ROOT}.${TRAVIS_BUILD_NUMBER}.jar
- HMCL/build/libs/HMCL-${VERSION_ROOT}.${TRAVIS_BUILD_NUMBER}.exe
on:
repo: huanghongxun/HMCL
tags: false
skip_cleanup: true
install: echo "skip 'gradle assemble' step"
script: gradle build --continue
+10 -2
View File
@@ -26,10 +26,18 @@ if (!hasProperty('mainClass')) {
ext.mainClass = 'org.jackhuang.hellominecraft.launcher.Main'
}
def buildnumber = System.getenv("BUILD_NUMBER") == null ? ".233" : "."+System.getenv("BUILD_NUMBER")
def buildnumber = System.getenv("TRAVIS_BUILD_NUMBER")
if (buildnumber == null)
buildnumber = System.getenv("BUILD_NUMBER")
if (buildnumber == null)
buildnumber = "233"
def versionroot = System.getenv("VERSION_ROOT")
if (versionroot == null)
versionroot = "2.4.1"
String mavenGroupId = 'HMCL'
String mavenVersion = '2.4.0' + buildnumber
String mavenVersion = versionroot + '.' + buildnumber
String bundleName = "Hello Minecraft! Launcher"
group = mavenGroupId
Executable
+1
View File
@@ -0,0 +1 @@
/home/huangyuhui/softwares/jdk1.8.0_65/jre/bin/java -XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Xmn128m -Xmx3968m -Djava.library.path=/home/huangyuhui/game/testempty/versions/1.9-pre3/1.9-pre3-natives -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true -Duser.home=/home/huangyuhui/game -cp /home/huangyuhui/NetBeansProjects/HMCL/HMCL/build/classes/main/:/home/huangyuhui/NetBeansProjects/HMCL/HMCL/build/resources/main/:/home/huangyuhui/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.2.4/a60a5e993c98c864010053cb901b7eab25306568/gson-2.2.4.jar:/home/huangyuhui/NetBeansProjects/HMCL/MetroLookAndFeel/build/libs/MetroLookAndFeel.jar:/home/huangyuhui/NetBeansProjects/HMCL/HMCLAPI/build/libs/HMCLAPI.jar:/home/huangyuhui/.gradle/caches/modules-2/files-2.1/org.commonjava.googlecode.markdown4j/markdown4j/2.2-cj-1.0/ba35b052c48261a17e94ae5c31e8e9ad9b9f4d2c/markdown4j-2.2-cj-1.0.jar org.jackhuang.hellominecraft.launcher.Launcher -cp=/home/huangyuhui/game/testempty/libraries/oshi-project/oshi-core/1.1/oshi-core-1.1.jar:/home/huangyuhui/game/testempty/libraries/net/java/dev/jna/jna/3.4.0/jna-3.4.0.jar:/home/huangyuhui/game/testempty/libraries/net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar:/home/huangyuhui/game/testempty/libraries/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar:/home/huangyuhui/game/testempty/libraries/net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.jar:/home/huangyuhui/game/testempty/libraries/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar:/home/huangyuhui/game/testempty/libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar:/home/huangyuhui/game/testempty/libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar:/home/huangyuhui/game/testempty/libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar:/home/huangyuhui/game/testempty/libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar:/home/huangyuhui/game/testempty/libraries/io/netty/netty-all/4.0.23.Final/netty-all-4.0.23.Final.jar:/home/huangyuhui/game/testempty/libraries/com/google/guava/guava/17.0/guava-17.0.jar:/home/huangyuhui/game/testempty/libraries/org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.jar:/home/huangyuhui/game/testempty/libraries/commons-io/commons-io/2.4/commons-io-2.4.jar:/home/huangyuhui/game/testempty/libraries/commons-codec/commons-codec/1.9/commons-codec-1.9.jar:/home/huangyuhui/game/testempty/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar:/home/huangyuhui/game/testempty/libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar:/home/huangyuhui/game/testempty/libraries/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar:/home/huangyuhui/game/testempty/libraries/com/mojang/authlib/1.5.22/authlib-1.5.22.jar:/home/huangyuhui/game/testempty/libraries/com/mojang/realms/1.8.1/realms-1.8.1.jar:/home/huangyuhui/game/testempty/libraries/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar:/home/huangyuhui/game/testempty/libraries/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar:/home/huangyuhui/game/testempty/libraries/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/home/huangyuhui/game/testempty/libraries/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar:/home/huangyuhui/game/testempty/libraries/org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.jar:/home/huangyuhui/game/testempty/libraries/org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.jar:/home/huangyuhui/game/testempty/libraries/org/lwjgl/lwjgl/lwjgl/2.9.4-nightly-20150209/lwjgl-2.9.4-nightly-20150209.jar:/home/huangyuhui/game/testempty/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar:/home/huangyuhui/game/testempty/versions/1.9-pre3/1.9-pre3.jar -mainClass=net.minecraft.client.main.Main --username huangyuhui --version "HMCL 2.4.0.233" --gameDir /home/huangyuhui/game/testempty --assetsDir /home/huangyuhui/game/testempty/assets --assetIndex 1.9 --uuid c14d042145c04aff8ecbcf85ebbc4400 --accessToken 6fc6bdb6854c4692a5edcd3da4444fb0 --userType mojang --versionType "HMCL 2.4.0.233" --height 480 --width 854
@@ -122,6 +122,8 @@ public final class Main implements Runnable {
if (IUpgrader.NOW_UPGRADER.parseArguments(getVersionNumber(), args))
return;
System.setProperty("awt.useSystemAAFontSettings", "on");
System.setProperty("swing.aatext", "true");
System.setProperty("sun.java2d.noddraw", "true");
System.setProperty("sun.java2d.dpiaware", "false");
Thread.setDefaultUncaughtExceptionHandler(new CrashReporter(true));
@@ -76,11 +76,33 @@ public class MinecraftAssetService extends IMinecraftAssetService {
MinecraftVersion mv = service.version().getVersionById(id);
if (mv == null)
return false;
return downloadMinecraftAssetsIndex(mv.getAssetsIndex());
return downloadMinecraftAssetsIndexAsync(mv.getAssetsIndex());
}
@Override
public boolean downloadMinecraftAssetsIndex(AssetIndexDownloadInfo assets) {
File assetsLocation = getAssets();
if (!assetsLocation.exists() && !assetsLocation.mkdirs())
HMCLog.warn("Failed to make directories: " + assetsLocation);
File assetsIndex = new File(assetsLocation, "indexes/" + assets.getId() + ".json");
File renamed = null;
if (assetsIndex.exists()) {
renamed = new File(assetsLocation, "indexes/" + assets.getId() + "-renamed.json");
if (assetsIndex.renameTo(renamed))
HMCLog.warn("Failed to rename " + assetsIndex + " to " + renamed);
}
if (new FileDownloadTask(assets.getUrl(service.getDownloadType()), IOUtils.tryGetCanonicalFile(assetsIndex), assets.sha1).setTag(assets.getId() + ".json").run()) {
if (renamed != null && !renamed.delete())
HMCLog.warn("Failed to delete " + renamed + ", maybe you should do it.");
return true;
}
if (renamed != null && !renamed.renameTo(assetsIndex))
HMCLog.warn("Failed to rename " + renamed + " to " + assetsIndex);
return false;
}
@Override
public boolean downloadMinecraftAssetsIndexAsync(AssetIndexDownloadInfo assets) {
File assetsLocation = getAssets();
if (!assetsLocation.exists() && !assetsLocation.mkdirs())
HMCLog.warn("Failed to make directories: " + assetsLocation);
@@ -80,10 +80,12 @@ public abstract class AbstractMinecraftLoader implements IMinecraftLoader {
if (jv == null || !jv.isEarlyAccess()) {
if (OS.os() == OS.WINDOWS)
res.add("-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump");
res.add("-XX:+UseConcMarkSweepGC");
if (jv != null && jv.getParsedVersion() >= JdkVersion.JAVA_17)
res.add("-XX:+UseG1GC");
else
res.add("-Xincgc");
res.add("-XX:-UseAdaptiveSizePolicy");
res.add("-XX:-OmitStackTraceInFastThrow");
res.add("-Xincgc");
res.add("-Xmn128m");
}
@@ -86,7 +86,7 @@ public final class ModpackManager {
@Override
public void executeTask() throws Throwable {
String id = idFUCK;
String description = C.i18n("modpack.install.will_install");
String description = C.i18n("modpack.task.install.will");
// Read modpack name and description from `modpack.json`
try (ZipFile zip = new ZipFile(input)) {
@@ -106,7 +106,7 @@ public final class ModpackManager {
// Show a window to let the user know that what and how the modpack is.
Object msgs[] = new Object[2];
msgs[0] = C.i18n("modpack.install.task");
msgs[0] = C.i18n("modpack.task.install");
msgs[1] = new WebPage(description);
((WebPage) msgs[1]).setPreferredSize(new Dimension(800, 350));
int result = JOptionPane.showOptionDialog(null, msgs, (String) msgs[0], JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);
@@ -191,7 +191,7 @@ public final class ModpackManager {
@Override
public String getInfo() {
return C.i18n("modpack.install.task");
return C.i18n("modpack.task.install");
}
@Override
@@ -202,8 +202,8 @@ public final class ModpackManager {
}
public static final List<String> MODPACK_BLACK_LIST = Arrays.asList(new String[] { "usernamecache.json", "asm", "logs", "backups", "versions", "assets", "usercache.json", "libraries", "crash-reports", "launcher_profiles.json", "NVIDIA", "AMD", "TCNodeTracker", "screenshots", "natives", "native", "$native", "pack.json", "launcher.jar", "launcher.pack.lzma", "hmclmc.log" });
public static final List<String> MODPACK_SUGGESTED_BLACK_LIST = Arrays.asList(new String[] { "saves", "servers.dat", "options.txt", "optionsshaders.txt", "mods/VoxelMods" });
public static final List<String> MODPACK_BLACK_LIST = Arrays.asList(new String[] { "usernamecache.json", "asm", "logs", "backups", "versions", "assets", "usercache.json", "libraries", "crash-reports", "launcher_profiles.json", "NVIDIA", "AMD", "TCNodeTracker", "screenshots", "natives", "native", "$native", "pack.json", "launcher.jar", "minetweaker.log", "launcher.pack.lzma", "hmclmc.log" });
public static final List<String> MODPACK_SUGGESTED_BLACK_LIST = Arrays.asList(new String[] { "fonts", "saves", "servers.dat", "options.txt", "optionsof.txt", "journeymap", "optionsshaders.txt", "mods/VoxelMods" });
/**
* &lt; String, Boolean, Boolean &gt;: Folder/File name, Is Directory,
@@ -45,6 +45,8 @@ public abstract class IMinecraftAssetService extends IMinecraftBasicService {
*/
public abstract boolean refreshAssetsIndex(String a);
public abstract boolean downloadMinecraftAssetsIndexAsync(AssetIndexDownloadInfo assetsId);
public abstract boolean downloadMinecraftAssetsIndex(AssetIndexDownloadInfo assetsId);
public abstract File getAssetObject(String assetVersion, String name) throws IOException;
@@ -35,7 +35,10 @@ public class LibraryDownloadInfo extends GameDownloadInfo {
if (StrUtils.isNotBlank(url) && allowSelf)
myURL = url;
if (!myURL.endsWith(".jar"))
myURL += path.replace('\\', '/');
if (path == null)
return null;
else
myURL += path.replace('\\', '/');
return myURL;
}
}
@@ -73,8 +73,9 @@ public class MinecraftVersion implements Cloneable, Comparable<MinecraftVersion>
this.libraries = new ArrayList<>();
else {
this.libraries = new ArrayList<>(libraries.size());
for (IMinecraftLibrary library : libraries)
this.libraries.add((MinecraftLibrary) library.clone());
for (MinecraftLibrary library : libraries)
if (library != null)
this.libraries.add((MinecraftLibrary) library.clone());
}
if (downloads == null)
this.downloads = null;
@@ -117,7 +117,7 @@ public class VersionSetting {
java = "Custom";
int idx = Java.JAVA.indexOf(new Java(java, null));
if (idx == -1) {
java = "Default";
java = Java.suggestedJava().getName();
idx = 0;
}
return idx;
@@ -97,6 +97,7 @@ public class LaunchingUIDaemon {
HMCLog.err("The game exited abnormally, exit code: " + t);
MessageBox.Show(C.i18n("launch.exited_abnormally") + " exit code: " + t);
WebFrame f = new WebFrame(jpm.getJavaProcess().getStdOutLines().toArray(new String[0]));
f.setModal(true);
f.setTitle("Game output");
f.setVisible(true);
checkExit((LauncherVisibility) obj.getTag());
@@ -105,6 +106,7 @@ public class LaunchingUIDaemon {
HMCLog.err("Cannot create jvm, exit code: " + t);
MessageBox.Show(C.i18n("launch.cannot_create_jvm") + " exit code: " + t);
WebFrame f = new WebFrame(jpm.getJavaProcess().getStdOutLines().toArray(new String[0]));
f.setModal(true);
f.setTitle("Game output");
f.setVisible(true);
checkExit((LauncherVisibility) obj.getTag());
@@ -258,7 +258,7 @@
<Component class="javax.swing.JButton" name="btnImportModpack">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="org/jackhuang/hellominecraft/lang/I18N.properties" key="modpack.install.task" replaceFormat="C.i18n(&quot;{key}&quot;)"/>
<ResourceString bundle="org/jackhuang/hellominecraft/lang/I18N.properties" key="modpack.task.install" replaceFormat="C.i18n(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
@@ -268,7 +268,7 @@
<Component class="javax.swing.JButton" name="btnExportModpack">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="org/jackhuang/hellominecraft/lang/I18N.properties" key="modpack.save.task" replaceFormat="C.i18n(&quot;{key}&quot;)"/>
<ResourceString bundle="org/jackhuang/hellominecraft/lang/I18N.properties" key="modpack.task.save" replaceFormat="C.i18n(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
@@ -233,14 +233,14 @@ public class MainPagePanel extends AnimatedPanel {
pnlPassword.add(jPanel3, "card3");
btnImportModpack.setText(C.i18n("modpack.install.task")); // NOI18N
btnImportModpack.setText(C.i18n("modpack.task.install")); // NOI18N
btnImportModpack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnImportModpackActionPerformed(evt);
}
});
btnExportModpack.setText(C.i18n("modpack.save.task")); // NOI18N
btnExportModpack.setText(C.i18n("modpack.task.save")); // NOI18N
btnExportModpack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnExportModpackActionPerformed(evt);
@@ -46,7 +46,7 @@
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="61" max="32767" attributes="0"/>
<EmptySpace pref="19" max="32767" attributes="0"/>
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="txtModpackName" min="-2" max="-2" attributes="0"/>
@@ -72,7 +72,7 @@
<Component class="javax.swing.JLabel" name="lblModpackLocation">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="org/jackhuang/hellominecraft/lang/I18N.properties" key="modpack.save" replaceFormat="C.i18n(&quot;{key}&quot;)"/>
<ResourceString bundle="org/jackhuang/hellominecraft/lang/I18N.properties" key="modpack.wizard.step.initialization.save" replaceFormat="C.i18n(&quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
@@ -91,7 +91,9 @@
</Component>
<Component class="javax.swing.JLabel" name="lblGameVersion">
<Properties>
<Property name="text" type="java.lang.String" value="&#x8981;&#x5bfc;&#x51fa;&#x7684;&#x6e38;&#x620f;&#x7248;&#x672c;"/>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="org/jackhuang/hellominecraft/lang/I18N.properties" key="modpack.wizard.step.initialization.exported_version" replaceFormat="C.i18n(&quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JComboBox" name="cboGameVersion">
@@ -110,7 +112,7 @@
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="org/jackhuang/hellominecraft/launcher/I18N.properties" key="modpack.warning" replaceFormat="C.i18n(&quot;{key}&quot;)"/>
<ResourceString bundle="org/jackhuang/hellominecraft/lang/I18N.properties" key="modpack.wizard.step.initialization.warning" replaceFormat="C.i18n(&quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
@@ -131,7 +133,9 @@
</Component>
<Component class="javax.swing.JCheckBox" name="chkIncludeLauncher">
<Properties>
<Property name="text" type="java.lang.String" value="&#x5305;&#x542b;&#x542f;&#x52a8;&#x5668;"/>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="org/jackhuang/hellominecraft/lang/I18N.properties" key="modpack.wizard.step.initialization.include_launcher" replaceFormat="C.i18n(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="chkIncludeLauncherItemStateChanged"/>
@@ -82,7 +82,7 @@ public class ModpackInitializationPanel extends javax.swing.JPanel {
txtModpackName = new javax.swing.JTextField();
chkIncludeLauncher = new javax.swing.JCheckBox();
lblModpackLocation.setText(C.i18n("modpack.save")); // NOI18N
lblModpackLocation.setText(C.i18n("modpack.wizard.step.initialization.save")); // NOI18N
txtModpackLocation.addCaretListener(new javax.swing.event.CaretListener() {
public void caretUpdate(javax.swing.event.CaretEvent evt) {
@@ -97,7 +97,7 @@ public class ModpackInitializationPanel extends javax.swing.JPanel {
}
});
lblGameVersion.setText("要导出的游戏版本");
lblGameVersion.setText(C.i18n("modpack.wizard.step.initialization.exported_version")); // NOI18N
cboGameVersion.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
@@ -105,7 +105,7 @@ public class ModpackInitializationPanel extends javax.swing.JPanel {
}
});
jLabel1.setText(C.i18n("modpack.warning")); // NOI18N
jLabel1.setText(C.i18n("modpack.wizard.step.initialization.warning")); // NOI18N
jLabel2.setText(C.i18n("modpack.name")); // NOI18N
@@ -116,7 +116,7 @@ public class ModpackInitializationPanel extends javax.swing.JPanel {
}
});
chkIncludeLauncher.setText("包含启动器");
chkIncludeLauncher.setText(C.i18n("modpack.wizard.step.initialization.include_launcher")); // NOI18N
chkIncludeLauncher.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
chkIncludeLauncherItemStateChanged(evt);
@@ -140,7 +140,7 @@ public class ModpackInitializationPanel extends javax.swing.JPanel {
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblGameVersion)
.addComponent(jLabel1)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)
.addComponent(chkIncludeLauncher))
.addGap(0, 0, Short.MAX_VALUE)))
@@ -150,8 +150,8 @@ public class ModpackInitializationPanel extends javax.swing.JPanel {
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 61, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 19, Short.MAX_VALUE)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtModpackName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
@@ -174,7 +174,7 @@ public class ModpackInitializationPanel extends javax.swing.JPanel {
private void cboModpackLocationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cboModpackLocationActionPerformed
JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
fc.setDialogTitle(C.i18n("modpack.save"));
fc.setDialogTitle(C.i18n("modpack.wizard.step.initialization.save"));
fc.setMultiSelectionEnabled(false);
fc.setFileFilter(new FileNameExtensionFilter(C.i18n("modpack") + "(*.zip)", "zip"));
fc.showSaveDialog(this);
@@ -178,8 +178,7 @@ public class ModpackWizard extends WizardBranchController {
throw new IllegalArgumentException(id);
}
}
}
);
});
}
@Override
@@ -49,6 +49,7 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler {
put("AWTError", "");
put("JFileChooser", "Has your operating system been installed completely or is a ghost system? ");
put("JceSecurityManager", "Has your operating system been installed completely or is a ghost system? ");
put("couldn't create component peer", "Fucking computer!");
put("sun.awt.shell.Win32ShellFolder2", "crash.user_fault");
put("UnsatisfiedLinkError", "crash.user_fault");
put("java.awt.HeadlessException", "crash.headless");
@@ -58,6 +59,7 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler {
put("java.lang.IncompatibleClassChangeError", "crash.NoClassDefFound");
put("java.lang.ClassFormatError", "crash.NoClassDefFound");
put("java.lang.OutOfMemoryError", "FUCKING MEMORY LIMIT!");
put("Trampoline", "ui.message.update_java");
}
};
@@ -125,6 +125,8 @@ public class IOUtils {
}
public static boolean isAbsolutePath(String path) {
if (path == null)
return true;
return path.startsWith("/") || path.indexOf(":") > 0;
}
@@ -44,6 +44,13 @@ public class Java {
JAVA = Collections.unmodifiableList(temp);
}
public static Java suggestedJava() {
for (Java j : JAVA)
if (j.name.startsWith("1.8") || j.name.startsWith("9"))
return j;
return JAVA.get(0);
}
String name, home;
public Java(String name, String home) {
@@ -66,6 +66,14 @@ public class ProcessThread extends Thread {
line = "";
} else
line += (char) ch;
while ((ch = br.read()) != -1)
if (ch == '\n') {
printlnEvent.execute(line);
System.out.println("Minecraft: " + line);
p.getStdOutLines().add(line);
line = "";
} else
line += (char) ch;
stopEvent.execute(p);
} catch (Exception e) {
HMCLog.err("An error occured when reading process stdout/stderr.", e);
@@ -100,6 +100,8 @@ public class ZipEngine {
zos.putNextEntry(new ZipEntry(pathName));
putDirectoryImpl(file, basePath, pathNameCallback);
} else {
if (".DS_Store".equals(file.getName())) // For mac computers.
continue;
pathName = file.getPath().substring(basePath.length() + 1);
if (pathNameCallback != null)
pathName = pathNameCallback.apply(pathName, false);
@@ -176,7 +176,7 @@ public class TaskList extends Thread {
while (!in.isEmpty())
synchronized (in) {
Invoker it = in.iterator().next();
if (!it.task.abort())
if (!it.task.abort() && futures.get(it) != null)
futures.get(it).cancel(true);
in.remove(it);
}
@@ -118,8 +118,7 @@ public class FileDownloadTask extends Task implements PreviousResult<File>, Prev
this.url = IOUtils.parseURL(p.getResult());
for (int repeat = 0; repeat < 6; repeat++) {
if (repeat > 0) {
HMCLog.warn("Failed to download, repeat: " + repeat);
if (repeat > 0)
if (failedCallbackReturnsNewURL != null) {
URL tmp = IOUtils.parseURL(failedCallbackReturnsNewURL.apply(repeat));
if (tmp != null) {
@@ -127,7 +126,7 @@ public class FileDownloadTask extends Task implements PreviousResult<File>, Prev
HMCLog.warn("Switch to: " + url);
}
}
}
HMCLog.log("Downloading: " + url + ", to: " + filePath);
if (!shouldContinue)
break;
try {
@@ -21,6 +21,7 @@ import java.awt.Component;
import java.awt.EventQueue;
import java.awt.FontMetrics;
import java.awt.Frame;
import java.awt.Window;
import java.io.File;
import java.io.IOException;
import java.net.URI;
@@ -279,13 +280,13 @@ public class SwingUtils {
component.setEnabled(t);
}
public static void exitIfNoWindow(Frame thisFrame) {
public static void exitIfNoWindow(Window thisFrame) {
exitIfNoWindow(thisFrame, false);
}
public static void exitIfNoWindow(Frame thisFrame, boolean neededDispose) {
public static void exitIfNoWindow(Window thisFrame, boolean neededDispose) {
boolean flag = false;
for (Frame f : Frame.getFrames()) {
for (Window f : Window.getWindows()) {
if (f == thisFrame)
continue;
if (f.isVisible())
@@ -17,13 +17,9 @@
*/
package org.jackhuang.hellominecraft.util.ui;
import java.awt.Frame;
import java.awt.HeadlessException;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JDialog;
import org.jackhuang.hellominecraft.util.StrUtils;
import org.jackhuang.hellominecraft.util.logging.Level;
@@ -31,14 +27,15 @@ import org.jackhuang.hellominecraft.util.logging.Level;
*
* @author huangyuhui
*/
public class WebFrame extends JFrame {
public class WebFrame extends JDialog {
public WebFrame(String... strs) {
this(("<html>" + StrUtils.parseParams(t -> ("<font color='#" + GraphicsUtils.getColor(Level.guessLevel((String) t, Level.INFO).COLOR) + "'>"), strs, t -> "</font><br />") + "</html>")
.replace(" ", "&nbsp;").replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;"));
}
public WebFrame(String content) throws HeadlessException {
public WebFrame(String content) {
super((JDialog) null, false);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
@@ -64,16 +64,18 @@ public class NavProgress implements ResultProgressHandle {
public void setProgress(final int currentStep, final int totalSteps) {
invoke(() -> {
if (totalSteps == -1)
progressBar.setIndeterminate(true);
else {
if (totalSteps == -1) {
if (!progressBar.isIndeterminate())
progressBar.setIndeterminate(true);
} else {
if (currentStep > totalSteps || currentStep < 0) {
if (currentStep == -1 && totalSteps == -1)
return;
throw new IllegalArgumentException("Bad step values: "
+ currentStep + " out of " + totalSteps);
}
progressBar.setIndeterminate(false);
if (progressBar.isIndeterminate())
progressBar.setIndeterminate(false);
progressBar.setMaximum(totalSteps);
progressBar.setValue(currentStep);
}
@@ -83,8 +85,8 @@ public class NavProgress implements ResultProgressHandle {
public void setBusy(final String description) {
invoke(() -> {
lbl.setText(description == null ? " " : description);
progressBar.setIndeterminate(true);
if (!progressBar.isIndeterminate())
progressBar.setIndeterminate(true);
});
}
@@ -27,6 +27,7 @@ import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.IllegalComponentStateException;
import java.awt.Insets;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Locale;
@@ -159,6 +160,8 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
public final void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
Font f = getFont() != null ? getFont() : UIManager.getFont("controlFont");
FontMetrics fm = g.getFontMetrics(f);
Insets ins = getInsets();
@@ -185,7 +188,6 @@ public class InstructionsPanelImpl extends JComponent implements WizardObserver,
int h = fm.getMaxAscent() + fm.getMaxDescent() + 3;
Font boldFont = f.deriveFont(Font.BOLD);
g.setFont(boldFont);
g.drawString(C.i18n("wizard.steps"), x, y);
@@ -36,7 +36,7 @@ import javax.swing.JTextArea;
* SimpleWizard created for it, acting as the WizardController for
* calls to WizardPanelProvider.createPanel().
*/
final class SimpleWizardInfo implements WizardControllerImplementation {
public final class SimpleWizardInfo implements WizardControllerImplementation {
private WeakReference wizard = null;
private final String[] descriptions;
@@ -318,4 +318,8 @@ final class SimpleWizardInfo implements WizardControllerImplementation {
boolean cancel(Map settings) {
return provider.cancel(settings);
}
public WizardPanelProvider getProvider() {
return provider;
}
}
@@ -8,113 +8,123 @@ and include the License file at http://www.netbeans.org/cddl.txt.
If applicable, add the following below the CDDL Header, with the fields
enclosed by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]" */
/*
/*
* WizardBranchController.java
*
* Created on March 5, 2005, 6:33 PM
*/
package org.jackhuang.hellominecraft.util.ui.wizard.spi;
import java.util.Map;
/**
* Extend this class to create wizards which have branch points in them -
* either override <code>getWizardForStep</code> to return one or another a wizard which
* represents the subsequent steps after a decision point, or override
* <code>getPanelProviderForStep</code> to provide instances of <code>WizardPanelProvider</code>
* if there are no subsequent branch points and the continuation is a
* Extend this class to create wizards which have branch points in them -
* either override <code>getWizardForStep</code> to return one or another a
* wizard which
* represents the subsequent steps after a decision point, or override
* <code>getPanelProviderForStep</code> to provide instances of
* <code>WizardPanelProvider</code>
* if there are no subsequent branch points and the continuation is a
* simple wizard.
* <p>
* The basic idea is to supply a base wizard for the initial steps, stopping
* at the branch point. The panel for the branch point should put enough
* information into the settings map that the WizardBranchController can
* at the branch point. The panel for the branch point should put enough
* information into the settings map that the WizardBranchController can
* decide what to return as the remaining steps of the wizard.
* <p>
* The result is a <code>Wizard</code> which embeds sub-wizards; when the
* The result is a <code>Wizard</code> which embeds sub-wizards; when the
* <code>PanelProvider</code> passed to the constructor runs out of steps,
* the master <code>Wizard</code> will try to find a sub-<code>Wizard</code>
* by calling <code>getWizardForStep</code>. If non-null, the user seamlessly
* continues in the returned wizard. To create <code>Wizard</code>s with
* by calling <code>getWizardForStep</code>. If non-null, the user seamlessly
* continues in the returned wizard. To create <code>Wizard</code>s with
* multiple branches, simply override <code>getWizardForStep</code> to create
* another <code>WizardBranchController</code> and return the result of its
* <code>createWizard</code> method.
* <p>
* Note that it is important to cache the instances of <code>WizardPanelProvider</code>
* Note that it is important to cache the instances of
* <code>WizardPanelProvider</code>
* or <code>Wizard</code> which are returned here - this class's methods may
* be called frequently to determine if the sequence of steps (the next wizard)
* have changed.
*
*
* @author Tim Boudreau
*/
public abstract class WizardBranchController {
private final SimpleWizardInfo base;
/**
* Create a new WizardBranchController. The <code>base</code> argument
* Create a new WizardBranchController. The <code>base</code> argument
* provides the initial step(s) of the wizard up; when the user comes to
* the last step of the base wizard, this WizardBranchController will be
* asked for a wizard to provide subsequent panes. So the base wizard
* asked for a wizard to provide subsequent panes. So the base wizard
* should put some token into the settings map based on what the user
* selects on its final pane, which the WizardBranchController can use
* to decide what the next steps should be.
*/
protected WizardBranchController (WizardPanelProvider base) {
this (new SimpleWizardInfo (base));
protected WizardBranchController(WizardPanelProvider base) {
this(new SimpleWizardInfo(base));
}
/**
* Create a new WizardBranchController using the passed WizardPage
* instances as the initial pages of the wizard.
*
* @param pages An array of WizardPage instances
*/
protected WizardBranchController (WizardPage[] pages) {
this (WizardPage.createWizardPanelProvider(pages));
*/
protected WizardBranchController(WizardPage[] pages) {
this(WizardPage.createWizardPanelProvider(pages));
}
/**
* Create a new WizardBranchController using the passed WizardPage
* as the initial page of the wizard. The initial page should
* as the initial page of the wizard. The initial page should
* determine the subsequent steps of the wizard.
*
* @param onlyPage An instance of WizardPage
*/
protected WizardBranchController (WizardPage onlyPage) {
this (WizardPage.createWizardPanelProvider(onlyPage));
}
*/
protected WizardBranchController(WizardPage onlyPage) {
this(WizardPage.createWizardPanelProvider(onlyPage));
}
/**
* Create a new WizardBranchController, using the passed <code>SimpleWizardInfo</code>
* Create a new WizardBranchController, using the passed
* <code>SimpleWizardInfo</code>
* for the initial panes of the wizard.
*/
WizardBranchController (SimpleWizardInfo base) {
if (base == null) throw new NullPointerException ("No base");
WizardBranchController(SimpleWizardInfo base) {
if (base == null)
throw new NullPointerException("No base");
this.base = base;
}
/**
* Get the wizard which represents the subsequent panes after this step.
* The UI for the current step should have put sufficient data into the
* settings map to decide what to return; return null if not.
* settings map to decide what to return; return null if not.
* <p>
* The default implementation delegates to <code>getPanelProviderForStep()</code>
* The default implementation delegates to
* <code>getPanelProviderForStep()</code>
* and returns a <code>Wizard</code> representing the result of that
* call.
* call.
* <p>
* <b>Note:</b> This method can be called very frequently, to determine
* if the sequence of steps has changed - so it needs to run fast.
* Returning the same instance every time the same arguments are passed
* is highly recommended. It will typically be called whenever a change
* <b>Note:</b> This method can be called very frequently, to determine
* if the sequence of steps has changed - so it needs to run fast.
* Returning the same instance every time the same arguments are passed
* is highly recommended. It will typically be called whenever a change
* is fired by the base wizard (i.e. every call <code>setProblem()</code>
* should generate a check to see if the navigation has changed).
* <p>
* Note that the wizard for the subsequent steps will be instantiated
* as soon as it is known what the user's choice is, so the list of
* as soon as it is known what the user's choice is, so the list of
* pending steps can be updated (this does not mean that all subsequent
* panel UI components of the wizard will be instantiated, just the
* Wizard object itself, which will create panels on demand if they
* have not already been created).
*
* @param step The current step the user is on in the wizard
* @param step The current step the user is on in the wizard
* @param settings The settings map, which previous panes of the wizard
* have been writing information into
* have been writing information into
*/
protected Wizard getWizardForStep(String step, Map settings) {
WizardPanelProvider provider = getPanelProviderForStep(step, settings);
@@ -122,42 +132,44 @@ public abstract class WizardBranchController {
}
/**
* Override this method to return a <code>WizardPanelProvider</code> representing the
* Override this method to return a <code>WizardPanelProvider</code>
* representing the
* steps from here to the final step of the wizard, varying the returned
* object based on the contents of the map and the step in question.
* The default implementation of this method throws an <code>Error</code> -
* The default implementation of this method throws an <code>Error</code> -
* either override this method, or override <code>getWizardForStep()</code>
* (in which case this method will not be called).
* <p>
* <b>Note:</b> This method can be called very frequently, to determine
* if the sequence of steps has changed - so it needs to run fast.
* <b>Note:</b> This method can be called very frequently, to determine
* if the sequence of steps has changed - so it needs to run fast.
* Returning the same instance every time called with equivalent arguments
* is highly recommended.
*
* @param step The string ID of the current step
*
* @param step The string ID of the current step
* @param settings The settings map, which previous panes of the wizard
* will have written content into
* will have written content into
*/
protected WizardPanelProvider getPanelProviderForStep(String step, Map settings) {
throw new Error ("Override either createInfoForStep or " +
"createWizardForStep");
throw new Error("Override either createInfoForStep or "
+ "createWizardForStep");
}
SimpleWizardInfo getBase() {
return base;
}
private WizardImplementation wizard = null;
private Wizard real = null;
/**
* Create a Wizard to represent this branch controller. The resulting
* Create a Wizard to represent this branch controller. The resulting
* Wizard instance is cached; subsequent calls to this method will return
* the same instance.
*/
public final Wizard createWizard() {
if (wizard == null) {
wizard = new BranchingWizard (this);
real = new Wizard (wizard);
wizard = new BranchingWizard(this);
real = new Wizard(wizard);
}
return real;
}
@@ -167,6 +167,7 @@ ui.message.enter_password=请在左边输入您的密码
ui.message.launching=启动中
ui.message.making=生成中
ui.message.sure_remove=真的要删除配置%s吗?
ui.message.update_java=请更新您的Java
ui.label.settings=选项
ui.label.crashing=<html>Hello Minecraft!遇到了无法处理的错误,请复制下列内容并通过mcbbs、贴吧、Github或Minecraft Forum反馈bug。</html>
@@ -220,29 +221,34 @@ settings.test_game=测试游戏
modpack=整合包
modpack.choose=选择要导入的游戏整合包文件,如果您希望更新整合包,请输入要更新的版本名
modpack.install.task=导入整合包
modpack.install_error=安装失败,可能是整合包格式不正确或操作文件失败
modpack.install.will_install=将会安装整合包:
modpack.save=选择要导出到的游戏整合包位置
modpack.save.task=导出整合包
modpack.export_error=导出失败,可能是您的游戏文件夹格式不正确或操作文件失败
modpack.export_finished=整合包导出完成,参见
modpack.included_launcher=整合包已包含启动器,可直接发布
modpack.not_included_launcher=整合包未包含启动器,可使用本软件的导入整合包功能导入整合包
modpack.enter_name=给游戏起个你喜欢的名字
modpack.task.save=导出整合包
modpack.task.install=导入整合包
modpack.task.install.error=安装失败,可能是整合包格式不正确或操作文件失败
modpack.task.install.will=将会安装整合包:
modpack.wizard=导出整合包向导
modpack.wizard.step.1=基本设置
modpack.wizard.step.1.title=设置整合包的主要信息
modpack.wizard.step.initialization.include_launcher=包含启动器
modpack.wizard.step.initialization.exported_version=要导出的游戏版本
modpack.wizard.step.initialization.save=选择要导出到的游戏整合包位置
modpack.wizard.step.initialization.warning=<html>在制作整合包前,请您确认您选择的版本可以正常启动,<br/>并保证您的Minecraft是正式版而非快照版,<br/>而且不应当将不允许非官方途径传播的Mod、材质包等纳入整合包。<br/>整合包会保存您目前的下载源设置</html>
modpack.wizard.step.2=文件选择
modpack.wizard.step.2.title=选中你不想加到整合包中的文件(夹)
modpack.wizard.step.3=整合包描述
modpack.wizard.step.3.title=描述你要制作的整合包
modpack.desc=描述你要制作的整合包,比如整合包注意事项和更新记录,支持Markdown(图片请用网络图片)。
modpack.incorrect_format.no_json=整合包格式错误,pack.json丢失
modpack.incorrect_format.no_jar=整合包格式错误,pack.json丢失jar字段
modpack.cannot_read_version=读取游戏版本失败
modpack.not_a_valid_location=不是一个有效整合包位置
modpack.warning=<html>在制作整合包前,请您确认您选择的版本可以正常启动,<br/>并保证您的Minecraft是正式版而非快照版,<br/>而且不应当将不允许非官方途径传播的Mod、材质包等纳入整合包。<br/>整合包会保存您目前的下载源设置</html>
modpack.name=整合包名称
modpack.not_a_valid_name=不是一个有效的整合包名称
@@ -277,7 +283,7 @@ advancedsettings.launcher_visibility.hide=游戏启动后隐藏启动器
advancedsettings.launcher_visibility.keep=保持启动器可见
advancedsettings.game_dir.default=默认(.minecraft/)
advancedsettings.game_dir.independent=各版本独立(.minecraft/versions/<版本名>/,除assets,libraries)
advancedsettings.no_jvm_args=不添加JVM参数(使用Java9时必勾)
advancedsettings.no_jvm_args=不添加默认的JVM参数(使用Java9时必勾)
advancedsettings.java_args_default=启动器默认添加的参数(请不要重复添加):-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true
advancedsettings.wrapper_launcher=启动前执行命令(不必填写,将在游戏启动前调用)
advancedsettings.server_ip=直入服务器ip地址(不必填写,启动游戏后直接进入对应服务器)
@@ -167,6 +167,7 @@ ui.message.enter_password=\u8bf7\u5728\u5de6\u8fb9\u8f93\u5165\u60a8\u7684\u5bc6
ui.message.launching=\u542f\u52a8\u4e2d
ui.message.making=\u751f\u6210\u4e2d
ui.message.sure_remove=\u771f\u7684\u8981\u5220\u9664\u914d\u7f6e%s\u5417\uff1f
ui.message.update_java=\u8bf7\u66f4\u65b0\u60a8\u7684Java
ui.label.settings=\u9009\u9879
ui.label.crashing=<html>Hello Minecraft!\u9047\u5230\u4e86\u65e0\u6cd5\u5904\u7406\u7684\u9519\u8bef\uff0c\u8bf7\u590d\u5236\u4e0b\u5217\u5185\u5bb9\u5e76\u901a\u8fc7mcbbs\u3001\u8d34\u5427\u3001Github\u6216Minecraft Forum\u53cd\u9988bug\u3002</html>
@@ -220,29 +221,34 @@ settings.test_game=\u6d4b\u8bd5\u6e38\u620f
modpack=\u6574\u5408\u5305
modpack.choose=\u9009\u62e9\u8981\u5bfc\u5165\u7684\u6e38\u620f\u6574\u5408\u5305\u6587\u4ef6\uff0c\u5982\u679c\u60a8\u5e0c\u671b\u66f4\u65b0\u6574\u5408\u5305\uff0c\u8bf7\u8f93\u5165\u8981\u66f4\u65b0\u7684\u7248\u672c\u540d
modpack.install.task=\u5bfc\u5165\u6574\u5408\u5305
modpack.install_error=\u5b89\u88c5\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u6574\u5408\u5305\u683c\u5f0f\u4e0d\u6b63\u786e\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u8d25
modpack.install.will_install=\u5c06\u4f1a\u5b89\u88c5\u6574\u5408\u5305\uff1a
modpack.save=\u9009\u62e9\u8981\u5bfc\u51fa\u5230\u7684\u6e38\u620f\u6574\u5408\u5305\u4f4d\u7f6e
modpack.save.task=\u5bfc\u51fa\u6574\u5408\u5305
modpack.export_error=\u5bfc\u51fa\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u60a8\u7684\u6e38\u620f\u6587\u4ef6\u5939\u683c\u5f0f\u4e0d\u6b63\u786e\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u8d25
modpack.export_finished=\u6574\u5408\u5305\u5bfc\u51fa\u5b8c\u6210\uff0c\u53c2\u89c1
modpack.included_launcher=\u6574\u5408\u5305\u5df2\u5305\u542b\u542f\u52a8\u5668\uff0c\u53ef\u76f4\u63a5\u53d1\u5e03
modpack.not_included_launcher=\u6574\u5408\u5305\u672a\u5305\u542b\u542f\u52a8\u5668\uff0c\u53ef\u4f7f\u7528\u672c\u8f6f\u4ef6\u7684\u5bfc\u5165\u6574\u5408\u5305\u529f\u80fd\u5bfc\u5165\u6574\u5408\u5305
modpack.enter_name=\u7ed9\u6e38\u620f\u8d77\u4e2a\u4f60\u559c\u6b22\u7684\u540d\u5b57
modpack.task.save=\u5bfc\u51fa\u6574\u5408\u5305
modpack.task.install=\u5bfc\u5165\u6574\u5408\u5305
modpack.task.install.error=\u5b89\u88c5\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u6574\u5408\u5305\u683c\u5f0f\u4e0d\u6b63\u786e\u6216\u64cd\u4f5c\u6587\u4ef6\u5931\u8d25
modpack.task.install.will=\u5c06\u4f1a\u5b89\u88c5\u6574\u5408\u5305\uff1a
modpack.wizard=\u5bfc\u51fa\u6574\u5408\u5305\u5411\u5bfc
modpack.wizard.step.1=\u57fa\u672c\u8bbe\u7f6e
modpack.wizard.step.1.title=\u8bbe\u7f6e\u6574\u5408\u5305\u7684\u4e3b\u8981\u4fe1\u606f
modpack.wizard.step.initialization.include_launcher=\u5305\u542b\u542f\u52a8\u5668
modpack.wizard.step.initialization.exported_version=\u8981\u5bfc\u51fa\u7684\u6e38\u620f\u7248\u672c
modpack.wizard.step.initialization.save=\u9009\u62e9\u8981\u5bfc\u51fa\u5230\u7684\u6e38\u620f\u6574\u5408\u5305\u4f4d\u7f6e
modpack.wizard.step.initialization.warning=<html>\u5728\u5236\u4f5c\u6574\u5408\u5305\u524d\uff0c\u8bf7\u60a8\u786e\u8ba4\u60a8\u9009\u62e9\u7684\u7248\u672c\u53ef\u4ee5\u6b63\u5e38\u542f\u52a8\uff0c<br/>\u5e76\u4fdd\u8bc1\u60a8\u7684Minecraft\u662f\u6b63\u5f0f\u7248\u800c\u975e\u5feb\u7167\u7248\uff0c<br/>\u800c\u4e14\u4e0d\u5e94\u5f53\u5c06\u4e0d\u5141\u8bb8\u975e\u5b98\u65b9\u9014\u5f84\u4f20\u64ad\u7684Mod\u3001\u6750\u8d28\u5305\u7b49\u7eb3\u5165\u6574\u5408\u5305\u3002<br/>\u6574\u5408\u5305\u4f1a\u4fdd\u5b58\u60a8\u76ee\u524d\u7684\u4e0b\u8f7d\u6e90\u8bbe\u7f6e</html>
modpack.wizard.step.2=\u6587\u4ef6\u9009\u62e9
modpack.wizard.step.2.title=\u9009\u4e2d\u4f60\u4e0d\u60f3\u52a0\u5230\u6574\u5408\u5305\u4e2d\u7684\u6587\u4ef6(\u5939)
modpack.wizard.step.3=\u6574\u5408\u5305\u63cf\u8ff0
modpack.wizard.step.3.title=\u63cf\u8ff0\u4f60\u8981\u5236\u4f5c\u7684\u6574\u5408\u5305
modpack.desc=\u63cf\u8ff0\u4f60\u8981\u5236\u4f5c\u7684\u6574\u5408\u5305\uff0c\u6bd4\u5982\u6574\u5408\u5305\u6ce8\u610f\u4e8b\u9879\u548c\u66f4\u65b0\u8bb0\u5f55\uff0c\u652f\u6301Markdown(\u56fe\u7247\u8bf7\u7528\u7f51\u7edc\u56fe\u7247)\u3002
modpack.incorrect_format.no_json=\u6574\u5408\u5305\u683c\u5f0f\u9519\u8bef\uff0cpack.json\u4e22\u5931
modpack.incorrect_format.no_jar=\u6574\u5408\u5305\u683c\u5f0f\u9519\u8bef\uff0cpack.json\u4e22\u5931jar\u5b57\u6bb5
modpack.cannot_read_version=\u8bfb\u53d6\u6e38\u620f\u7248\u672c\u5931\u8d25
modpack.not_a_valid_location=\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u6574\u5408\u5305\u4f4d\u7f6e
modpack.warning=<html>\u5728\u5236\u4f5c\u6574\u5408\u5305\u524d\uff0c\u8bf7\u60a8\u786e\u8ba4\u60a8\u9009\u62e9\u7684\u7248\u672c\u53ef\u4ee5\u6b63\u5e38\u542f\u52a8\uff0c<br/>\u5e76\u4fdd\u8bc1\u60a8\u7684Minecraft\u662f\u6b63\u5f0f\u7248\u800c\u975e\u5feb\u7167\u7248\uff0c<br/>\u800c\u4e14\u4e0d\u5e94\u5f53\u5c06\u4e0d\u5141\u8bb8\u975e\u5b98\u65b9\u9014\u5f84\u4f20\u64ad\u7684Mod\u3001\u6750\u8d28\u5305\u7b49\u7eb3\u5165\u6574\u5408\u5305\u3002<br/>\u6574\u5408\u5305\u4f1a\u4fdd\u5b58\u60a8\u76ee\u524d\u7684\u4e0b\u8f7d\u6e90\u8bbe\u7f6e</html>
modpack.name=\u6574\u5408\u5305\u540d\u79f0
modpack.not_a_valid_name=\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u6574\u5408\u5305\u540d\u79f0
@@ -277,7 +283,7 @@ advancedsettings.launcher_visibility.hide=\u6e38\u620f\u542f\u52a8\u540e\u9690\u
advancedsettings.launcher_visibility.keep=\u4fdd\u6301\u542f\u52a8\u5668\u53ef\u89c1
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.no_jvm_args=\u4e0d\u6dfb\u52a0\u9ed8\u8ba4\u7684JVM\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=\u542f\u52a8\u524d\u6267\u884c\u547d\u4ee4(\u4e0d\u5fc5\u586b\u5199\uff0c\u5c06\u5728\u6e38\u620f\u542f\u52a8\u524d\u8c03\u7528)
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)
@@ -167,6 +167,7 @@ ui.message.enter_password=Please enter your password.
ui.message.launching=Launching...
ui.message.making=Generating...
ui.message.sure_remove=Sure to remove profile %s?
ui.message.update_java=Please upgrade your Java.
ui.label.settings=Settings
ui.label.crashing=<html>Hello Minecraft! Launcher has crashed!</html>
@@ -220,29 +221,34 @@ settings.test_game=Test game
modpack=Mod pack
modpack.choose=Choose a modpack zip file which you want to import. If you want to update the modpack, please enter the version you want to update.
modpack.install.task=Import the modpack
modpack.install_error=Failed to install the modpack, maybe the modpack file is incorrect or failed to manage files.
modpack.install.will_install=Will install the modpack:
modpack.save=Choose a location which you want to export the game files to.
modpack.save.task=Export the modpack
modpack.export_error=Failed to export the modpack, maybe the format of your game directory is incorrect or failed to manage files.
modpack.export_finished=Exporting the modpack finished. See
modpack.included_launcher=The modpack has already included the launcher, you can publish it directly.
modpack.not_included_launcher=Use the modpack by "import modpack".
modpack.enter_name=Give this game a name which is your favorite.
modpack.task.save=Export the modpack
modpack.task.install=Import the modpack
modpack.task.install.error=Failed to install the modpack, maybe the modpack file is incorrect or failed to manage files.
modpack.task.install.will=Will install the modpack:
modpack.wizard=Exporting the modpack wizard
modpack.wizard.step.1=Basic options
modpack.wizard.step.1.title=Set the basic options to the modpack.
modpack.wizard.step.initialization.include_launcher=Include the launcher
modpack.wizard.step.initialization.exported_version=The exported game version
modpack.wizard.step.initialization.save=Choose a location which you want to export the game files to
modpack.wizard.step.initialization.warning=<html>Before making modpack, you should ensure that your game can launch successfully,<br/>and that your Minecraft is release, not snapshot.<br/>and that it is not allowed to add mods which is not allowed to distribute to the modpack.</html>
modpack.wizard.step.2=Files selection
modpack.wizard.step.2.title=Choose the files you do not want to put in the modpack.
modpack.wizard.step.3=Description
modpack.wizard.step.3.title=Describe your modpack.
modpack.desc=Describe your modpack, including precautions, changlog, supporting Markdown(also supporting online pictures).
modpack.incorrect_format.no_json=The format of the modpack is incorrect, pack.json is missing.
modpack.incorrect_format.no_jar=The format of the modpack is incorrect, pack.json does not have attribute 'jar'
modpack.cannot_read_version=Failed to gather the game version
modpack.not_a_valid_location=Not a valid modpack location
modpack.warning=<html>Before making modpack, you should ensure that your game can launch successfully,<br/>and that your Minecraft is release, not snapshot.<br/>and that it is not allowed to add mods which is not allowed to distribute to the modpack.</html>
modpack.name=Modpack Name
modpack.not_a_valid_name=Not a valid modpack name
@@ -277,7 +283,7 @@ advancedsettings.launcher_visibility.hide=Hide the launcher when the game launch
advancedsettings.launcher_visibility.keep=Keep the launcher visible.
advancedsettings.game_dir.default=Default (.minecraft/)
advancedsettings.game_dir.independent=Independent (.minecraft/versions/<version name>/, except assets,libraries)
advancedsettings.no_jvm_args=No JVM Args
advancedsettings.no_jvm_args=No Default 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
@@ -167,6 +167,7 @@ ui.message.enter_password=Please enter your password.
ui.message.launching=Launching...
ui.message.making=Generating...
ui.message.sure_remove=Sure to remove profile %s?
ui.message.update_java=Please upgrade your Java.
ui.label.settings=Settings
ui.label.crashing=<html>Hello Minecraft! Launcher has crashed!</html>
@@ -220,29 +221,34 @@ settings.test_game=Test game
modpack=Mod pack
modpack.choose=Choose a modpack zip file which you want to import. If you want to update the modpack, please enter the version you want to update.
modpack.install.task=Import the modpack
modpack.install_error=Failed to install the modpack, maybe the modpack file is incorrect or failed to manage files.
modpack.install.will_install=Will install the modpack:
modpack.save=Choose a location which you want to export the game files to.
modpack.save.task=Export the modpack
modpack.export_error=Failed to export the modpack, maybe the format of your game directory is incorrect or failed to manage files.
modpack.export_finished=Exporting the modpack finished. See
modpack.included_launcher=The modpack has already included the launcher, you can publish it directly.
modpack.not_included_launcher=Use the modpack by "import modpack".
modpack.enter_name=Give this game a name which is your favorite.
modpack.task.save=Export the modpack
modpack.task.install=Import the modpack
modpack.task.install.error=Failed to install the modpack, maybe the modpack file is incorrect or failed to manage files.
modpack.task.install.will=Will install the modpack:
modpack.wizard=Exporting the modpack wizard
modpack.wizard.step.1=Basic options
modpack.wizard.step.1.title=Set the basic options to the modpack.
modpack.wizard.step.initialization.include_launcher=Include the launcher
modpack.wizard.step.initialization.exported_version=The exported game version
modpack.wizard.step.initialization.save=Choose a location which you want to export the game files to
modpack.wizard.step.initialization.warning=<html>Before making modpack, you should ensure that your game can launch successfully,<br/>and that your Minecraft is release, not snapshot.<br/>and that it is not allowed to add mods which is not allowed to distribute to the modpack.</html>
modpack.wizard.step.2=Files selection
modpack.wizard.step.2.title=Choose the files you do not want to put in the modpack.
modpack.wizard.step.3=Description
modpack.wizard.step.3.title=Describe your modpack.
modpack.desc=Describe your modpack, including precautions, changlog, supporting Markdown(also supporting online pictures).
modpack.incorrect_format.no_json=The format of the modpack is incorrect, pack.json is missing.
modpack.incorrect_format.no_jar=The format of the modpack is incorrect, pack.json does not have attribute 'jar'
modpack.cannot_read_version=Failed to gather the game version
modpack.not_a_valid_location=Not a valid modpack location
modpack.warning=<html>Before making modpack, you should ensure that your game can launch successfully,<br/>and that your Minecraft is release, not snapshot.<br/>and that it is not allowed to add mods which is not allowed to distribute to the modpack.</html>
modpack.name=Modpack Name
modpack.not_a_valid_name=Not a valid modpack name
@@ -277,7 +283,7 @@ advancedsettings.launcher_visibility.hide=Hide the launcher when the game launch
advancedsettings.launcher_visibility.keep=Keep the launcher visible.
advancedsettings.game_dir.default=Default (.minecraft/)
advancedsettings.game_dir.independent=Independent (.minecraft/versions/<version name>/, except assets,libraries)
advancedsettings.no_jvm_args=No JVM Args
advancedsettings.no_jvm_args=No Default 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
@@ -167,6 +167,7 @@ ui.message.enter_password=請在左邊輸入您的密碼
ui.message.launching=啟動中
ui.message.making=生成中
ui.message.sure_remove=真的要删除配置%s吗?
ui.message.update_java=请更新您的Java
ui.label.settings=選項
ui.label.crashing=<html>Hello Minecraft! Launcher遇到了無法處理的錯誤,請複制下列內容並通過mcbbs、貼吧或Minecraft Forum反饋bug。 </html>
@@ -220,29 +221,34 @@ settings.test_game=測試遊戲
modpack=懶人包
modpack.choose=選擇要導入的遊戲懶人包資料,如果您希望更新懶人包,请输入要更新的版本名
modpack.install.task=導入懶人包
modpack.install_error=安裝失敗,可能是懶人包格式不正確或操作資料失敗
modpack.install.will_install=將會安裝懶人包:
modpack.save=選擇要導出到的遊戲懶人包位置
modpack.save.task=導出懶人包
modpack.export_error=導出失敗,可能是您的遊戲資料夾格式不正確或操作資料失敗
modpack.export_finished=懶人包導出完成,参见
modpack.included_launcher=懶人包已包含啟動器,可直接發布
modpack.not_included_launcher=懶人包未包含啟動器,可使用本軟件的導入懶人包功能導入懶人包
modpack.enter_name=給遊戲起個你喜歡的名字
modpack.task.save=導出懶人包
modpack.task.install=導入懶人包
modpack.task.install.error=安裝失敗,可能是懶人包格式不正確或操作資料失敗
modpack.task.install.will_install=將會安裝懶人包:
modpack.wizard=導出懶人包嚮導
modpack.wizard.step.1=基本設定
modpack.wizard.step.1.title=設置懶人包的主要信息
modpack.wizard.step.initialization.include_launcher=包含啟動器
modpack.wizard.step.initialization.exported_version=要導出的遊戲版本
modpack.wizard.step.initialization.save=選擇要導出到的遊戲懶人包位置
modpack.wizard.step.initialization.warning=<html>在製作懶人包前,請您確認您選擇的版本可以正常啟動,<br/>並保證您的Minecraft是正式版而非快照版,<br/>而且不應當將不允許非官方途徑傳播的Mod、材質包等納入整合包。<br/>懶人包會保存您目前的下載源設定</html>
modpack.wizard.step.2=資料選擇
modpack.wizard.step.2.title=選中你不想加到懶人包中的資料(夾)
modpack.wizard.step.3=懶人包描述
modpack.wizard.step.3.title=描述你要製作的懶人包。
modpack.desc=描述你要製作的懶人包,比如懶人包注意事項和更新記錄,支持Markdown(圖片請用網路圖片)。
modpack.incorrect_format.no_json=懶人包格式錯誤,pack.json丟失
modpack.incorrect_format.no_jar=懶人包格式錯誤,pack.json丟失jar字段
modpack.cannot_read_version=讀取遊戲版本失敗
modpack.not_a_valid_location=不是一个有效懒人包位置
modpack.warning=<html>在製作懶人包前,請您確認您選擇的版本可以正常啟動,<br/>並保證您的Minecraft是正式版而非快照版,<br/>而且不應當將不允許非官方途徑傳播的Mod、材質包等納入整合包。<br/>懶人包會保存您目前的下載源設定</html>
modpack.name=懶人包名稱
modpack.not_a_valid_name=不是一个有效的懶人包名稱
@@ -277,7 +283,7 @@ advancedsettings.launcher_visibility.hide=遊戲啟動後隱藏啟動器
advancedsettings.launcher_visibility.keep=保持啟動器可見
advancedsettings.game_dir.default=默認(.minecraft/)
advancedsettings.game_dir.independent=各版本獨立(.minecraft/versions/<版本名>/,除assets,libraries)
advancedsettings.no_jvm_args=不添加JVM參數(使用Java9時必勾)
advancedsettings.no_jvm_args=不添加默認的JVM參數(使用Java9時必勾)
advancedsettings.java_args_default=啟動器默認添加的參數(請不要重複添加):-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml. ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true
advancedsettings.wrapper_launcher=前置啟動指令(不必填寫,內容將加在啟動腳本最前,如optirun...)
advancedsettings.server_ip=直入伺服器ip地址(不必填寫,啟動遊戲後直接進入對應伺服器)
@@ -167,6 +167,7 @@ ui.message.enter_password=\u8acb\u5728\u5de6\u908a\u8f38\u5165\u60a8\u7684\u5bc6
ui.message.launching=\u555f\u52d5\u4e2d
ui.message.making=\u751f\u6210\u4e2d
ui.message.sure_remove=\u771f\u7684\u8981\u5220\u9664\u914d\u7f6e%s\u5417\uff1f
ui.message.update_java=\u8bf7\u66f4\u65b0\u60a8\u7684Java
ui.label.settings=\u9078\u9805
ui.label.crashing=<html>Hello Minecraft! Launcher\u9047\u5230\u4e86\u7121\u6cd5\u8655\u7406\u7684\u932f\u8aa4\uff0c\u8acb\u8907\u5236\u4e0b\u5217\u5167\u5bb9\u4e26\u901a\u904emcbbs\u3001\u8cbc\u5427\u6216Minecraft Forum\u53cd\u994bbug\u3002 </html>
@@ -220,29 +221,34 @@ settings.test_game=\u6e2c\u8a66\u904a\u6232
modpack=\u61f6\u4eba\u5305
modpack.choose=\u9078\u64c7\u8981\u5c0e\u5165\u7684\u904a\u6232\u61f6\u4eba\u5305\u8cc7\u6599\uff0c\u5982\u679c\u60a8\u5e0c\u671b\u66f4\u65b0\u61f6\u4eba\u5305\uff0c\u8bf7\u8f93\u5165\u8981\u66f4\u65b0\u7684\u7248\u672c\u540d
modpack.install.task=\u5c0e\u5165\u61f6\u4eba\u5305
modpack.install_error=\u5b89\u88dd\u5931\u6557\uff0c\u53ef\u80fd\u662f\u61f6\u4eba\u5305\u683c\u5f0f\u4e0d\u6b63\u78ba\u6216\u64cd\u4f5c\u8cc7\u6599\u5931\u6557
modpack.install.will_install=\u5c07\u6703\u5b89\u88dd\u61f6\u4eba\u5305\uff1a
modpack.save=\u9078\u64c7\u8981\u5c0e\u51fa\u5230\u7684\u904a\u6232\u61f6\u4eba\u5305\u4f4d\u7f6e
modpack.save.task=\u5c0e\u51fa\u61f6\u4eba\u5305
modpack.export_error=\u5c0e\u51fa\u5931\u6557\uff0c\u53ef\u80fd\u662f\u60a8\u7684\u904a\u6232\u8cc7\u6599\u593e\u683c\u5f0f\u4e0d\u6b63\u78ba\u6216\u64cd\u4f5c\u8cc7\u6599\u5931\u6557
modpack.export_finished=\u61f6\u4eba\u5305\u5c0e\u51fa\u5b8c\u6210\uff0c\u53c2\u89c1
modpack.included_launcher=\u61f6\u4eba\u5305\u5df2\u5305\u542b\u555f\u52d5\u5668\uff0c\u53ef\u76f4\u63a5\u767c\u5e03
modpack.not_included_launcher=\u61f6\u4eba\u5305\u672a\u5305\u542b\u555f\u52d5\u5668\uff0c\u53ef\u4f7f\u7528\u672c\u8edf\u4ef6\u7684\u5c0e\u5165\u61f6\u4eba\u5305\u529f\u80fd\u5c0e\u5165\u61f6\u4eba\u5305
modpack.enter_name=\u7d66\u904a\u6232\u8d77\u500b\u4f60\u559c\u6b61\u7684\u540d\u5b57
modpack.task.save=\u5c0e\u51fa\u61f6\u4eba\u5305
modpack.task.install=\u5c0e\u5165\u61f6\u4eba\u5305
modpack.task.install.error=\u5b89\u88dd\u5931\u6557\uff0c\u53ef\u80fd\u662f\u61f6\u4eba\u5305\u683c\u5f0f\u4e0d\u6b63\u78ba\u6216\u64cd\u4f5c\u8cc7\u6599\u5931\u6557
modpack.task.install.will_install=\u5c07\u6703\u5b89\u88dd\u61f6\u4eba\u5305\uff1a
modpack.wizard=\u5c0e\u51fa\u61f6\u4eba\u5305\u56ae\u5c0e
modpack.wizard.step.1=\u57fa\u672c\u8a2d\u5b9a
modpack.wizard.step.1.title=\u8a2d\u7f6e\u61f6\u4eba\u5305\u7684\u4e3b\u8981\u4fe1\u606f
modpack.wizard.step.initialization.include_launcher=\u5305\u542b\u555f\u52d5\u5668
modpack.wizard.step.initialization.exported_version=\u8981\u5c0e\u51fa\u7684\u904a\u6232\u7248\u672c
modpack.wizard.step.initialization.save=\u9078\u64c7\u8981\u5c0e\u51fa\u5230\u7684\u904a\u6232\u61f6\u4eba\u5305\u4f4d\u7f6e
modpack.wizard.step.initialization.warning=<html>\u5728\u88fd\u4f5c\u61f6\u4eba\u5305\u524d,\u8acb\u60a8\u78ba\u8a8d\u60a8\u9078\u64c7\u7684\u7248\u672c\u53ef\u4ee5\u6b63\u5e38\u555f\u52d5,<br/>\u4e26\u4fdd\u8b49\u60a8\u7684Minecraft\u662f\u6b63\u5f0f\u7248\u800c\u975e\u5feb\u7167\u7248,<br/>\u800c\u4e14\u4e0d\u61c9\u7576\u5c07\u4e0d\u5141\u8a31\u975e\u5b98\u65b9\u9014\u5f91\u50b3\u64ad\u7684Mod\u3001\u6750\u8cea\u5305\u7b49\u7d0d\u5165\u6574\u5408\u5305\u3002<br/>\u61f6\u4eba\u5305\u6703\u4fdd\u5b58\u60a8\u76ee\u524d\u7684\u4e0b\u8f09\u6e90\u8a2d\u5b9a</html>
modpack.wizard.step.2=\u8cc7\u6599\u9078\u64c7
modpack.wizard.step.2.title=\u9078\u4e2d\u4f60\u4e0d\u60f3\u52a0\u5230\u61f6\u4eba\u5305\u4e2d\u7684\u8cc7\u6599(\u593e)
modpack.wizard.step.3=\u61f6\u4eba\u5305\u63cf\u8ff0
modpack.wizard.step.3.title=\u63cf\u8ff0\u4f60\u8981\u88fd\u4f5c\u7684\u61f6\u4eba\u5305\u3002
modpack.desc=\u63cf\u8ff0\u4f60\u8981\u88fd\u4f5c\u7684\u61f6\u4eba\u5305\uff0c\u6bd4\u5982\u61f6\u4eba\u5305\u6ce8\u610f\u4e8b\u9805\u548c\u66f4\u65b0\u8a18\u9304\uff0c\u652f\u6301Markdown(\u5716\u7247\u8acb\u7528\u7db2\u8def\u5716\u7247)\u3002
modpack.incorrect_format.no_json=\u61f6\u4eba\u5305\u683c\u5f0f\u932f\u8aa4\uff0cpack.json\u4e1f\u5931
modpack.incorrect_format.no_jar=\u61f6\u4eba\u5305\u683c\u5f0f\u932f\u8aa4\uff0cpack.json\u4e1f\u5931jar\u5b57\u6bb5
modpack.cannot_read_version=\u8b80\u53d6\u904a\u6232\u7248\u672c\u5931\u6557
modpack.not_a_valid_location=\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u61d2\u4eba\u5305\u4f4d\u7f6e
modpack.warning=<html>\u5728\u88fd\u4f5c\u61f6\u4eba\u5305\u524d,\u8acb\u60a8\u78ba\u8a8d\u60a8\u9078\u64c7\u7684\u7248\u672c\u53ef\u4ee5\u6b63\u5e38\u555f\u52d5,<br/>\u4e26\u4fdd\u8b49\u60a8\u7684Minecraft\u662f\u6b63\u5f0f\u7248\u800c\u975e\u5feb\u7167\u7248,<br/>\u800c\u4e14\u4e0d\u61c9\u7576\u5c07\u4e0d\u5141\u8a31\u975e\u5b98\u65b9\u9014\u5f91\u50b3\u64ad\u7684Mod\u3001\u6750\u8cea\u5305\u7b49\u7d0d\u5165\u6574\u5408\u5305\u3002<br/>\u61f6\u4eba\u5305\u6703\u4fdd\u5b58\u60a8\u76ee\u524d\u7684\u4e0b\u8f09\u6e90\u8a2d\u5b9a</html>
modpack.name=\u61f6\u4eba\u5305\u540d\u7a31
modpack.not_a_valid_name=\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u61f6\u4eba\u5305\u540d\u7a31
@@ -277,7 +283,7 @@ advancedsettings.launcher_visibility.hide=\u904a\u6232\u555f\u52d5\u5f8c\u96b1\u
advancedsettings.launcher_visibility.keep=\u4fdd\u6301\u555f\u52d5\u5668\u53ef\u898b
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.no_jvm_args=\u4e0d\u6dfb\u52a0\u9ed8\u8a8d\u7684JVM\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\u4f3a\u670d\u5668ip\u5730\u5740(\u4e0d\u5fc5\u586b\u5beb\uff0c\u555f\u52d5\u904a\u6232\u5f8c\u76f4\u63a5\u9032\u5165\u5c0d\u61c9\u4f3a\u670d\u5668)
+10 -2
View File
@@ -22,10 +22,18 @@ if (!hasProperty('mainClass')) {
ext.mainClass = 'org.jackhuang.hellominecraft.svrmgr.Main'
}
def buildnumber = System.getenv("BUILD_NUMBER") == null ? "" : "."+System.getenv("BUILD_NUMBER")
def buildnumber = System.getenv("TRAVIS_BUILD_NUMBER")
if (buildnumber == null)
buildnumber = System.getenv("BUILD_NUMBER")
if (buildnumber == null)
buildnumber = "233"
def versionroot = System.getenv("VERSION_ROOT")
if (versionroot == null)
versionroot = "0.8.6"
String mavenGroupId = 'HMCSM'
String mavenVersion = '0.8.6' + buildnumber
String mavenVersion = versionroot + '.' + buildnumber
String bundleName = "Hello Minecraft! Server Manager"
group = mavenGroupId