From a7c02e2dea9ec63e4a0b2abacf4271f22d4cf394 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Mon, 13 May 2019 00:05:08 +0800 Subject: [PATCH] name task async --- .../main/java/org/jackhuang/hmcl/Main.java | 2 +- .../jackhuang/hmcl/game/LauncherHelper.java | 18 ++--- .../jackhuang/hmcl/game/ModpackHelper.java | 2 +- .../org/jackhuang/hmcl/setting/Profile.java | 2 +- .../hmcl/setting/VersionSetting.java | 2 +- .../jackhuang/hmcl/ui/LeftPaneController.java | 11 ++- .../org/jackhuang/hmcl/ui/SettingsPage.java | 3 +- .../hmcl/ui/account/AddAccountPane.java | 2 +- .../account/AuthlibInjectorServersPage.java | 6 -- .../construct/JFXCheckBoxTreeTableCell.java | 4 +- .../hmcl/ui/construct/MessageDialogPane.java | 2 +- .../hmcl/ui/decorator/DecoratorSkin.java | 17 ++--- .../ui/download/InstallerWizardProvider.java | 8 +-- .../ModpackInstallWizardProvider.java | 2 +- .../hmcl/ui/download/ModpackPage.java | 2 +- .../UpdateInstallerWizardProvider.java | 4 +- .../VanillaInstallWizardProvider.java | 2 +- .../hmcl/ui/export/ExportWizardProvider.java | 2 +- .../hmcl/ui/versions/DatapackListPage.java | 37 ++++------ .../hmcl/ui/versions/InstallerListPage.java | 18 ++--- .../hmcl/ui/versions/ModListPage.java | 2 +- .../hmcl/ui/versions/VersionSettingsPage.java | 4 +- .../hmcl/ui/versions/WorldListPage.java | 2 +- .../ui/wizard/AbstractWizardDisplayer.java | 2 +- .../jackhuang/hmcl/upgrade/UpdateHandler.java | 15 +--- .../fxml/authlib-injector-server-add.fxml | 1 - .../assets/fxml/version/version-settings.fxml | 1 - .../resources/assets/lang/I18N.properties | 3 +- .../assets/lang/I18N_zh_CN.properties | 2 +- .../resources/assets/log-window-content.html | 8 +-- .../AuthlibInjectorDownloader.java | 4 +- .../hmcl/auth/yggdrasil/TextureModel.java | 2 +- .../download/DefaultDependencyManager.java | 18 +++-- .../hmcl/download/DefaultGameBuilder.java | 16 ++--- .../hmcl/mod/CurseCompletionTask.java | 2 +- .../java/org/jackhuang/hmcl/mod/Datapack.java | 2 - .../mod/MultiMCInstanceConfiguration.java | 1 - .../jackhuang/hmcl/mod/MultiMCManifest.java | 3 - .../hmcl/mod/MultiMCModpackInstallTask.java | 2 +- .../org/jackhuang/hmcl/mod/PackMcMeta.java | 6 -- .../jackhuang/hmcl/task/FileDownloadTask.java | 1 - .../java/org/jackhuang/hmcl/task/GetTask.java | 1 - .../java/org/jackhuang/hmcl/task/Task.java | 72 +++++++++---------- .../java/org/jackhuang/hmcl/util/Pair.java | 3 +- .../jackhuang/hmcl/util/io/NetworkUtils.java | 12 ++-- .../hmcl/util/javafx/BindingMapping.java | 1 - .../hmcl/util/javafx/ExtendedProperties.java | 2 +- .../hmcl/util/platform/OperatingSystem.java | 2 +- .../org/jackhuang/hmcl/util/TaskTest.java | 9 ++- 49 files changed, 146 insertions(+), 199 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Main.java b/HMCL/src/main/java/org/jackhuang/hmcl/Main.java index ee6c387d5..cc3211432 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Main.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Main.java @@ -46,7 +46,7 @@ public final class Main { checkDirectoryPath(); // This environment check will take ~300ms - thread(() -> checkDSTRootCAX3(), "CA Certificate Check", true); + thread(Main::checkDSTRootCAX3, "CA Certificate Check", true); Logging.start(Metadata.HMCL_DIRECTORY.resolve("logs")); 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 6bee6fc59..a559552b8 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -123,14 +123,14 @@ public final class LauncherHelper { Optional gameVersion = GameVersion.minecraftVersion(repository.getVersionJar(version)); TaskExecutor executor = Task.runAsync(Schedulers.javafx(), () -> emitStatus(LoadingState.DEPENDENCIES)) - .thenCompose(() -> { + .thenComposeAsync(() -> { if (setting.isNotCheckGame()) return null; else return dependencyManager.checkGameCompletionAsync(version); }) - .thenRun(Schedulers.javafx(), () -> emitStatus(LoadingState.MODS)) - .thenCompose(() -> { + .thenRunAsync(Schedulers.javafx(), () -> emitStatus(LoadingState.MODS)) + .thenComposeAsync(() -> { try { ModpackConfiguration configuration = ModpackHelper.readModpackConfiguration(repository.getModpackConfiguration(selectedVersion)); if ("Curse".equals(configuration.getType())) @@ -141,8 +141,8 @@ public final class LauncherHelper { return null; } }) - .thenRun(Schedulers.javafx(), () -> emitStatus(LoadingState.LOGGING_IN)) - .thenSupply(i18n("account.methods"), () -> { + .thenRunAsync(Schedulers.javafx(), () -> emitStatus(LoadingState.LOGGING_IN)) + .thenSupplyAsync(i18n("account.methods"), () -> { try { return account.logIn(); } catch (CredentialExpiredException e) { @@ -153,11 +153,11 @@ public final class LauncherHelper { return account.playOffline().orElseThrow(() -> e); } }) - .thenApply(Schedulers.javafx(), authInfo -> { + .thenApplyAsync(Schedulers.javafx(), authInfo -> { emitStatus(LoadingState.LAUNCHING); return authInfo; }) - .thenApply(authInfo -> new HMCLGameLauncher( + .thenApplyAsync(authInfo -> new HMCLGameLauncher( repository, selectedVersion, authInfo, @@ -166,7 +166,7 @@ public final class LauncherHelper { ? null // Unnecessary to start listening to game process output when close launcher immediately after game launched. : new HMCLProcessListener(authInfo, gameVersion.isPresent()) )) - .thenCompose(launcher -> { // launcher is prev task's result + .thenComposeAsync(launcher -> { // launcher is prev task's result if (scriptFile == null) { return new LaunchTask<>(launcher::launch).setName(i18n("version.launch")); } else { @@ -176,7 +176,7 @@ public final class LauncherHelper { }).setName(i18n("version.launch_script")); } }) - .thenAccept(process -> { // process is LaunchTask's result + .thenAcceptAsync(process -> { // process is LaunchTask's result if (scriptFile == null) { PROCESSES.add(process); if (launcherVisibility == LauncherVisibility.CLOSE) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java index 33e5bc3f1..deb54debe 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java @@ -117,7 +117,7 @@ public final class ModpackHelper { else if (modpack.getManifest() instanceof MultiMCInstanceConfiguration) return new MultiMCModpackInstallTask(profile.getDependency(), zipFile, modpack, ((MultiMCInstanceConfiguration) modpack.getManifest()), name) .whenComplete(Schedulers.defaultScheduler(), success, failure) - .thenCompose(new MultiMCInstallVersionSettingTask(profile, ((MultiMCInstanceConfiguration) modpack.getManifest()), name)); + .thenComposeAsync(new MultiMCInstallVersionSettingTask(profile, ((MultiMCInstanceConfiguration) modpack.getManifest()), name)); else throw new IllegalStateException("Unrecognized modpack: " + modpack); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profile.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profile.java index b84a50e6d..b8af08173 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profile.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profile.java @@ -226,7 +226,7 @@ public final class Profile implements Observable { @Override public Profile deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - if (json == null || json == JsonNull.INSTANCE || !(json instanceof JsonObject)) return null; + if (json == JsonNull.INSTANCE || !(json instanceof JsonObject)) return null; JsonObject obj = (JsonObject) json; String gameDir = Optional.ofNullable(obj.get("gameDir")).map(JsonElement::getAsString).orElse(""); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java index 9fc8a766e..7d38d7c7a 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java @@ -595,7 +595,7 @@ public final class VersionSetting { @Override public VersionSetting deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - if (json == null || json == JsonNull.INSTANCE || !(json instanceof JsonObject)) + if (json == JsonNull.INSTANCE || !(json instanceof JsonObject)) return null; JsonObject obj = (JsonObject) json; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java index a6c11c456..84f3c5c16 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java @@ -18,7 +18,6 @@ package org.jackhuang.hmcl.ui; import javafx.application.Platform; -import javafx.scene.layout.Region; import org.jackhuang.hmcl.event.EventBus; import org.jackhuang.hmcl.event.RefreshedVersionsEvent; import org.jackhuang.hmcl.game.HMCLGameRepository; @@ -28,7 +27,6 @@ import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.setting.Profiles; import org.jackhuang.hmcl.task.Schedulers; import org.jackhuang.hmcl.task.Task; -import org.jackhuang.hmcl.task.TaskExecutor; import org.jackhuang.hmcl.ui.account.AccountAdvancedListItem; import org.jackhuang.hmcl.ui.account.AddAccountPane; import org.jackhuang.hmcl.ui.construct.AdvancedListBox; @@ -39,7 +37,6 @@ import org.jackhuang.hmcl.ui.versions.Versions; import org.jackhuang.hmcl.util.io.CompressingUtils; import java.io.File; -import java.util.concurrent.atomic.AtomicReference; import static org.jackhuang.hmcl.ui.FXUtils.newImage; import static org.jackhuang.hmcl.ui.FXUtils.runInFX; @@ -119,10 +116,10 @@ public final class LeftPaneController extends AdvancedListBox { File modpackFile = new File("modpack.zip").getAbsoluteFile(); if (modpackFile.exists()) { Task.supplyAsync(() -> CompressingUtils.findSuitableEncoding(modpackFile.toPath())) - .thenApply(encoding -> ModpackHelper.readModpackManifest(modpackFile.toPath(), encoding)) - .thenApply(modpack -> ModpackHelper.getInstallTask(repository.getProfile(), modpackFile, modpack.getName(), modpack) - .withRun(Schedulers.javafx(), this::checkAccount).executor()) - .thenAccept(Schedulers.javafx(), executor -> { + .thenApplyAsync(encoding -> ModpackHelper.readModpackManifest(modpackFile.toPath(), encoding)) + .thenApplyAsync(modpack -> ModpackHelper.getInstallTask(repository.getProfile(), modpackFile, modpack.getName(), modpack) + .withRunAsync(Schedulers.javafx(), this::checkAccount).executor()) + .thenAcceptAsync(Schedulers.javafx(), executor -> { Controllers.taskDialog(executor, i18n("modpack.installing")); executor.start(); }).start(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java index 68bfddb85..4dca9ce57 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SettingsPage.java @@ -50,7 +50,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Arrays; import java.util.Collections; import java.util.Optional; import java.util.logging.Level; @@ -118,7 +117,7 @@ public final class SettingsPage extends SettingsView implements DecoratorPage { selectedItemPropertyFor(proxyConfigurationGroup, Proxy.Type.class).bindBidirectional(config().proxyTypeProperty()); // ==== - fileCommonLocation.loadChildren(Arrays.asList( + fileCommonLocation.loadChildren(Collections.singletonList( fileCommonLocation.createChildren(i18n("launcher.cache_directory.default"), EnumCommonDirectory.DEFAULT) ), EnumCommonDirectory.CUSTOM); fileCommonLocation.selectedDataProperty().bindBidirectional(config().commonDirTypeProperty()); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java index 515aa8728..8b2edbae8 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AddAccountPane.java @@ -77,7 +77,7 @@ public class AddAccountPane extends StackPane { @FXML private SpinnerPane acceptPane; @FXML private HBox linksContainer; - private ListProperty links = new SimpleListProperty<>();; + private ListProperty links = new SimpleListProperty<>(); public AddAccountPane() { FXUtils.loadFXML(this, "/assets/fxml/account-add.fxml"); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AuthlibInjectorServersPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AuthlibInjectorServersPage.java index 6e615af3d..20ecd639d 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AuthlibInjectorServersPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AuthlibInjectorServersPage.java @@ -21,10 +21,6 @@ import javafx.beans.binding.Bindings; import javafx.beans.property.ReadOnlyStringProperty; import javafx.beans.property.ReadOnlyStringWrapper; import javafx.collections.ObservableList; -import javafx.fxml.FXML; -import javafx.scene.control.ScrollPane; -import javafx.scene.layout.StackPane; -import javafx.scene.layout.VBox; import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer; import org.jackhuang.hmcl.ui.Controllers; import org.jackhuang.hmcl.ui.ListPage; @@ -32,8 +28,6 @@ import org.jackhuang.hmcl.ui.decorator.DecoratorPage; import org.jackhuang.hmcl.util.javafx.MappedObservableList; import static org.jackhuang.hmcl.setting.ConfigHolder.config; -import static org.jackhuang.hmcl.ui.FXUtils.loadFXML; -import static org.jackhuang.hmcl.ui.FXUtils.smoothScrolling; import static org.jackhuang.hmcl.util.i18n.I18n.i18n; public class AuthlibInjectorServersPage extends ListPage implements DecoratorPage { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/JFXCheckBoxTreeTableCell.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/JFXCheckBoxTreeTableCell.java index a0a257534..39d6797a0 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/JFXCheckBoxTreeTableCell.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/JFXCheckBoxTreeTableCell.java @@ -75,9 +75,7 @@ public class JFXCheckBoxTreeTableCell extends TreeTableCell { } private ObjectProperty>> - selectedStateCallback = - new SimpleObjectProperty>>( - this, "selectedStateCallback"); + selectedStateCallback = new SimpleObjectProperty<>(this, "selectedStateCallback"); public final ObjectProperty>> selectedStateCallbackProperty() { return selectedStateCallback; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/MessageDialogPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/MessageDialogPane.java index f39b757d5..e2b314b47 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/MessageDialogPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/MessageDialogPane.java @@ -32,7 +32,7 @@ import static org.jackhuang.hmcl.util.i18n.I18n.i18n; public final class MessageDialogPane extends StackPane { - public static enum MessageType { + public enum MessageType { ERROR, INFORMATION, WARNING, diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java index 2a887de2e..a13db398b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java @@ -123,16 +123,13 @@ public class DecoratorSkin extends SkinBase { { StackPane container = new StackPane(); Bindings.bindContent(container.getChildren(), skinnable.containerProperty()); - ListChangeListener listener = new ListChangeListener() { - @Override - public void onChanged(Change c) { - if (skinnable.getContainer().isEmpty()) { - container.setMouseTransparent(true); - container.setVisible(false); - } else { - container.setMouseTransparent(false); - container.setVisible(true); - } + ListChangeListener listener = c -> { + if (skinnable.getContainer().isEmpty()) { + container.setMouseTransparent(true); + container.setVisible(false); + } else { + container.setMouseTransparent(false); + container.setVisible(true); } }; skinnable.containerProperty().addListener(listener); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/InstallerWizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/InstallerWizardProvider.java index 0921f6016..ce6f974d9 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/InstallerWizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/InstallerWizardProvider.java @@ -98,15 +98,15 @@ public final class InstallerWizardProvider implements WizardProvider { Task ret = Task.supplyAsync(() -> version); if (settings.containsKey("forge")) - ret = ret.thenCompose(profile.getDependency().installLibraryAsync((RemoteVersion) settings.get("forge"))); + ret = ret.thenComposeAsync(profile.getDependency().installLibraryAsync((RemoteVersion) settings.get("forge"))); if (settings.containsKey("liteloader")) - ret = ret.thenCompose(profile.getDependency().installLibraryAsync((RemoteVersion) settings.get("liteloader"))); + ret = ret.thenComposeAsync(profile.getDependency().installLibraryAsync((RemoteVersion) settings.get("liteloader"))); if (settings.containsKey("optifine")) - ret = ret.thenCompose(profile.getDependency().installLibraryAsync((RemoteVersion) settings.get("optifine"))); + ret = ret.thenComposeAsync(profile.getDependency().installLibraryAsync((RemoteVersion) settings.get("optifine"))); - return ret.thenCompose(profile.getRepository().refreshVersionsAsync()); + return ret.thenComposeAsync(profile.getRepository().refreshVersionsAsync()); } @Override diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackInstallWizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackInstallWizardProvider.java index 959b807e9..93a98356b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackInstallWizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackInstallWizardProvider.java @@ -93,7 +93,7 @@ public class ModpackInstallWizardProvider implements WizardProvider { return null; } else { return ModpackHelper.getInstallTask(profile, selected, name, modpack) - .thenRun(Schedulers.javafx(), () -> profile.setSelectedVersion(name)); + .thenRunAsync(Schedulers.javafx(), () -> profile.setSelectedVersion(name)); } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackPage.java index ced4dce60..84c0bc31b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/ModpackPage.java @@ -110,7 +110,7 @@ public final class ModpackPage extends StackPane implements WizardPage { spinnerPane.showSpinner(); Task.supplyAsync(() -> CompressingUtils.findSuitableEncoding(selectedFile.toPath())) - .thenApply(encoding -> manifest = ModpackHelper.readModpackManifest(selectedFile.toPath(), encoding)) + .thenApplyAsync(encoding -> manifest = ModpackHelper.readModpackManifest(selectedFile.toPath(), encoding)) .whenComplete(Schedulers.javafx(), manifest -> { spinnerPane.hideSpinner(); controller.getSettings().put(MODPACK_MANIFEST, manifest); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/UpdateInstallerWizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/UpdateInstallerWizardProvider.java index f7285482b..ea14cc595 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/UpdateInstallerWizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/UpdateInstallerWizardProvider.java @@ -63,8 +63,8 @@ public final class UpdateInstallerWizardProvider implements WizardProvider { LinkedList newList = new LinkedList<>(version.getLibraries()); newList.remove(oldLibrary); return new MaintainTask(version.setLibraries(newList)) - .thenCompose(profile.getDependency().installLibraryAsync((RemoteVersion) settings.get(libraryId))) - .then(profile.getRepository().refreshVersionsAsync()); + .thenComposeAsync(profile.getDependency().installLibraryAsync((RemoteVersion) settings.get(libraryId))) + .thenComposeAsync(profile.getRepository().refreshVersionsAsync()); } @Override diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VanillaInstallWizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VanillaInstallWizardProvider.java index 86e1d2ada..f9f012219 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VanillaInstallWizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VanillaInstallWizardProvider.java @@ -60,7 +60,7 @@ public final class VanillaInstallWizardProvider implements WizardProvider { builder.version((RemoteVersion) settings.get("optifine")); return builder.buildAsync().whenComplete(any -> profile.getRepository().refreshVersions()) - .thenRun(Schedulers.javafx(), () -> profile.setSelectedVersion(name)); + .thenRunAsync(Schedulers.javafx(), () -> profile.setSelectedVersion(name)); } @Override diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java index f274d9745..f5fb14b8b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java @@ -80,7 +80,7 @@ public final class ExportWizardProvider implements WizardProvider { ), tempModpack); if (includeLauncher) { - dependency = dependency.thenRun(() -> { + dependency = dependency.thenRunAsync(() -> { try (Zipper zip = new Zipper(modpackFile.toPath())) { Config exported = new Config(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/DatapackListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/DatapackListPage.java index 65535c8fe..66ab1ca36 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/DatapackListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/DatapackListPage.java @@ -60,17 +60,18 @@ public class DatapackListPage extends ListPageBase Objects.equals("zip", FileUtils.getExtension(it)), mods -> { - mods.forEach(it -> { - try { - Datapack zip = new Datapack(it.toPath()); - zip.loadFromZip(); - zip.installTo(worldDir); - } catch (IOException | IllegalArgumentException e) { - Logging.LOG.log(Level.WARNING, "Unable to parse datapack file " + it, e); - } - }); - }, this::refresh); + FXUtils.applyDragListener(this, it -> Objects.equals("zip", FileUtils.getExtension(it)), + mods -> mods.forEach(this::installSingleDatapack), this::refresh); + } + + private void installSingleDatapack(File datapack) { + try { + Datapack zip = new Datapack(datapack.toPath()); + zip.loadFromZip(); + zip.installTo(worldDir); + } catch (IOException | IllegalArgumentException e) { + Logging.LOG.log(Level.WARNING, "Unable to parse datapack file " + datapack, e); + } } @Override @@ -80,8 +81,8 @@ public class DatapackListPage extends ListPageBase setLoading(false))) + Task.runAsync(datapack::loadFromDir) + .withRunAsync(Schedulers.javafx(), () -> setLoading(false)) .start(); } @@ -97,15 +98,7 @@ public class DatapackListPage extends ListPageBase res = chooser.showOpenMultipleDialog(Controllers.getStage()); if (res != null) - res.forEach(it -> { - try { - Datapack zip = new Datapack(it.toPath()); - zip.loadFromZip(); - zip.installTo(worldDir); - } catch (IOException | IllegalArgumentException e) { - Logging.LOG.log(Level.WARNING, "Unable to parse datapack file " + it, e); - } - }); + res.forEach(this::installSingleDatapack); datapack.loadFromDir(); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/InstallerListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/InstallerListPage.java index c30720ab1..7bb6588e7 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/InstallerListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/InstallerListPage.java @@ -71,18 +71,18 @@ public class InstallerListPage extends ListPageBase { this.version = profile.getRepository().getResolvedVersion(versionId); this.gameVersion = null; - Task.ofResult(() -> { + Task.supplyAsync(() -> { gameVersion = GameVersion.minecraftVersion(profile.getRepository().getVersionJar(version)).orElse(null); return LibraryAnalyzer.analyze(version); - }).thenAccept(Schedulers.javafx(), analyzer -> { + }).thenAcceptAsync(Schedulers.javafx(), analyzer -> { Function> removeAction = library -> x -> { LinkedList newList = new LinkedList<>(version.getLibraries()); newList.remove(library); new MaintainTask(version.setLibraries(newList)) - .thenCompose(maintainedVersion -> new VersionJsonSaveTask(profile.getRepository(), maintainedVersion)) - .withCompose(profile.getRepository().refreshVersionsAsync()) - .withRun(Schedulers.javafx(), () -> loadVersion(this.profile, this.versionId)) + .thenComposeAsync(maintainedVersion -> new VersionJsonSaveTask(profile.getRepository(), maintainedVersion)) + .withComposeAsync(profile.getRepository().refreshVersionsAsync()) + .withRunAsync(Schedulers.javafx(), () -> loadVersion(this.profile, this.versionId)) .start(); }; @@ -118,8 +118,8 @@ public class InstallerListPage extends ListPageBase { } private void doInstallOffline(File file) { - Task task = profile.getDependency().installLibraryAsync(version, file.toPath()) - .then(profile.getRepository().refreshVersionsAsync()); + Task task = profile.getDependency().installLibraryAsync(version, file.toPath()) + .thenComposeAsync(profile.getRepository().refreshVersionsAsync()); task.setName(i18n("install.installer.install_offline")); TaskExecutor executor = task.executor(new TaskListener() { @Override @@ -129,9 +129,9 @@ public class InstallerListPage extends ListPageBase { loadVersion(profile, versionId); Controllers.dialog(i18n("install.success")); } else { - if (executor.getLastException() == null) + if (executor.getException() == null) return; - InstallerWizardProvider.alertFailureMessage(executor.getLastException(), null); + InstallerWizardProvider.alertFailureMessage(executor.getException(), null); } }); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java index 5139f8d36..3370ca0b8 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java @@ -124,7 +124,7 @@ public final class ModListPage extends ListPageBase { + }).withRunAsync(Schedulers.javafx(), () -> { List prompt = new LinkedList<>(); if (!succeeded.isEmpty()) prompt.add(i18n("mods.add.success", String.join(", ", succeeded))); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionSettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionSettingsPage.java index f7e1483d5..df66dc2d8 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionSettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionSettingsPage.java @@ -115,7 +115,7 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag FXUtils.smoothScrolling(scroll); - Task.supplyAsync(JavaVersion::getJavas).thenAccept(Schedulers.javafx(), list -> { + Task.supplyAsync(JavaVersion::getJavas).thenAcceptAsync(Schedulers.javafx(), list -> { javaItem.loadChildren(list.stream() .map(javaVersion -> javaItem.createChildren(javaVersion.getVersion() + i18n("settings.game.java_directory.bit", javaVersion.getPlatform().getBit()), javaVersion.getBinary().toString(), javaVersion)) @@ -271,7 +271,7 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag if (versionSetting == null) return; Task.supplyAsync(versionSetting::getJavaVersion) - .thenAccept(Schedulers.javafx(), javaVersion -> javaItem.setSubtitle(Optional.ofNullable(javaVersion) + .thenAcceptAsync(Schedulers.javafx(), javaVersion -> javaItem.setSubtitle(Optional.ofNullable(javaVersion) .map(JavaVersion::getBinary).map(Path::toString).orElse("Invalid Java Path"))) .start(); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/WorldListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/WorldListPage.java index c8383b17e..430d247b6 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/WorldListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/WorldListPage.java @@ -83,7 +83,7 @@ public class WorldListPage extends ListPageBase { setLoading(true); Task .runAsync(() -> gameVersion = GameVersion.minecraftVersion(profile.getRepository().getVersionJar(id)).orElse(null)) - .thenSupply(() -> World.getWorlds(savesDir).parallel().collect(Collectors.toList())) + .thenSupplyAsync(() -> World.getWorlds(savesDir).parallel().collect(Collectors.toList())) .whenComplete(Schedulers.javafx(), (result, exception) -> { worlds = result; setLoading(false); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/AbstractWizardDisplayer.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/AbstractWizardDisplayer.java index 999f9aa6f..d730981fb 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/AbstractWizardDisplayer.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/wizard/AbstractWizardDisplayer.java @@ -33,7 +33,7 @@ public interface AbstractWizardDisplayer extends WizardDisplayer { @Override default void handleTask(Map settings, Task task) { - TaskExecutor executor = task.withRun(Schedulers.javafx(), this::navigateToSuccess).executor(); + TaskExecutor executor = task.withRunAsync(Schedulers.javafx(), this::navigateToSuccess).executor(); TaskListPane pane = new TaskListPane(); pane.setExecutor(executor); navigateTo(pane, Navigation.NavigationDirection.FINISH); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java index c8dd0e723..8541f5b77 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java @@ -38,10 +38,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; import java.util.logging.Level; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -161,9 +158,7 @@ public final class UpdateHandler { commandline.add(JavaVersion.fromCurrentEnvironment().getBinary().toString()); commandline.add("-jar"); commandline.add(jar.toAbsolutePath().toString()); - for (String arg : appArgs) { - commandline.add(arg); - } + commandline.addAll(Arrays.asList(appArgs)); LOG.info("Starting process: " + commandline); new ProcessBuilder(commandline) .directory(Paths.get("").toAbsolutePath().toFile()) @@ -206,11 +201,7 @@ public final class UpdateHandler { StackTraceElement element = stacktrace[i]; if (Main.class.getName().equals(element.getClassName())) { // we've reached the main method - if (i + 1 == stacktrace.length) { - return false; - } else { - return true; - } + return i + 1 != stacktrace.length; } } return false; diff --git a/HMCL/src/main/resources/assets/fxml/authlib-injector-server-add.fxml b/HMCL/src/main/resources/assets/fxml/authlib-injector-server-add.fxml index cfaad4439..85ab474a7 100644 --- a/HMCL/src/main/resources/assets/fxml/authlib-injector-server-add.fxml +++ b/HMCL/src/main/resources/assets/fxml/authlib-injector-server-add.fxml @@ -1,6 +1,5 @@ - diff --git a/HMCL/src/main/resources/assets/fxml/version/version-settings.fxml b/HMCL/src/main/resources/assets/fxml/version/version-settings.fxml index a66289999..489607123 100644 --- a/HMCL/src/main/resources/assets/fxml/version/version-settings.fxml +++ b/HMCL/src/main/resources/assets/fxml/version/version-settings.fxml @@ -1,7 +1,6 @@ - diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 29ae73366..b9be8e134 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -268,7 +268,6 @@ mods.add.success=Successfully added mods %s. mods.choose_mod=Choose your mods mods.enable=Enable mods.disable=Disable -mods.name=Name mods.remove=Remove mods.not_modded=You should install a mod loader first (Forge, or LiteLoader) @@ -321,7 +320,7 @@ settings=Game Settings settings.advanced=Advanced Settings settings.advanced.dont_check_game_completeness=Don't check game completeness -settings.advanced.dont_check_jvm_validity=Don't check whether JVM can launch the game or not +settings.advanced.dont_check_jvm_validity=Don't check whether JVM can launch the game or not settings.advanced.game_dir.default=Default (.minecraft/) settings.advanced.game_dir.independent=Independent (.minecraft/versions//, except assets,libraries) settings.advanced.java_args_default=Default java args: -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index 7920411de..55aadb12d 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -205,7 +205,7 @@ main_page=主页 message.confirm=提示 message.doing=请耐心等待 -message.downloading=正在下载... +message.downloading=正在下载 message.error=错误 message.info=提示 message.success=已完成 diff --git a/HMCL/src/main/resources/assets/log-window-content.html b/HMCL/src/main/resources/assets/log-window-content.html index eddd84ef5..246e9a62e 100644 --- a/HMCL/src/main/resources/assets/log-window-content.html +++ b/HMCL/src/main/resources/assets/log-window-content.html @@ -47,7 +47,7 @@ .trace { background-color: blue; }