mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-13 22:07:01 -04:00
parent
5388020b35
commit
9290c26c0b
@ -22,7 +22,7 @@ import org.jackhuang.hmcl.download.fabric.FabricVersionList;
|
|||||||
import org.jackhuang.hmcl.download.forge.ForgeBMCLVersionList;
|
import org.jackhuang.hmcl.download.forge.ForgeBMCLVersionList;
|
||||||
import org.jackhuang.hmcl.download.game.GameVersionList;
|
import org.jackhuang.hmcl.download.game.GameVersionList;
|
||||||
import org.jackhuang.hmcl.download.liteloader.LiteLoaderVersionList;
|
import org.jackhuang.hmcl.download.liteloader.LiteLoaderVersionList;
|
||||||
import org.jackhuang.hmcl.download.neoforge.NeoForgeBMCLVersionList;
|
import org.jackhuang.hmcl.download.neoforge.NeoForgeOfficialVersionList;
|
||||||
import org.jackhuang.hmcl.download.optifine.OptiFineBMCLVersionList;
|
import org.jackhuang.hmcl.download.optifine.OptiFineBMCLVersionList;
|
||||||
import org.jackhuang.hmcl.download.quilt.QuiltAPIVersionList;
|
import org.jackhuang.hmcl.download.quilt.QuiltAPIVersionList;
|
||||||
import org.jackhuang.hmcl.download.quilt.QuiltVersionList;
|
import org.jackhuang.hmcl.download.quilt.QuiltVersionList;
|
||||||
@ -36,20 +36,21 @@ public class MojangDownloadProvider implements DownloadProvider {
|
|||||||
private final FabricVersionList fabric;
|
private final FabricVersionList fabric;
|
||||||
private final FabricAPIVersionList fabricApi;
|
private final FabricAPIVersionList fabricApi;
|
||||||
private final ForgeBMCLVersionList forge;
|
private final ForgeBMCLVersionList forge;
|
||||||
private final NeoForgeBMCLVersionList neoforge;
|
private final NeoForgeOfficialVersionList neoforge;
|
||||||
private final LiteLoaderVersionList liteLoader;
|
private final LiteLoaderVersionList liteLoader;
|
||||||
private final OptiFineBMCLVersionList optifine;
|
private final OptiFineBMCLVersionList optifine;
|
||||||
private final QuiltVersionList quilt;
|
private final QuiltVersionList quilt;
|
||||||
private final QuiltAPIVersionList quiltApi;
|
private final QuiltAPIVersionList quiltApi;
|
||||||
|
|
||||||
public MojangDownloadProvider() {
|
public MojangDownloadProvider() {
|
||||||
|
// If there is no official download channel available, fallback to BMCLAPI.
|
||||||
String apiRoot = "https://bmclapi2.bangbang93.com";
|
String apiRoot = "https://bmclapi2.bangbang93.com";
|
||||||
|
|
||||||
this.game = new GameVersionList(this);
|
this.game = new GameVersionList(this);
|
||||||
this.fabric = new FabricVersionList(this);
|
this.fabric = new FabricVersionList(this);
|
||||||
this.fabricApi = new FabricAPIVersionList(this);
|
this.fabricApi = new FabricAPIVersionList(this);
|
||||||
this.forge = new ForgeBMCLVersionList(apiRoot);
|
this.forge = new ForgeBMCLVersionList(apiRoot);
|
||||||
this.neoforge = new NeoForgeBMCLVersionList(apiRoot);
|
this.neoforge = new NeoForgeOfficialVersionList(this);
|
||||||
this.liteLoader = new LiteLoaderVersionList(this);
|
this.liteLoader = new LiteLoaderVersionList(this);
|
||||||
this.optifine = new OptiFineBMCLVersionList(apiRoot);
|
this.optifine = new OptiFineBMCLVersionList(apiRoot);
|
||||||
this.quilt = new QuiltVersionList(this);
|
this.quilt = new QuiltVersionList(this);
|
||||||
|
@ -0,0 +1,75 @@
|
|||||||
|
package org.jackhuang.hmcl.download.neoforge;
|
||||||
|
|
||||||
|
import org.jackhuang.hmcl.download.DownloadProvider;
|
||||||
|
import org.jackhuang.hmcl.download.VersionList;
|
||||||
|
import org.jackhuang.hmcl.util.Lang;
|
||||||
|
import org.jackhuang.hmcl.util.StringUtils;
|
||||||
|
import org.jackhuang.hmcl.util.io.HttpRequest;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.util.Lang.wrap;
|
||||||
|
|
||||||
|
public final class NeoForgeOfficialVersionList extends VersionList<NeoForgeRemoteVersion> {
|
||||||
|
private final DownloadProvider downloadProvider;
|
||||||
|
|
||||||
|
public NeoForgeOfficialVersionList(DownloadProvider downloadProvider) {
|
||||||
|
this.downloadProvider = downloadProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasType() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String OLD_URL = "https://maven.neoforged.net/api/maven/versions/releases/net/neoforged/forge";
|
||||||
|
|
||||||
|
private static final String META_URL = "https://maven.neoforged.net/api/maven/versions/releases/net/neoforged/neoforge";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletableFuture<?> refreshAsync() {
|
||||||
|
return CompletableFuture.supplyAsync(wrap(() -> new OfficialAPIResult[]{
|
||||||
|
HttpRequest.GET(downloadProvider.injectURL(OLD_URL)).getJson(OfficialAPIResult.class),
|
||||||
|
HttpRequest.GET(downloadProvider.injectURL(META_URL)).getJson(OfficialAPIResult.class)
|
||||||
|
})).thenAccept(results -> {
|
||||||
|
lock.writeLock().lock();
|
||||||
|
|
||||||
|
try {
|
||||||
|
versions.clear();
|
||||||
|
|
||||||
|
for (String version : results[0].versions) {
|
||||||
|
versions.put("1.20.1", new NeoForgeRemoteVersion(
|
||||||
|
"1.20.1", StringUtils.removePrefix(version, "1.20.1-"),
|
||||||
|
Lang.immutableListOf(
|
||||||
|
downloadProvider.injectURL("https://maven.neoforged.net/releases/net/neoforged/forge/" + version + "/forge-" + version + "-installer.jar")
|
||||||
|
)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String version : results[1].versions) {
|
||||||
|
String mcVersion = "1." + version.substring(0, version.indexOf('.', version.indexOf('.') + 1));
|
||||||
|
versions.put(mcVersion, new NeoForgeRemoteVersion(
|
||||||
|
mcVersion, version,
|
||||||
|
Lang.immutableListOf(
|
||||||
|
downloadProvider.injectURL("https://maven.neoforged.net/releases/net/neoforged/neoforge/" + version + "/neoforge-" + version + "-installer.jar")
|
||||||
|
)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
lock.writeLock().unlock();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final class OfficialAPIResult {
|
||||||
|
private final boolean isSnapshot;
|
||||||
|
|
||||||
|
private final List<String> versions;
|
||||||
|
|
||||||
|
public OfficialAPIResult(boolean isSnapshot, List<String> versions) {
|
||||||
|
this.isSnapshot = isSnapshot;
|
||||||
|
this.versions = versions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user