Skip to content

Commit c5c2974

Browse files
committed
Fixes, prevent removing core mods
1 parent f3fc009 commit c5c2974

5 files changed

Lines changed: 23 additions & 14 deletions

File tree

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ dependencies {
4444

4545
dependencies {
4646
implementation("org.jetbrains:annotations:24.0.1")
47-
implementation("com.google.code.gson:gson:2.10.1")
47+
implementation("com.google.code.gson:gson:2.12.1")
4848
implementation("org.json:json:20220924")
4949
implementation("commons-io:commons-io:2.13.0")
5050
implementation("commons-codec:commons-codec:1.15")
5151
implementation("androidx.annotation:annotation:1.7.1")
5252
implementation("androidx.core:core:1.13.1")
53-
implementation("com.microsoft.azure:msal4j:1.14.0")
53+
implementation("com.microsoft.azure:msal4j:1.17.2")
5454
implementation("com.github.Mathias-Boulay:android_gamepad_remapper:2.0.3")
5555
implementation("blank:unity-classes")
5656
}

src/main/java/pojlib/API.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,6 @@ public static boolean deleteInstance(MinecraftInstances instances, MinecraftInst
138138
* @throws IOException Throws if download of library or asset fails
139139
*/
140140
public static MinecraftInstances.Instance createNewInstance(Activity activity, MinecraftInstances instances, String instanceName, boolean useDefaultMods, String minecraftVersion, String modLoader, String imageURL) throws IOException {
141-
finishedDownloading = false;
142141
return InstanceHandler.create(activity, instances, instanceName, Constants.USER_HOME, useDefaultMods, minecraftVersion, modLoader, imageURL, null);
143142
}
144143

@@ -152,7 +151,6 @@ public static MinecraftInstances.Instance createNewInstance(Activity activity, M
152151
* @throws IOException Throws if download of library or asset fails
153152
*/
154153
public static MinecraftInstances.Instance createNewInstance(Activity activity, MinecraftInstances instances, String instanceName, String imageURL, String modLoader, String mrpackFile) throws IOException {
155-
finishedDownloading = false;
156154
if(ignoreInstanceName) {
157155
return InstanceHandler.create(activity, instances, instanceName, Constants.USER_HOME, modLoader, mrpackFile, imageURL);
158156
} else if (instanceName.contains("/") || instanceName.contains("!")) {

src/main/java/pojlib/InstanceHandler.java

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
import java.nio.file.StandardCopyOption;
1515
import java.nio.file.attribute.BasicFileAttributes;
1616
import java.util.ArrayList;
17+
import java.util.Arrays;
1718
import java.util.Locale;
19+
import java.util.Optional;
1820
import java.util.function.Consumer;
1921

2022
import pojlib.account.MinecraftAccount;
@@ -27,6 +29,7 @@
2729
import pojlib.util.FileUtil;
2830
import pojlib.util.VLoader;
2931
import pojlib.util.json.MinecraftInstances;
32+
import pojlib.util.json.ModsJson;
3033
import pojlib.util.json.ProjectInfo;
3134
import pojlib.util.GsonUtils;
3235
import pojlib.util.JREUtils;
@@ -38,6 +41,7 @@ public class InstanceHandler {
3841
public static final String DEV_MODS = "https://raw.githubusercontent.com/QuestCraftPlusPlus/Pojlib/refs/heads/QuestCraft-6.0.0/devmods.json";
3942

4043
public static MinecraftInstances.Instance create(Activity activity, MinecraftInstances instances, String instanceName, String userHome, String modLoader, String mrpackFilePath, String imageURL) {
44+
API.finishedDownloading = false;
4145
File mrpackJson = new File(Constants.USER_HOME + "/instances/" + instanceName.toLowerCase(Locale.ROOT).replaceAll(" ", "_") + "/setup/modrinth.index.json");
4246

4347
mrpackJson.getParentFile().mkdirs();
@@ -245,18 +249,25 @@ public static boolean hasExtraProject(MinecraftInstances.Instance instance, Stri
245249
}
246250

247251
public static boolean removeExtraProject(MinecraftInstances instances, MinecraftInstances.Instance instance, String name) {
248-
ProjectInfo oldInfo = null;
249-
for(ProjectInfo info : instance.extProjects) {
250-
if(info.slug.equalsIgnoreCase(name)) {
251-
oldInfo = info;
252-
break;
253-
}
254-
}
252+
ProjectInfo oldInfo = Arrays.stream(instance.extProjects).filter(info -> info.slug.equalsIgnoreCase(name)).findFirst().orElse(null);
255253

256254
if(oldInfo != null) {
257255
boolean isMod = oldInfo.type.equals("mod");
258256
boolean legacyMod = oldInfo.fileName == null;
259257

258+
// Check if its a coremod
259+
ModsJson oldMods = instance.parseModsJson(Constants.USER_HOME + "/mods.json");
260+
if(oldMods != null) {
261+
Optional<ModsJson.Version> ver = Arrays.stream(oldMods.versions).filter((v) -> !v.name.equals(instance.versionName)).findFirst();
262+
if(ver.isPresent()) {
263+
ModsJson.Version version = ver.get();
264+
Optional<ProjectInfo> info = Arrays.stream(version.coreMods).filter((mod) -> !mod.slug.equals(oldInfo.slug)).findFirst();
265+
if(info.isPresent()) {
266+
return false;
267+
}
268+
}
269+
}
270+
260271
// Delete the mod
261272
File modFile = new File(instance.gameDir + (isMod ? "/mods/" : "/resourcepacks/") + (legacyMod ? oldInfo.slug : oldInfo.fileName) + (isMod ? ".jar" : ".zip"));
262273
modFile.delete();
@@ -265,9 +276,10 @@ public static boolean removeExtraProject(MinecraftInstances instances, Minecraft
265276
mods.remove(oldInfo);
266277
instance.extProjects = mods.toArray(mods.toArray(new ProjectInfo[0]));
267278
GsonUtils.objectToJsonFile(Constants.USER_HOME + "/instances.json", instances);
279+
return true;
268280
}
269281

270-
return oldInfo != null;
282+
return false;
271283
}
272284

273285
// Return true if instance was deleted

src/main/java/pojlib/util/download/DownloadUtils.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ public static void downloadFile(String url, File out, DownloadManager downloadMa
5353
tempOut.renameTo(out);
5454
bos2.close();
5555
if (tempOut.exists()) tempOut.delete();
56-
API.finishedDownloading = true;
5756
} catch (IOException th2) {
5857
if (tempOut.exists()) tempOut.delete();
5958
API.finishedDownloading = true;

src/main/java/pojlib/util/json/MinecraftInstances.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public ProjectInfo[] toArray() {
100100
return extProjects;
101101
}
102102

103-
private ModsJson parseModsJson(String jsonPath) {
103+
public ModsJson parseModsJson(String jsonPath) {
104104
return GsonUtils.jsonFileToObject(jsonPath, ModsJson.class);
105105
}
106106

0 commit comments

Comments
 (0)