diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/GameDownloadInfo.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/GameDownloadInfo.java index 0f0a0a157..f620a5a12 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/GameDownloadInfo.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/GameDownloadInfo.java @@ -27,7 +27,7 @@ public class GameDownloadInfo implements Cloneable { public int size; @Override - protected Object clone() { + public Object clone() { try { return super.clone(); } catch (CloneNotSupportedException ex) { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersion.java index fd7ae889b..845f593b2 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersion.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftVersion.java @@ -19,6 +19,7 @@ package org.jackhuang.hellominecraft.launcher.core.version; import java.io.File; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -49,7 +50,7 @@ public class MinecraftVersion implements Cloneable, Comparable public MinecraftVersion() { } - public MinecraftVersion(String minecraftArguments, String mainClass, String time, String id, String type, String processArguments, String releaseTime, String assets, String jar, String inheritsFrom, String runDir, int minimumLauncherVersion, List libraries, boolean hidden) { + public MinecraftVersion(String minecraftArguments, String mainClass, String time, String id, String type, String processArguments, String releaseTime, String assets, String jar, String inheritsFrom, String runDir, int minimumLauncherVersion, List libraries, boolean hidden, Map downloads, AssetIndexDownloadInfo assetIndexDownloadInfo) { this(); this.minecraftArguments = minecraftArguments; this.mainClass = mainClass; @@ -64,6 +65,10 @@ public class MinecraftVersion implements Cloneable, Comparable this.minimumLauncherVersion = minimumLauncherVersion; this.hidden = hidden; this.runDir = runDir; + if (assetIndexDownloadInfo == null) + this.assetIndex = null; + else + this.assetIndex = (AssetIndexDownloadInfo) assetIndexDownloadInfo.clone(); if (libraries == null) this.libraries = new ArrayList<>(); else { @@ -71,6 +76,13 @@ public class MinecraftVersion implements Cloneable, Comparable for (IMinecraftLibrary library : libraries) this.libraries.add((MinecraftLibrary) library.clone()); } + if (downloads == null) + this.downloads = null; + else { + this.downloads = new HashMap<>(downloads.size()); + for (Map.Entry entry : downloads.entrySet()) + this.downloads.put(entry.getKey(), (GameDownloadInfo) entry.getValue().clone()); + } } @Override @@ -108,7 +120,9 @@ public class MinecraftVersion implements Cloneable, Comparable this.assets != null ? this.assets : parent.assets, this.jar != null ? this.jar : parent.jar, null, this.runDir, parent.minimumLauncherVersion, - this.libraries != null ? ArrayUtils.merge(this.libraries, parent.libraries) : parent.libraries, this.hidden); + this.libraries != null ? ArrayUtils.merge(this.libraries, parent.libraries) : parent.libraries, this.hidden, + this.downloads != null ? this.downloads : parent.downloads, + this.assetIndex != null ? this.assetIndex : parent.assetIndex); return result; }