From 552238676c8d75182e95a6be8c51e0b334c188b5 Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Wed, 14 Feb 2018 15:16:42 +0800 Subject: [PATCH] Fixed activation of mods not working. Closes #259 --- .../org/jackhuang/hmcl/game/LauncherHelper.java | 14 ++++++++------ .../main/java/org/jackhuang/hmcl/mod/ModInfo.java | 8 +++++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java index 715ce8c3b..3945a9006 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -87,12 +87,14 @@ public final class LauncherHelper { .then(Task.of(Schedulers.javafx(), () -> emitStatus(LoadingState.LOGGING_IN))) .then(Task.of(Main.i18n("account.methods"), variables -> { try { - variables.set("account", account.logIn(new SpecificCharacterSelector(Accounts.getCurrentCharacter(account)), Settings.INSTANCE.getProxy())); - } catch (ServerDisconnectException e) { - if (account.canPlayOffline()) - variables.set("account", account.playOffline()); - else - throw e; + try { + variables.set("account", account.logIn(new SpecificCharacterSelector(Accounts.getCurrentCharacter(account)), Settings.INSTANCE.getProxy())); + } catch (ServerDisconnectException e) { + if (account.canPlayOffline()) + variables.set("account", account.playOffline()); + else + throw e; + } } catch (AuthenticationException e) { variables.set("account", DialogController.logIn(account)); JFXUtilities.runInFX(() -> Controllers.dialog(launchingStepsPane)); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModInfo.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModInfo.java index 6be125427..35646c86e 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModInfo.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModInfo.java @@ -19,6 +19,7 @@ package org.jackhuang.hmcl.mod; import org.jackhuang.hmcl.util.FileUtils; import org.jackhuang.hmcl.util.ImmediateBooleanProperty; +import org.jackhuang.hmcl.util.Logging; import org.jackhuang.hmcl.util.StringUtils; import java.io.File; @@ -59,11 +60,16 @@ public final class ModInfo implements Comparable { activeProperty = new ImmediateBooleanProperty(this, "active", !DISABLED_EXTENSION.equals(FileUtils.getExtension(file))) { @Override protected void invalidated() { - File f = file.getAbsoluteFile(), newF; + File f = ModInfo.this.file.getAbsoluteFile(), newF; if (DISABLED_EXTENSION.equals(FileUtils.getExtension(f))) newF = new File(f.getParentFile(), FileUtils.getNameWithoutExtension(f)); else newF = new File(f.getParentFile(), f.getName() + ".disabled"); + + if (f.renameTo(newF)) + ModInfo.this.file = newF; + else + Logging.LOG.severe("Unable to rename file " + f + " to " + newF); } };