diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaBundle.java b/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaBundle.java index 7ec9df0e82a..75af775237e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaBundle.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaBundle.java @@ -27,7 +27,6 @@ import org.jackhuang.hmcl.util.DigestUtils; import org.jackhuang.hmcl.util.io.ChecksumMismatchException; import org.jackhuang.hmcl.util.io.FileUtils; -import org.jackhuang.hmcl.util.logging.Logger; import org.jackhuang.hmcl.util.platform.OperatingSystem; import org.jackhuang.hmcl.util.tree.TarFileTree; @@ -45,6 +44,8 @@ import java.util.List; import java.util.Map; +import static org.jackhuang.hmcl.util.logging.Logger.LOG; + public final class TerracottaBundle { private final Path root; @@ -162,7 +163,7 @@ public AbstractTerracottaProvider.Status status() throws IOException { return AbstractTerracottaProvider.Status.LEGACY_VERSION; } } catch (IOException e) { - Logger.LOG.warning("Cannot determine whether legacy versions exist.", e); + LOG.warning("Cannot determine whether legacy versions exist.", e); } return AbstractTerracottaProvider.Status.NOT_EXIST; } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java index eb3c27fb0d2..624faa96c65 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java @@ -110,7 +110,10 @@ import java.nio.file.PathMatcher; import java.util.*; import java.util.concurrent.ConcurrentHashMap; -import java.util.function.*; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.function.ToIntFunction; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -295,11 +298,6 @@ public static InvalidationListener observeWeak(Runnable runnable, Observable... return originalListener; } - public static void runLaterIf(BooleanSupplier condition, Runnable runnable) { - if (condition.getAsBoolean()) Platform.runLater(() -> runLaterIf(condition, runnable)); - else runnable.run(); - } - public static void limitSize(ImageView imageView, double maxWidth, double maxHeight) { imageView.setPreserveRatio(true); onChangeAndOperate(imageView.imageProperty(), image -> { @@ -379,10 +377,6 @@ public static void setValidateWhileTextChanged(Node field, boolean validate) { throw new IllegalArgumentException("Only JFXTextField and JFXPasswordField allowed"); } - public static boolean getValidateWhileTextChanged(Node field) { - return field.getProperties().containsKey("FXUtils.validation"); - } - public static Rectangle setOverflowHidden(Region region) { Rectangle rectangle = new Rectangle(); rectangle.widthProperty().bind(region.widthProperty()); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/animation/AnimationUtils.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/animation/AnimationUtils.java index 57d21361d0e..4fcab3865c8 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/animation/AnimationUtils.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/animation/AnimationUtils.java @@ -18,9 +18,10 @@ package org.jackhuang.hmcl.ui.animation; import javafx.scene.Node; -import org.jackhuang.hmcl.setting.ConfigHolder; import org.jackhuang.hmcl.util.platform.OperatingSystem; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; + /** * @author Glavo */ @@ -37,7 +38,7 @@ private AnimationUtils() { public static void init() { } - private static final boolean ENABLED = !ConfigHolder.config().isAnimationDisabled(); + private static final boolean ENABLED = !config().isAnimationDisabled(); private static final boolean PLAY_WINDOW_ANIMATION = ENABLED && !OperatingSystem.CURRENT_OS.isLinuxOrBSD(); public static boolean isAnimationEnabled() { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/terracotta/TerracottaControllerPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/terracotta/TerracottaControllerPage.java index d7d7d3f77f5..d47071a3960 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/terracotta/TerracottaControllerPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/terracotta/TerracottaControllerPage.java @@ -56,7 +56,6 @@ import org.jackhuang.hmcl.util.i18n.LocaleUtils; import org.jackhuang.hmcl.util.io.FileUtils; import org.jackhuang.hmcl.util.io.Zipper; -import org.jackhuang.hmcl.util.logging.Logger; import java.io.OutputStream; import java.nio.charset.StandardCharsets; @@ -71,6 +70,7 @@ import static org.jackhuang.hmcl.setting.ConfigHolder.config; import static org.jackhuang.hmcl.util.i18n.I18n.i18n; +import static org.jackhuang.hmcl.util.logging.Logger.LOG; public class TerracottaControllerPage extends StackPane { private static final String FEEDBACK_TIP = "terracotta-feedback"; @@ -460,7 +460,7 @@ public TerracottaControllerPage() { try (Zipper zipper = new Zipper(path)) { zipper.putTextFile(data, StandardCharsets.UTF_8, "terracotta.log"); try (OutputStream os = zipper.putStream("hmcl-latest.log")) { - Logger.LOG.exportLogs(os); + LOG.exportLogs(os); } } FXUtils.showFileInExplorer(path); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ResourcePackListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ResourcePackListPage.java index 120c1f3f7b9..34872f72307 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ResourcePackListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ResourcePackListPage.java @@ -37,12 +37,13 @@ import javafx.stage.FileChooser; import javafx.stage.Stage; import javafx.util.Duration; -import org.jackhuang.hmcl.mod.*; +import org.jackhuang.hmcl.mod.LocalAddonFile; +import org.jackhuang.hmcl.mod.RemoteMod; +import org.jackhuang.hmcl.mod.RemoteModRepository; import org.jackhuang.hmcl.mod.curse.CurseForgeRemoteModRepository; import org.jackhuang.hmcl.mod.modrinth.ModrinthRemoteModRepository; import org.jackhuang.hmcl.resourcepack.ResourcePackFile; import org.jackhuang.hmcl.resourcepack.ResourcePackManager; -import org.jackhuang.hmcl.setting.ConfigHolder; import org.jackhuang.hmcl.setting.DownloadProviders; import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.task.Schedulers; @@ -67,6 +68,7 @@ import java.util.function.Predicate; import java.util.stream.Stream; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; import static org.jackhuang.hmcl.ui.FXUtils.ignoreEvent; import static org.jackhuang.hmcl.ui.FXUtils.onEscPressed; import static org.jackhuang.hmcl.ui.ToolbarListPageSkin.createToolbarButton2; @@ -194,13 +196,13 @@ private void onOpenFolder() { } private void setSelectedEnabled(List selectedItems, boolean enabled) { - if (!Boolean.TRUE.equals(ConfigHolder.config().getShownTips().get(TIP_KEY)) && enabled && !selectedItems.stream().map(ResourcePackInfoObject::getFile).allMatch(ResourcePackFile::isCompatible)) { + if (!Boolean.TRUE.equals(config().getShownTips().get(TIP_KEY)) && enabled && !selectedItems.stream().map(ResourcePackInfoObject::getFile).allMatch(ResourcePackFile::isCompatible)) { Controllers.confirm( i18n("resourcepack.warning.manipulate"), i18n("message.warning"), MessageDialogPane.MessageType.WARNING, () -> { - ConfigHolder.config().getShownTips().put(TIP_KEY, true); + config().getShownTips().put(TIP_KEY, true); setSelectedEnabled(selectedItems, true); }, null); } else { @@ -493,14 +495,14 @@ public ResourcePackListCell(JFXListView listView, Resour checkBox = new JFXCheckBox() { @Override public void fire() { - if (!Boolean.TRUE.equals(ConfigHolder.config().getShownTips().get(TIP_KEY)) && !isSelected() && object != null && !object.getFile().isCompatible()) { + if (!Boolean.TRUE.equals(config().getShownTips().get(TIP_KEY)) && !isSelected() && object != null && !object.getFile().isCompatible()) { Controllers.confirm( i18n("resourcepack.warning.manipulate"), i18n("message.info"), MessageDialogPane.MessageType.INFO, () -> { super.fire(); - ConfigHolder.config().getShownTips().put(TIP_KEY, true); + config().getShownTips().put(TIP_KEY, true); }, null); } else { super.fire(); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/multimc/MultiMCInstancePatch.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/multimc/MultiMCInstancePatch.java index 51483e4a38b..fb90a08b300 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/multimc/MultiMCInstancePatch.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/multimc/MultiMCInstancePatch.java @@ -20,37 +20,20 @@ import com.google.gson.JsonParseException; import com.google.gson.annotations.SerializedName; import org.jackhuang.hmcl.download.LibraryAnalyzer; -import org.jackhuang.hmcl.game.Argument; -import org.jackhuang.hmcl.game.Arguments; -import org.jackhuang.hmcl.game.Artifact; -import org.jackhuang.hmcl.game.AssetIndexInfo; -import org.jackhuang.hmcl.game.CompatibilityRule; -import org.jackhuang.hmcl.game.DownloadType; -import org.jackhuang.hmcl.game.GameJavaVersion; -import org.jackhuang.hmcl.game.Library; -import org.jackhuang.hmcl.game.OSRestriction; -import org.jackhuang.hmcl.game.RuledArgument; -import org.jackhuang.hmcl.game.StringArgument; -import org.jackhuang.hmcl.game.Version; +import org.jackhuang.hmcl.game.*; import org.jackhuang.hmcl.util.Immutable; import org.jackhuang.hmcl.util.Lang; import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.gson.JsonMap; import org.jackhuang.hmcl.util.gson.JsonUtils; import org.jackhuang.hmcl.util.io.NetworkUtils; -import org.jackhuang.hmcl.util.logging.Logger; import org.jackhuang.hmcl.util.platform.OperatingSystem; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; +import static org.jackhuang.hmcl.util.logging.Logger.LOG; + /** * @author huangyuhui */ @@ -443,7 +426,7 @@ public static ResolvedInstance resolveArtifact(List patche if (message.charAt(message.length() - 1) == '\n') { message.setLength(message.length() - 1); } - Logger.LOG.warning("Cannot fully parse MultiMC modpack with following unsupported features: \n" + message); + LOG.warning("Cannot fully parse MultiMC modpack with following unsupported features: \n" + message); } return new ResolvedInstance(version, gameVersion, mainJar, jarModFileNames, mavenOnlyFiles); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java index 4dde1a0d5e2..afcec4b94e1 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java @@ -38,14 +38,6 @@ public static T requireNonNullElse(T value, T defaultValue) { return value != null ? value : defaultValue; } - public static T requireNonNullElseGet(T value, Supplier defaultValue) { - return value != null ? value : defaultValue.get(); - } - - public static U requireNonNullElseGet(T value, Function mapper, Supplier defaultValue) { - return value != null ? mapper.apply(value) : defaultValue.get(); - } - /** * Construct a mutable map by given key-value pairs. * @@ -134,12 +126,6 @@ public static T merge(T a, T b, BinaryOperator operator) { return operator.apply(a, b); } - public static List removingDuplicates(List list) { - LinkedHashSet set = new LinkedHashSet<>(list.size()); - set.addAll(list); - return new ArrayList<>(set); - } - /** * Join two collections into one list. * @@ -357,15 +343,6 @@ public static BiConsumer wrap(ExceptionalBiConsumer fn) { }; } - @SafeVarargs - public static Consumer compose(Consumer... consumers) { - return t -> { - for (Consumer consumer : consumers) { - consumer.accept(t); - } - }; - } - @SuppressWarnings("OptionalUsedAsFieldOrParameterType") public static Stream toStream(Optional optional) { return optional.map(Stream::of).orElseGet(Stream::empty); @@ -398,13 +375,6 @@ public static Iterable toIterable(Iterator iterator) { return () -> iterator; } - public static void forEachZipped(Iterable i1, Iterable i2, BiConsumer action) { - Iterator it1 = i1.iterator(); - Iterator it2 = i2.iterator(); - while (it1.hasNext() && it2.hasNext()) - action.accept(it1.next(), it2.next()); - } - public static Throwable resolveException(Throwable e) { if (e instanceof ExecutionException || e instanceof CompletionException) return resolveException(e.getCause()); @@ -412,16 +382,6 @@ public static Throwable resolveException(Throwable e) { return e; } - /** - * This is a useful function to prevent exceptions being eaten when using CompletableFuture. - * You can write: - * ... .exceptionally(handleUncaught); - */ - public static final Function handleUncaught = e -> { - handleUncaughtException(e); - return null; - }; - public static R handleUncaughtException(Throwable e) { Thread.currentThread().getUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), e); return null;