diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/BMCLAPIDownloadProvider.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/BMCLAPIDownloadProvider.java index 3a37387a..ad36aa71 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/BMCLAPIDownloadProvider.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/BMCLAPIDownloadProvider.java @@ -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> 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 pair : replacement) { + if (baseURL.startsWith(pair.getKey())) { + return pair.getValue() + baseURL.substring(pair.getKey().length()); + } + } + + return baseURL; } @Override