Fixed hidden version selection

This commit is contained in:
huangyuhui
2016-02-15 13:26:30 +08:00
parent 5281fc6a69
commit 781c7369fb
3 changed files with 10 additions and 5 deletions

View File

@@ -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<MinecraftVersion> p);
/**
* All Minecraft version in this profile.

View File

@@ -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<MinecraftVersion> pred) {
for (MinecraftVersion v : versions.values())
if (pred == null || pred.apply(v))
return v;
return null;
}
@Override

View File

@@ -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);
}