From e029417708e76825331e0133bd25e906eed7d89a Mon Sep 17 00:00:00 2001 From: Paint_Ninja Date: Fri, 6 Mar 2026 12:39:34 +0000 Subject: [PATCH 1/2] Simplify file cache checks Previously, it would query the FS multiple times per file on cache hit. File#length() returns 0 when it doesn't exist, so we can take advantage of that to query the FS once. --- .../net/minecraftforge/launcher/DownloadAssets.java | 10 +++++----- src/main/java/net/minecraftforge/launcher/Main.java | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/minecraftforge/launcher/DownloadAssets.java b/src/main/java/net/minecraftforge/launcher/DownloadAssets.java index b0a94d9..2bcac3c 100644 --- a/src/main/java/net/minecraftforge/launcher/DownloadAssets.java +++ b/src/main/java/net/minecraftforge/launcher/DownloadAssets.java @@ -34,9 +34,10 @@ static void download(String repo, File assetsDir, MinecraftVersion versionJson) AssetsIndex.Asset asset = entry.getValue(); String assetDest = getAssetDest(asset.hash); File file = new File(objectsDir, assetDest); - if (file.exists()) { - Main.LOGGER.debug("Considering existing file with size " + file.length() + " for " + name); - if (file.length() == asset.size) { + long fileLength = file.length(); + if (fileLength > 0) { + Main.LOGGER.debug("Considering existing file with size " + fileLength + " for " + name); + if (fileLength == asset.size) { Main.LOGGER.debug("Size check succeeded. Skipping."); continue; } @@ -64,9 +65,8 @@ private static String getAssetDest(String hash) { private static File downloadIndex(MinecraftVersion versionJson, File assetsDir) { File index = new File(assetsDir, "indexes/" + versionJson.assetIndex.id + ".json"); - if (index.exists() && index.length() == versionJson.assetIndex.size) { + if (index.length() == versionJson.assetIndex.size) return index; - } if (!index.getParentFile().getAbsoluteFile().exists() && !index.getParentFile().getAbsoluteFile().mkdirs()) throw new IllegalArgumentException("Failed to create index directory: " + index.getParentFile()); diff --git a/src/main/java/net/minecraftforge/launcher/Main.java b/src/main/java/net/minecraftforge/launcher/Main.java index 45cef0c..105c856 100644 --- a/src/main/java/net/minecraftforge/launcher/Main.java +++ b/src/main/java/net/minecraftforge/launcher/Main.java @@ -161,7 +161,7 @@ private SplitArgs(String[] args) { // we're looking for the first "--" int splitIdx = -1; for (int i = 0; i < args.length; i++) { - if (args[i].equals("--")) { + if ("--".equals(args[i])) { splitIdx = i; break; } From 92dd5fea3da00ebd3b9564513bd5e34835313df1 Mon Sep 17 00:00:00 2001 From: Paint_Ninja Date: Fri, 6 Mar 2026 14:28:46 +0000 Subject: [PATCH 2/2] Use `!=` instead of `>` --- src/main/java/net/minecraftforge/launcher/DownloadAssets.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/minecraftforge/launcher/DownloadAssets.java b/src/main/java/net/minecraftforge/launcher/DownloadAssets.java index 2bcac3c..4bcff2b 100644 --- a/src/main/java/net/minecraftforge/launcher/DownloadAssets.java +++ b/src/main/java/net/minecraftforge/launcher/DownloadAssets.java @@ -35,7 +35,7 @@ static void download(String repo, File assetsDir, MinecraftVersion versionJson) String assetDest = getAssetDest(asset.hash); File file = new File(objectsDir, assetDest); long fileLength = file.length(); - if (fileLength > 0) { + if (fileLength != 0) { Main.LOGGER.debug("Considering existing file with size " + fileLength + " for " + name); if (fileLength == asset.size) { Main.LOGGER.debug("Size check succeeded. Skipping.");