diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/service/IMinecraftProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/service/IMinecraftProvider.java index 13cfd9121..ae10aeca8 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/service/IMinecraftProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/service/IMinecraftProvider.java @@ -24,6 +24,7 @@ import org.jackhuang.hellominecraft.launcher.core.version.DecompressLibraryJob; import org.jackhuang.hellominecraft.launcher.core.version.MinecraftVersion; import org.jackhuang.hellominecraft.util.EventHandler; import org.jackhuang.hellominecraft.util.func.Consumer; +import org.jackhuang.hellominecraft.util.func.Predicate; /** * Provide everything of the Minecraft of a Profile. @@ -117,7 +118,7 @@ public abstract class IMinecraftProvider { * * @return the version */ - public abstract MinecraftVersion getOneVersion(); + public abstract MinecraftVersion getOneVersion(Predicate p); /** * All Minecraft version in this profile. diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersionManager.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersionManager.java index 86f208f50..662168a07 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersionManager.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersionManager.java @@ -38,6 +38,7 @@ import org.jackhuang.hellominecraft.util.system.IOUtils; import org.jackhuang.hellominecraft.util.MessageBox; import org.jackhuang.hellominecraft.util.StrUtils; import org.jackhuang.hellominecraft.util.func.Consumer; +import org.jackhuang.hellominecraft.util.func.Predicate; import org.jackhuang.hellominecraft.util.ui.SwingUtils; /** @@ -245,8 +246,11 @@ public class MinecraftVersionManager extends IMinecraftProvider { } @Override - public MinecraftVersion getOneVersion() { - return versions.isEmpty() ? null : versions.values().iterator().next(); + public MinecraftVersion getOneVersion(Predicate pred) { + for (MinecraftVersion v : versions.values()) + if (pred == null || pred.apply(v)) + return v; + return null; } @Override diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/setting/Profile.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/setting/Profile.java index b42458213..9b88d23ec 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/setting/Profile.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/setting/Profile.java @@ -86,9 +86,9 @@ public final class Profile { public String getSelectedVersion() { String v = selectedMinecraftVersion; - if (StrUtils.isBlank(v) || service().version().getVersionById(v) == null) { + if (StrUtils.isBlank(v) || service().version().getVersionById(v) == null || service().version().getVersionById(v).hidden) { if (service().version().getVersionCount() > 0) - v = service().version().getOneVersion().id; + v = service().version().getOneVersion(t -> !t.hidden).id; if (StrUtils.isNotBlank(v)) setSelectedMinecraftVersion(v); }