Fixed typesafe again and again

This commit is contained in:
huangyuhui 2017-02-24 12:57:18 +08:00
parent 44735b3d4e
commit 0bda79c0d5
7 changed files with 32 additions and 22 deletions

View File

@ -1015,7 +1015,7 @@ public final class GameSettingsPanel extends RepaintPage implements DropTargetLi
private void btnTestGameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnTestGameActionPerformed private void btnTestGameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnTestGameActionPerformed
LogWindow.INSTANCE.setVisible(true); LogWindow.INSTANCE.setVisible(true);
MainFrame.INSTANCE.daemon.runGame(Settings.getLastProfile()); MainFrame.INSTANCE.daemon.testGame(Settings.getLastProfile());
}//GEN-LAST:event_btnTestGameActionPerformed }//GEN-LAST:event_btnTestGameActionPerformed
private void btnExploreMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnExploreMouseClicked private void btnExploreMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnExploreMouseClicked

View File

@ -89,22 +89,26 @@ public class LaunchingUIDaemon {
break; break;
} }
} }
String msg = C.i18n("launch.exited_abnormally") + " exit code: " + exitCode; if (!LogWindow.INSTANCE.isVisible()) {
if (errorText != null) String msg = C.i18n("launch.exited_abnormally") + " exit code: " + exitCode;
msg += ", advice: " + MinecraftCrashAdvicer.getAdvice(FileUtils.readQuietly(new File(errorText))); if (errorText != null)
WebFrame f = new WebFrame(logs); msg += ", advice: " + MinecraftCrashAdvicer.getAdvice(FileUtils.readQuietly(new File(errorText)));
f.setModal(true); WebFrame f = new WebFrame(logs);
f.setTitle(msg); f.setModal(true);
f.setVisible(true); f.setTitle(msg);
f.setVisible(true);
}
checkExit((LauncherVisibility) ((ProcessMonitor) event.getSource()).getTag()); checkExit((LauncherVisibility) ((ProcessMonitor) event.getSource()).getTag());
}); });
HMCLApi.EVENT_BUS.channel(JVMLaunchFailedEvent.class).register(event -> { HMCLApi.EVENT_BUS.channel(JVMLaunchFailedEvent.class).register(event -> {
int exitCode = event.getValue().getExitCode(); int exitCode = event.getValue().getExitCode();
HMCLog.err("Cannot create jvm, exit code: " + exitCode); HMCLog.err("Cannot create jvm, exit code: " + exitCode);
WebFrame f = new WebFrame(event.getValue().getStdOutLines().toArray(new String[0])); if (!LogWindow.INSTANCE.isVisible()) {
f.setModal(true); WebFrame f = new WebFrame(event.getValue().getStdOutLines().toArray(new String[0]));
f.setTitle(C.i18n("launch.cannot_create_jvm") + " exit code: " + exitCode); f.setModal(true);
f.setVisible(true); f.setTitle(C.i18n("launch.cannot_create_jvm") + " exit code: " + exitCode);
f.setVisible(true);
}
checkExit((LauncherVisibility) ((ProcessMonitor) event.getSource()).getTag()); checkExit((LauncherVisibility) ((ProcessMonitor) event.getSource()).getTag());
}); });
} }
@ -117,6 +121,15 @@ public class LaunchingUIDaemon {
}, MainFrame.INSTANCE::failed, Settings.getInstance().getAuthenticator().getPassword()); }, MainFrame.INSTANCE::failed, Settings.getInstance().getAuthenticator().getPassword());
} }
void testGame(Profile profile) {
MainFrame.INSTANCE.showMessage(C.i18n("ui.message.launching"));
profile.launcher().genLaunchCode(value -> {
DefaultPlugin.INSTANCE.saveAuthenticatorConfig();
((HMCLGameLauncher.GameLauncherTag) value.getTag()).state = 1;
((HMCLGameLauncher.GameLauncherTag) value.getTag()).launcherVisibility = LauncherVisibility.KEEP;
}, MainFrame.INSTANCE::failed, Settings.getInstance().getAuthenticator().getPassword());
}
void makeLaunchScript(Profile profile) { void makeLaunchScript(Profile profile) {
MainFrame.INSTANCE.showMessage(C.i18n("ui.message.launching")); MainFrame.INSTANCE.showMessage(C.i18n("ui.message.launching"));
profile.launcher().genLaunchCode(value -> { profile.launcher().genLaunchCode(value -> {

View File

@ -44,7 +44,7 @@ public class LogWindowOutputStream extends OutputStream {
@Override @Override
public final void write(byte[] arr, int off, int len) { public final void write(byte[] arr, int off, int len) {
append(new String(arr, off, len, Charsets.UTF_8)); append(new String(arr, off, len));
} }
private void append(final String str) { private void append(final String str) {
@ -55,6 +55,6 @@ public class LogWindowOutputStream extends OutputStream {
@Override @Override
public final void write(int i) { public final void write(int i) {
append(new String(new byte[] { (byte) i }, Charsets.UTF_8)); append(new String(new byte[] { (byte) i }));
} }
} }

View File

@ -56,9 +56,9 @@ public class MinecraftDownloadService extends IMinecraftDownloadService {
return downloadLibraries; return downloadLibraries;
MinecraftVersion v = mv.resolve(service.version()); MinecraftVersion v = mv.resolve(service.version());
for (IMinecraftLibrary l : v.getLibraries()) for (IMinecraftLibrary l : v.getLibraries())
if (l != null && l.allow() && l.getDownloadURL(service.getDownloadType().name()) != null) { if (l != null && l.allow()) {
File ff = service.version().getLibraryFile(mv, l); File ff = service.version().getLibraryFile(mv, l);
if (!ff.exists()) { if (!ff.exists() && l.getDownloadURL(service.getDownloadType().name()) != null) {
String libURL = l.getDownloadURL(service.getDownloadType().name()); String libURL = l.getDownloadURL(service.getDownloadType().name());
if (libURL != null) if (libURL != null)
downloadLibraries.add(new DownloadLibraryJob(l, libURL, ff)); downloadLibraries.add(new DownloadLibraryJob(l, libURL, ff));

View File

@ -19,6 +19,7 @@ package org.jackhuang.hmcl.core.version;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import org.jackhuang.hmcl.core.download.DownloadType; import org.jackhuang.hmcl.core.download.DownloadType;
import org.jackhuang.hmcl.util.StrUtils;
/** /**
* *
@ -58,7 +59,7 @@ public class GameDownloadInfo implements Cloneable {
* @return the download url * @return the download url
*/ */
public String getUrl(DownloadType dt, boolean allowSelf) { public String getUrl(DownloadType dt, boolean allowSelf) {
if (url != null && allowSelf) if (StrUtils.isNotBlank(url) && allowSelf)
return dt.getProvider().getParsedDownloadURL(url); return dt.getProvider().getParsedDownloadURL(url);
else else
return getCustomizedURL(dt); return getCustomizedURL(dt);

View File

@ -35,14 +35,12 @@ public class LibraryDownloadInfo extends GameDownloadInfo {
@Override @Override
public String getUrl(DownloadType dt, boolean allowSelf) { public String getUrl(DownloadType dt, boolean allowSelf) {
String myURL = (forgeURL == null ? dt.getProvider().getLibraryDownloadURL() : forgeURL); String myURL = dt.getProvider().getParsedDownloadURL(IOUtils.addURLSeparator(forgeURL == null ? dt.getProvider().getLibraryDownloadURL() : forgeURL) + path.replace('\\', '/'));
if (StrUtils.isNotBlank(url) && allowSelf) if (StrUtils.isNotBlank(url) && allowSelf)
myURL = dt.getProvider().getParsedDownloadURL(url); myURL = dt.getProvider().getParsedDownloadURL(url);
if (!myURL.endsWith(".jar")) if (!myURL.endsWith(".jar"))
if (path == null) if (path == null)
return null; return null;
else
myURL = IOUtils.addURLSeparator(myURL) + path.replace('\\', '/');
return myURL; return myURL;
} }
} }

View File

@ -22,11 +22,9 @@ import com.google.gson.annotations.SerializedName;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import org.jackhuang.hmcl.api.HMCLApi;
import org.jackhuang.hmcl.util.sys.OS; import org.jackhuang.hmcl.util.sys.OS;
import org.jackhuang.hmcl.util.sys.Platform; import org.jackhuang.hmcl.util.sys.Platform;
import org.jackhuang.hmcl.util.StrUtils; import org.jackhuang.hmcl.util.StrUtils;
import org.jackhuang.hmcl.api.Wrapper;
/** /**
* *