From f6478e6a4bfc1aaf0a097c33eb6844d93b309580 Mon Sep 17 00:00:00 2001 From: 502y <53784463+502y@users.noreply.github.com> Date: Mon, 1 Sep 2025 01:17:58 +0800 Subject: [PATCH 1/8] feat: Support download from mirrors --- .../java/i18nupdatemod/core/I18nConfig.java | 63 +++++++++-- .../java/i18nupdatemod/util/AssetUtil.java | 105 +++++++++++++++++- 2 files changed, 160 insertions(+), 8 deletions(-) diff --git a/src/main/java/i18nupdatemod/core/I18nConfig.java b/src/main/java/i18nupdatemod/core/I18nConfig.java index fab2c2e..c6af907 100644 --- a/src/main/java/i18nupdatemod/core/I18nConfig.java +++ b/src/main/java/i18nupdatemod/core/I18nConfig.java @@ -11,9 +11,15 @@ import java.io.InputStream; import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; +import static i18nupdatemod.util.AssetUtil.getFastestUrl; +import static i18nupdatemod.util.AssetUtil.getGitIndex; + public class I18nConfig { /** * CFPAOrg/Minecraft-Mod-Language-Package @@ -58,17 +64,60 @@ public static GameAssetDetail getAssetDetail(String minecraftVersion, String loa GameMetaData convert = getGameMetaData(minecraftVersion); GameAssetDetail ret = new GameAssetDetail(); - ret.downloads = convert.convertFrom.stream().map(it -> getAssetMetaData(it, loader)).map(it -> { + String asset_root = getFastestUrl(); + Log.debug("Using asset root: " + asset_root); + + if (asset_root.contains("github")) { + ret.downloads = createDownloadDetailsFromGit(convert, loader); + } else { + ret.downloads = createDownloadDetails(convert, loader, asset_root); + } + + ret.covertPackFormat = convert.packFormat; + ret.covertFileName = + String.format("Minecraft-Mod-Language-Modpack-Converted-%s.zip", minecraftVersion); + return ret; + } + + private static List createDownloadDetails(GameMetaData convert, String loader, String asset_root) { + return convert.convertFrom.stream().map(it -> getAssetMetaData(it, loader)).map(it -> { GameAssetDetail.AssetDownloadDetail adi = new GameAssetDetail.AssetDownloadDetail(); adi.fileName = it.filename; - adi.fileUrl = CFPA_ASSET_ROOT + it.filename; - adi.md5Url = CFPA_ASSET_ROOT + it.md5Filename; + adi.fileUrl = asset_root + it.filename; + adi.md5Url = asset_root + it.md5Filename; adi.targetVersion = it.targetVersion; return adi; }).collect(Collectors.toList()); - ret.covertPackFormat = convert.packFormat; - ret.covertFileName = - String.format("Minecraft-Mod-Language-Modpack-Converted-%s.zip", minecraftVersion); - return ret; + } + + private static List createDownloadDetailsFromGit(GameMetaData convert, String loader) { + try { + Map index = getGitIndex(); + String releaseTag; + String version = convert.gameVersions.substring(1,5); + + if(loader.toLowerCase().contains("fabric")){ + releaseTag = index.get(version + "-fabric"); + }else{ + releaseTag = index.get(version); + } + if (releaseTag == null) { + Log.debug("Error getting index: " + version + "-" + loader); + Log.debug(index.toString()); + throw new Exception(); + } + String asset_root = "https://github.com/CFPAOrg/Minecraft-Mod-Language-Package/releases/download/" + releaseTag + "/"; + + return convert.convertFrom.stream().map(it -> getAssetMetaData(it, loader)).map(it -> { + GameAssetDetail.AssetDownloadDetail adi = new GameAssetDetail.AssetDownloadDetail(); + adi.fileName = it.filename; + adi.fileUrl = (asset_root + it.filename).replace("Minecraft-Mod-Language-Modpack-1-","Minecraft-Mod-Language-Package-1."); + adi.md5Url = asset_root + it.md5Filename; + adi.targetVersion = it.targetVersion; + return adi; + }).collect(Collectors.toList()); + } catch (Exception ignore) { + return createDownloadDetails(convert, loader, CFPA_ASSET_ROOT); + } } } diff --git a/src/main/java/i18nupdatemod/util/AssetUtil.java b/src/main/java/i18nupdatemod/util/AssetUtil.java index 713ea10..f306c61 100644 --- a/src/main/java/i18nupdatemod/util/AssetUtil.java +++ b/src/main/java/i18nupdatemod/util/AssetUtil.java @@ -1,16 +1,39 @@ package i18nupdatemod.util; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; +import org.jetbrains.annotations.NotNull; +import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.lang.reflect.Type; +import java.net.HttpURLConnection; import java.net.URI; import java.net.URISyntaxException; +import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.Path; -import java.util.concurrent.TimeUnit; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.*; public class AssetUtil { + private static final String CFPA_ASSET_ROOT = "http://downloader1.meitangdehulu.com:22943/"; + private static final List MIRRORS; + + static { + // 镜像地址可以改成服务器下发 + MIRRORS = new ArrayList<>(); + // MIRRORS.add("http://localhost:8080/"); + MIRRORS.add("https://raw.githubusercontent.com/"); + } + public static void download(String url, Path localFile) throws IOException, URISyntaxException { Log.info("Downloading: %s -> %s", url, localFile); FileUtils.copyURLToFile(new URI(url).toURL(), localFile.toFile(), @@ -21,4 +44,84 @@ public static void download(String url, Path localFile) throws IOException, URIS public static String getString(String url) throws IOException, URISyntaxException { return IOUtils.toString(new URI(url).toURL(), StandardCharsets.UTF_8); } + + public static String getFastestUrl() { + List urls = new ArrayList<>(MIRRORS); + urls.add(CFPA_ASSET_ROOT); + + ExecutorService executor = Executors.newFixedThreadPool(Math.max(urls.size(), 10)); + try { + List> futures = new ArrayList<>(); + for (String url : urls) { + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + try { + return testUrlConnection(url); + } catch (IOException e) { + return null; // 表示失败 + } + }, executor); + futures.add(future); + } + + // 阻塞等待最快完成且成功的任务 + String fastest = null; + while (!futures.isEmpty()) { + CompletableFuture first = CompletableFuture.anyOf(futures.toArray(new CompletableFuture[0])); + fastest = (String) first.join(); + + // 移除已完成的 future + futures.removeIf(CompletableFuture::isDone); + + if (fastest != null) { + // 成功,取消其他任务 + for (CompletableFuture f : futures) { + f.cancel(true); + } + Log.info("Using fastest url: %s", fastest); + return fastest; + } + } + + // 全部失败,返回默认 URL + Log.info("All urls are unreachable, using CFPA_ASSET_ROOT"); + return CFPA_ASSET_ROOT; + + } finally { + executor.shutdownNow(); + } + } + + private static String testUrlConnection(String url) throws IOException { + HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); + conn.setRequestMethod("HEAD"); + conn.setConnectTimeout(3000); + conn.setReadTimeout(5000); + conn.connect(); + int code = conn.getResponseCode(); + if (code >= 200 && code < 300) { + return url; + } + Log.debug("URL unreachable: %s, code: %d", url, code); + throw new IOException("URL unreachable: " + url); + } + + @NotNull + public static Map getGitIndex(){ + try{ + URL index_url = new URL("https://raw.githubusercontent.com/CFPAOrg/Minecraft-Mod-Language-Package/refs/heads/main/version-index.json"); + HttpURLConnection httpConn = (HttpURLConnection) index_url.openConnection(); + httpConn.setRequestMethod("GET"); + httpConn.setConnectTimeout(5000); + httpConn.setReadTimeout(5000); + + try (InputStreamReader reader = new InputStreamReader(httpConn.getInputStream())) { + Type mapType = new TypeToken>(){}.getType(); + return new Gson().fromJson(reader, mapType); + } finally { + httpConn.disconnect(); + } + } catch (Exception ignore) { + return new HashMap<>(); + } + } } From ca7d3fe27771d0cda29e21a0e0609338beef4b90 Mon Sep 17 00:00:00 2001 From: 502y <53784463+502y@users.noreply.github.com> Date: Tue, 2 Sep 2025 00:27:01 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E4=BC=98=E5=8C=96Github=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E3=80=81=E6=B7=BB=E5=8A=A0=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E9=95=9C=E5=83=8F=E7=AB=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/i18nupdatemod/core/I18nConfig.java | 24 +++++++++++++++++-- .../java/i18nupdatemod/util/AssetUtil.java | 2 ++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/java/i18nupdatemod/core/I18nConfig.java b/src/main/java/i18nupdatemod/core/I18nConfig.java index c6af907..294b8ac 100644 --- a/src/main/java/i18nupdatemod/core/I18nConfig.java +++ b/src/main/java/i18nupdatemod/core/I18nConfig.java @@ -13,6 +13,7 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -27,6 +28,7 @@ public class I18nConfig { private static final String CFPA_ASSET_ROOT = "http://downloader1.meitangdehulu.com:22943/"; private static final Gson GSON = new Gson(); private static I18nMetaData i18nMetaData; + private static final Map serverGitIndex = new HashMap<>(); static { init(); @@ -42,6 +44,24 @@ private static void init() { } catch (Exception e) { Log.warning("Error getting index: " + e); } + // Update with i18nMetaData.json and GitHub Packer + String[][] mappings = { + {"Minecraft-Mod-Language-Modpack.zip", "Minecraft-Mod-Language-Package-1.12.2.zip"}, + {"Minecraft-Mod-Language-Modpack-1-16.zip", "Minecraft-Mod-Language-Package-1.16.zip"}, + {"Minecraft-Mod-Language-Modpack-1-16-Fabric.zip", "Minecraft-Mod-Language-Package-1.16-fabric.zip"}, + {"Minecraft-Mod-Language-Modpack-1-18.zip", "Minecraft-Mod-Language-Package-1.18.zip"}, + {"Minecraft-Mod-Language-Modpack-1-18-Fabric.zip", "Minecraft-Mod-Language-Package-1.18-fabric.zip"}, + {"Minecraft-Mod-Language-Modpack-1-19.zip", "Minecraft-Mod-Language-Package-1.19.zip"}, + {"Minecraft-Mod-Language-Modpack-1-19-Fabric.zip", "Minecraft-Mod-Language-Package-1.19-fabric.zip"}, + {"Minecraft-Mod-Language-Modpack-1-20.zip", "Minecraft-Mod-Language-Package-1.20.zip"}, + {"Minecraft-Mod-Language-Modpack-1-20-Fabric.zip", "Minecraft-Mod-Language-Package-1.20-fabric.zip"}, + {"Minecraft-Mod-Language-Modpack-1-21.zip", "Minecraft-Mod-Language-Package-1.21.zip"}, + {"Minecraft-Mod-Language-Modpack-1-21-Fabric.zip", "Minecraft-Mod-Language-Package-1.21-fabric.zip"} + }; + + for (String[] mapping : mappings) { + serverGitIndex.put(mapping[0], mapping[1]); + } } private static GameMetaData getGameMetaData(String minecraftVersion) { @@ -94,7 +114,7 @@ private static List createDownloadDetailsFr try { Map index = getGitIndex(); String releaseTag; - String version = convert.gameVersions.substring(1,5); + String version = convert.convertFrom.get(0); if(loader.toLowerCase().contains("fabric")){ releaseTag = index.get(version + "-fabric"); @@ -111,7 +131,7 @@ private static List createDownloadDetailsFr return convert.convertFrom.stream().map(it -> getAssetMetaData(it, loader)).map(it -> { GameAssetDetail.AssetDownloadDetail adi = new GameAssetDetail.AssetDownloadDetail(); adi.fileName = it.filename; - adi.fileUrl = (asset_root + it.filename).replace("Minecraft-Mod-Language-Modpack-1-","Minecraft-Mod-Language-Package-1."); + adi.fileUrl = asset_root + serverGitIndex.get(it.filename); adi.md5Url = asset_root + it.md5Filename; adi.targetVersion = it.targetVersion; return adi; diff --git a/src/main/java/i18nupdatemod/util/AssetUtil.java b/src/main/java/i18nupdatemod/util/AssetUtil.java index f306c61..d06714e 100644 --- a/src/main/java/i18nupdatemod/util/AssetUtil.java +++ b/src/main/java/i18nupdatemod/util/AssetUtil.java @@ -32,6 +32,8 @@ public class AssetUtil { MIRRORS = new ArrayList<>(); // MIRRORS.add("http://localhost:8080/"); MIRRORS.add("https://raw.githubusercontent.com/"); + // 此镜像源维护者:502y + MIRRORS.add("http://203.135.99.76:30002/"); } public static void download(String url, Path localFile) throws IOException, URISyntaxException { From 9bb5f662e9b50836188a788007508b326836c564 Mon Sep 17 00:00:00 2001 From: 502y <53784463+502y@users.noreply.github.com> Date: Fri, 5 Sep 2025 00:59:45 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=80=82=E5=BA=94packer=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/i18nupdatemod/core/I18nConfig.java | 21 +------------------ .../java/i18nupdatemod/util/AssetUtil.java | 2 +- 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/src/main/java/i18nupdatemod/core/I18nConfig.java b/src/main/java/i18nupdatemod/core/I18nConfig.java index 294b8ac..7ac0461 100644 --- a/src/main/java/i18nupdatemod/core/I18nConfig.java +++ b/src/main/java/i18nupdatemod/core/I18nConfig.java @@ -28,7 +28,6 @@ public class I18nConfig { private static final String CFPA_ASSET_ROOT = "http://downloader1.meitangdehulu.com:22943/"; private static final Gson GSON = new Gson(); private static I18nMetaData i18nMetaData; - private static final Map serverGitIndex = new HashMap<>(); static { init(); @@ -44,24 +43,6 @@ private static void init() { } catch (Exception e) { Log.warning("Error getting index: " + e); } - // Update with i18nMetaData.json and GitHub Packer - String[][] mappings = { - {"Minecraft-Mod-Language-Modpack.zip", "Minecraft-Mod-Language-Package-1.12.2.zip"}, - {"Minecraft-Mod-Language-Modpack-1-16.zip", "Minecraft-Mod-Language-Package-1.16.zip"}, - {"Minecraft-Mod-Language-Modpack-1-16-Fabric.zip", "Minecraft-Mod-Language-Package-1.16-fabric.zip"}, - {"Minecraft-Mod-Language-Modpack-1-18.zip", "Minecraft-Mod-Language-Package-1.18.zip"}, - {"Minecraft-Mod-Language-Modpack-1-18-Fabric.zip", "Minecraft-Mod-Language-Package-1.18-fabric.zip"}, - {"Minecraft-Mod-Language-Modpack-1-19.zip", "Minecraft-Mod-Language-Package-1.19.zip"}, - {"Minecraft-Mod-Language-Modpack-1-19-Fabric.zip", "Minecraft-Mod-Language-Package-1.19-fabric.zip"}, - {"Minecraft-Mod-Language-Modpack-1-20.zip", "Minecraft-Mod-Language-Package-1.20.zip"}, - {"Minecraft-Mod-Language-Modpack-1-20-Fabric.zip", "Minecraft-Mod-Language-Package-1.20-fabric.zip"}, - {"Minecraft-Mod-Language-Modpack-1-21.zip", "Minecraft-Mod-Language-Package-1.21.zip"}, - {"Minecraft-Mod-Language-Modpack-1-21-Fabric.zip", "Minecraft-Mod-Language-Package-1.21-fabric.zip"} - }; - - for (String[] mapping : mappings) { - serverGitIndex.put(mapping[0], mapping[1]); - } } private static GameMetaData getGameMetaData(String minecraftVersion) { @@ -131,7 +112,7 @@ private static List createDownloadDetailsFr return convert.convertFrom.stream().map(it -> getAssetMetaData(it, loader)).map(it -> { GameAssetDetail.AssetDownloadDetail adi = new GameAssetDetail.AssetDownloadDetail(); adi.fileName = it.filename; - adi.fileUrl = asset_root + serverGitIndex.get(it.filename); + adi.fileUrl = asset_root + it.filename; adi.md5Url = asset_root + it.md5Filename; adi.targetVersion = it.targetVersion; return adi; diff --git a/src/main/java/i18nupdatemod/util/AssetUtil.java b/src/main/java/i18nupdatemod/util/AssetUtil.java index d06714e..94fc7fa 100644 --- a/src/main/java/i18nupdatemod/util/AssetUtil.java +++ b/src/main/java/i18nupdatemod/util/AssetUtil.java @@ -110,7 +110,7 @@ private static String testUrlConnection(String url) throws IOException { @NotNull public static Map getGitIndex(){ try{ - URL index_url = new URL("https://raw.githubusercontent.com/CFPAOrg/Minecraft-Mod-Language-Package/refs/heads/main/version-index.json"); + URL index_url = new URL("https://raw.githubusercontent.com/CFPAOrg/Minecraft-Mod-Language-Package/refs/heads/index/version-index.json"); HttpURLConnection httpConn = (HttpURLConnection) index_url.openConnection(); httpConn.setRequestMethod("GET"); httpConn.setConnectTimeout(5000); From 61ef877a45d0614a09756618ead435226eb3d36b Mon Sep 17 00:00:00 2001 From: 502y <53784463+502y@users.noreply.github.com> Date: Tue, 9 Sep 2025 13:30:20 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E4=BA=86=E9=80=9F?= =?UTF-8?q?=E5=BA=A6=E6=9B=B4=E5=BF=AB=E7=9A=84=E9=95=9C=E5=83=8F=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/i18nupdatemod/util/AssetUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/i18nupdatemod/util/AssetUtil.java b/src/main/java/i18nupdatemod/util/AssetUtil.java index 94fc7fa..06bbe56 100644 --- a/src/main/java/i18nupdatemod/util/AssetUtil.java +++ b/src/main/java/i18nupdatemod/util/AssetUtil.java @@ -33,7 +33,7 @@ public class AssetUtil { // MIRRORS.add("http://localhost:8080/"); MIRRORS.add("https://raw.githubusercontent.com/"); // 此镜像源维护者:502y - MIRRORS.add("http://203.135.99.76:30002/"); + MIRRORS.add("http://8.137.167.65:64684/"); } public static void download(String url, Path localFile) throws IOException, URISyntaxException { From bd2dc4fd0f2eb89804fa944180b887a294429b35 Mon Sep 17 00:00:00 2001 From: 502y <53784463+502y@users.noreply.github.com> Date: Fri, 17 Oct 2025 21:04:46 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=96=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/i18nupdatemod/core/I18nConfig.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/i18nupdatemod/core/I18nConfig.java b/src/main/java/i18nupdatemod/core/I18nConfig.java index 7ac0461..83651f2 100644 --- a/src/main/java/i18nupdatemod/core/I18nConfig.java +++ b/src/main/java/i18nupdatemod/core/I18nConfig.java @@ -25,7 +25,7 @@ public class I18nConfig { /** * CFPAOrg/Minecraft-Mod-Language-Package */ - private static final String CFPA_ASSET_ROOT = "http://downloader1.meitangdehulu.com:22943/"; + private static final String CFPA_assetRoot = "http://downloader1.meitangdehulu.com:22943/"; private static final Gson GSON = new Gson(); private static I18nMetaData i18nMetaData; @@ -65,13 +65,13 @@ public static GameAssetDetail getAssetDetail(String minecraftVersion, String loa GameMetaData convert = getGameMetaData(minecraftVersion); GameAssetDetail ret = new GameAssetDetail(); - String asset_root = getFastestUrl(); - Log.debug("Using asset root: " + asset_root); + String assetRoot = getFastestUrl(); + Log.debug("Using asset root: " + assetRoot); - if (asset_root.contains("github")) { + if (assetRoot.contains("github")) { ret.downloads = createDownloadDetailsFromGit(convert, loader); } else { - ret.downloads = createDownloadDetails(convert, loader, asset_root); + ret.downloads = createDownloadDetails(convert, loader, assetRoot); } ret.covertPackFormat = convert.packFormat; @@ -80,12 +80,12 @@ public static GameAssetDetail getAssetDetail(String minecraftVersion, String loa return ret; } - private static List createDownloadDetails(GameMetaData convert, String loader, String asset_root) { + private static List createDownloadDetails(GameMetaData convert, String loader, String assetRoot) { return convert.convertFrom.stream().map(it -> getAssetMetaData(it, loader)).map(it -> { GameAssetDetail.AssetDownloadDetail adi = new GameAssetDetail.AssetDownloadDetail(); adi.fileName = it.filename; - adi.fileUrl = asset_root + it.filename; - adi.md5Url = asset_root + it.md5Filename; + adi.fileUrl = assetRoot + it.filename; + adi.md5Url = assetRoot + it.md5Filename; adi.targetVersion = it.targetVersion; return adi; }).collect(Collectors.toList()); @@ -107,18 +107,18 @@ private static List createDownloadDetailsFr Log.debug(index.toString()); throw new Exception(); } - String asset_root = "https://github.com/CFPAOrg/Minecraft-Mod-Language-Package/releases/download/" + releaseTag + "/"; + String assetRoot = "https://github.com/CFPAOrg/Minecraft-Mod-Language-Package/releases/download/" + releaseTag + "/"; return convert.convertFrom.stream().map(it -> getAssetMetaData(it, loader)).map(it -> { GameAssetDetail.AssetDownloadDetail adi = new GameAssetDetail.AssetDownloadDetail(); adi.fileName = it.filename; - adi.fileUrl = asset_root + it.filename; - adi.md5Url = asset_root + it.md5Filename; + adi.fileUrl = assetRoot + it.filename; + adi.md5Url = assetRoot + it.md5Filename; adi.targetVersion = it.targetVersion; return adi; }).collect(Collectors.toList()); } catch (Exception ignore) { - return createDownloadDetails(convert, loader, CFPA_ASSET_ROOT); + return createDownloadDetails(convert, loader, CFPA_assetRoot); } } } From 212631ad55fc2568dc535542a949204446b89070 Mon Sep 17 00:00:00 2001 From: 502y <53784463+502y@users.noreply.github.com> Date: Fri, 17 Oct 2025 21:06:17 +0800 Subject: [PATCH 6/8] fix: fix wrong replace all --- src/main/java/i18nupdatemod/core/I18nConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/i18nupdatemod/core/I18nConfig.java b/src/main/java/i18nupdatemod/core/I18nConfig.java index 83651f2..c376101 100644 --- a/src/main/java/i18nupdatemod/core/I18nConfig.java +++ b/src/main/java/i18nupdatemod/core/I18nConfig.java @@ -25,7 +25,7 @@ public class I18nConfig { /** * CFPAOrg/Minecraft-Mod-Language-Package */ - private static final String CFPA_assetRoot = "http://downloader1.meitangdehulu.com:22943/"; + private static final String CFPA_ASSET_ROOT = "http://downloader1.meitangdehulu.com:22943/"; private static final Gson GSON = new Gson(); private static I18nMetaData i18nMetaData; @@ -118,7 +118,7 @@ private static List createDownloadDetailsFr return adi; }).collect(Collectors.toList()); } catch (Exception ignore) { - return createDownloadDetails(convert, loader, CFPA_assetRoot); + return createDownloadDetails(convert, loader, CFPA_ASSET_ROOT ); } } } From 8b8b656a2bd49c423995f68a920754ff0912ef37 Mon Sep 17 00:00:00 2001 From: 502y <53784463+502y@users.noreply.github.com> Date: Fri, 17 Oct 2025 21:32:21 +0800 Subject: [PATCH 7/8] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96Github=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/i18nupdatemod/core/I18nConfig.java | 13 +++++-------- src/main/java/i18nupdatemod/util/AssetUtil.java | 9 ++++----- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/main/java/i18nupdatemod/core/I18nConfig.java b/src/main/java/i18nupdatemod/core/I18nConfig.java index c376101..b0169c7 100644 --- a/src/main/java/i18nupdatemod/core/I18nConfig.java +++ b/src/main/java/i18nupdatemod/core/I18nConfig.java @@ -11,9 +11,6 @@ import java.io.InputStream; import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -25,7 +22,7 @@ public class I18nConfig { /** * CFPAOrg/Minecraft-Mod-Language-Package */ - private static final String CFPA_ASSET_ROOT = "http://downloader1.meitangdehulu.com:22943/"; + private static final String CFPA_ASSET_ROOT = "http://downloader1.meitangdehulu.com:22943/"; private static final Gson GSON = new Gson(); private static I18nMetaData i18nMetaData; @@ -68,7 +65,7 @@ public static GameAssetDetail getAssetDetail(String minecraftVersion, String loa String assetRoot = getFastestUrl(); Log.debug("Using asset root: " + assetRoot); - if (assetRoot.contains("github")) { + if (assetRoot.equals("https://raw.githubusercontent.com/")) { ret.downloads = createDownloadDetailsFromGit(convert, loader); } else { ret.downloads = createDownloadDetails(convert, loader, assetRoot); @@ -97,9 +94,9 @@ private static List createDownloadDetailsFr String releaseTag; String version = convert.convertFrom.get(0); - if(loader.toLowerCase().contains("fabric")){ + if (loader.toLowerCase().contains("fabric")) { releaseTag = index.get(version + "-fabric"); - }else{ + } else { releaseTag = index.get(version); } if (releaseTag == null) { @@ -118,7 +115,7 @@ private static List createDownloadDetailsFr return adi; }).collect(Collectors.toList()); } catch (Exception ignore) { - return createDownloadDetails(convert, loader, CFPA_ASSET_ROOT ); + return createDownloadDetails(convert, loader, CFPA_ASSET_ROOT); } } } diff --git a/src/main/java/i18nupdatemod/util/AssetUtil.java b/src/main/java/i18nupdatemod/util/AssetUtil.java index 06bbe56..de4948f 100644 --- a/src/main/java/i18nupdatemod/util/AssetUtil.java +++ b/src/main/java/i18nupdatemod/util/AssetUtil.java @@ -6,9 +6,7 @@ import org.apache.commons.io.IOUtils; import org.jetbrains.annotations.NotNull; -import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Type; import java.net.HttpURLConnection; @@ -108,8 +106,8 @@ private static String testUrlConnection(String url) throws IOException { } @NotNull - public static Map getGitIndex(){ - try{ + public static Map getGitIndex() { + try { URL index_url = new URL("https://raw.githubusercontent.com/CFPAOrg/Minecraft-Mod-Language-Package/refs/heads/index/version-index.json"); HttpURLConnection httpConn = (HttpURLConnection) index_url.openConnection(); httpConn.setRequestMethod("GET"); @@ -117,7 +115,8 @@ public static Map getGitIndex(){ httpConn.setReadTimeout(5000); try (InputStreamReader reader = new InputStreamReader(httpConn.getInputStream())) { - Type mapType = new TypeToken>(){}.getType(); + Type mapType = new TypeToken>() { + }.getType(); return new Gson().fromJson(reader, mapType); } finally { httpConn.disconnect(); From 3fe7127bd588d4c07159fa431cd58df5eaa7c365 Mon Sep 17 00:00:00 2001 From: 502y <53784463+502y@users.noreply.github.com> Date: Fri, 17 Oct 2025 21:36:05 +0800 Subject: [PATCH 8/8] Clean up comment in AssetUtil Removed commented out localhost mirror URL. --- src/main/java/i18nupdatemod/util/AssetUtil.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/i18nupdatemod/util/AssetUtil.java b/src/main/java/i18nupdatemod/util/AssetUtil.java index de4948f..d75c840 100644 --- a/src/main/java/i18nupdatemod/util/AssetUtil.java +++ b/src/main/java/i18nupdatemod/util/AssetUtil.java @@ -28,7 +28,6 @@ public class AssetUtil { static { // 镜像地址可以改成服务器下发 MIRRORS = new ArrayList<>(); - // MIRRORS.add("http://localhost:8080/"); MIRRORS.add("https://raw.githubusercontent.com/"); // 此镜像源维护者:502y MIRRORS.add("http://8.137.167.65:64684/");