优化 BMCLAPIDownloadProvider::injectURL

This commit is contained in:
Tungstend 2024-02-07 15:02:23 +08:00
parent 4c4fc36756
commit 1935f9f3ca
1 changed files with 33 additions and 17 deletions

View File

@ -17,6 +17,8 @@
*/
package com.tungsten.fclcore.download;
import static com.tungsten.fclcore.util.Pair.pair;
import com.tungsten.fclcore.download.fabric.FabricAPIVersionList;
import com.tungsten.fclcore.download.fabric.FabricVersionList;
import com.tungsten.fclcore.download.forge.ForgeBMCLVersionList;
@ -26,8 +28,12 @@ import com.tungsten.fclcore.download.neoforge.NeoForgeBMCLVersionList;
import com.tungsten.fclcore.download.optifine.OptiFineBMCLVersionList;
import com.tungsten.fclcore.download.quilt.QuiltAPIVersionList;
import com.tungsten.fclcore.download.quilt.QuiltVersionList;
import com.tungsten.fclcore.util.Pair;
public class BMCLAPIDownloadProvider implements DownloadProvider {
import java.util.Arrays;
import java.util.List;
public final class BMCLAPIDownloadProvider implements DownloadProvider {
private final String apiRoot;
private final GameVersionList game;
private final FabricVersionList fabric;
@ -38,6 +44,7 @@ public class BMCLAPIDownloadProvider implements DownloadProvider {
private final OptiFineBMCLVersionList optifine;
private final QuiltVersionList quilt;
private final QuiltAPIVersionList quiltApi;
private final List<Pair<String, String>> replacement;
public BMCLAPIDownloadProvider(String apiRoot) {
this.apiRoot = apiRoot;
@ -50,6 +57,24 @@ public class BMCLAPIDownloadProvider implements DownloadProvider {
this.optifine = new OptiFineBMCLVersionList(apiRoot);
this.quilt = new QuiltVersionList(this);
this.quiltApi = new QuiltAPIVersionList(this);
this.replacement = Arrays.asList(
pair("https://bmclapi2.bangbang93.com", apiRoot),
pair("https://launchermeta.mojang.com", apiRoot),
pair("https://piston-meta.mojang.com", apiRoot),
pair("https://piston-data.mojang.com", apiRoot),
pair("https://launcher.mojang.com", apiRoot),
pair("https://libraries.minecraft.net", apiRoot + "/libraries"),
pair("http://files.minecraftforge.net/maven", apiRoot + "/maven"),
pair("https://files.minecraftforge.net/maven", apiRoot + "/maven"),
pair("https://maven.minecraftforge.net", apiRoot + "/maven"),
pair("https://maven.neoforged.net/releases/net/neoforged/forge", apiRoot + "/maven/net/neoforged/forge"),
pair("http://dl.liteloader.com/versions/versions.json", apiRoot + "/maven/com/mumfrey/liteloader/versions.json"),
pair("http://dl.liteloader.com/versions", apiRoot + "/maven"),
pair("https://meta.fabricmc.net", apiRoot + "/fabric-meta"),
pair("https://maven.fabricmc.net", apiRoot + "/maven"),
pair("https://authlib-injector.yushi.moe", apiRoot + "/mirrors/authlib-injector"),
pair("https://repo1.maven.org/maven2", "https://mirrors.cloud.tencent.com/nexus/repository/maven-public")
);
}
public String getApiRoot() {
@ -94,22 +119,13 @@ public class BMCLAPIDownloadProvider implements DownloadProvider {
@Override
public String injectURL(String baseURL) {
return baseURL
.replace("https://bmclapi2.bangbang93.com", apiRoot)
.replace("https://launchermeta.mojang.com", apiRoot)
.replace("https://piston-meta.mojang.com", apiRoot)
.replace("https://piston-data.mojang.com", apiRoot)
.replace("https://launcher.mojang.com", apiRoot)
.replace("https://libraries.minecraft.net", apiRoot + "/libraries")
.replaceFirst("https?://files\\.minecraftforge\\.net/maven", apiRoot + "/maven")
.replace("https://maven.minecraftforge.net", apiRoot + "/maven")
.replace("https://maven.neoforged.net/releases/net/neoforged/forge", apiRoot + "/maven/net/neoforged/forge")
.replace("http://dl.liteloader.com/versions/versions.json", apiRoot + "/maven/com/mumfrey/liteloader/versions.json")
.replace("http://dl.liteloader.com/versions", apiRoot + "/maven")
.replace("https://meta.fabricmc.net", apiRoot + "/fabric-meta")
.replace("https://maven.fabricmc.net", apiRoot + "/maven")
.replace("https://authlib-injector.yushi.moe", apiRoot + "/mirrors/authlib-injector")
.replace("https://repo1.maven.org/maven2", "https://maven.aliyun.com/repository/central");
for (Pair<String, String> pair : replacement) {
if (baseURL.startsWith(pair.getKey())) {
return pair.getValue() + baseURL.substring(pair.getKey().length());
}
}
return baseURL;
}
@Override