Skip to content

Commit fe285c8

Browse files
committed
Merge remote-tracking branch 'origin/QuestCraft-6.0.0' into QuestCraft-6.0.0
2 parents f392931 + e53bbfd commit fe285c8

11 files changed

Lines changed: 121 additions & 48 deletions

File tree

.github/workflows/gradle.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,6 @@ jobs:
2929
with:
3030
java-version: '11'
3131
distribution: 'temurin'
32-
- uses: nttld/setup-ndk@v1
33-
with:
34-
ndk-version: r21d
35-
local-cache: true
36-
link-to-sdk: true
3732
- uses: nttld/setup-ndk@v1
3833
with:
3934
ndk-version: r26b

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
}

mods.json

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
"coreMods": [
66
{
77
"slug": "Vivecraft",
8-
"version": "1.2.4.1",
9-
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.21.4-1.2.1-openxr/vivecraft-1.21.4-1.2.4.1-fabric.jar"
8+
"version": "1.2.6",
9+
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.21.4-1.2.1-openxr/vivecraft-1.21.4-1.2.6-fabric.jar"
1010
},
1111
{
1212
"slug": "Fabric-API",
@@ -77,8 +77,8 @@
7777
"coreMods": [
7878
{
7979
"slug": "Vivecraft",
80-
"version": "1.2.5",
81-
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.21.1-1.2.1-openxr/vivecraft-1.21.1-1.2.5-fabric.jar"
80+
"version": "1.2.6",
81+
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.21.1-1.2.1-openxr/vivecraft-1.21.1-1.2.6-fabric.jar"
8282
},
8383
{
8484
"slug": "Fabric-API",
@@ -149,8 +149,8 @@
149149
"coreMods": [
150150
{
151151
"slug": "Vivecraft",
152-
"version": "1.2.5",
153-
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.20.6-1.2.1-openxr/vivecraft-1.20.6-1.2.5-fabric.jar"
152+
"version": "1.2.6",
153+
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.20.6-1.2.1-openxr/vivecraft-1.20.6-1.2.6-fabric.jar"
154154
},
155155
{
156156
"slug": "Fabric-API",
@@ -201,8 +201,8 @@
201201
"coreMods": [
202202
{
203203
"slug": "Vivecraft",
204-
"version": "1.2.5",
205-
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.20.4-1.2.1-openxr/vivecraft-1.20.4-1.2.5-fabric.jar"
204+
"version": "1.2.6",
205+
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.20.4-1.2.1-openxr/vivecraft-1.20.4-1.2.6-fabric.jar"
206206
},
207207
{
208208
"slug": "Fabric-API",
@@ -278,8 +278,8 @@
278278
"coreMods": [
279279
{
280280
"slug": "Vivecraft",
281-
"version": "1.2.5",
282-
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.20.1-1.2.1-openxr/vivecraft-1.20.1-1.2.5-fabric.jar"
281+
"version": "1.2.6",
282+
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.20.1-1.2.1-openxr/vivecraft-1.20.1-1.2.6-fabric.jar"
283283
},
284284
{
285285
"slug": "Fabric-API",
@@ -345,8 +345,8 @@
345345
"coreMods": [
346346
{
347347
"slug": "Vivecraft",
348-
"version": "1.2.5",
349-
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.19.4-1.2.1-openxr/vivecraft-1.19.4-1.2.5-fabric.jar"
348+
"version": "1.2.6",
349+
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.19.4-1.2.1-openxr/vivecraft-1.19.4-1.2.6-fabric.jar"
350350
},
351351
{
352352
"slug": "Fabric-API",
@@ -432,8 +432,8 @@
432432
"coreMods": [
433433
{
434434
"slug": "Vivecraft",
435-
"version": "1.2.5",
436-
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.19.2-1.2.1-openxr/vivecraft-1.19.2-1.2.5-fabric.jar"
435+
"version": "1.2.6",
436+
"download_link": "https://github.com/QuestCraftPlusPlus/VivecraftMod/releases/download/1.19.2-1.2.1-openxr/vivecraft-1.19.2-1.2.6-fabric.jar"
437437
},
438438
{
439439
"slug": "Fabric-API",
@@ -505,4 +505,4 @@
505505
]
506506
}
507507
]
508-
}
508+
}

src/main/assets/hacks/resolv.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
nameserver 8.8.8.8
2+
nameserver 8.8.4.4

src/main/java/pojlib/API.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class API {
4646
public static MinecraftAccount currentAcc;
4747
public static boolean isDemoMode;
4848
public static MinecraftInstances.Instance currentInstance;
49-
public static boolean hasWifi;
49+
private static boolean hasWifi;
5050
public static boolean advancedDebugger;
5151
public static boolean gameReady = false;
5252

@@ -90,8 +90,8 @@ public static boolean removeExtraProject(MinecraftInstances instances, Minecraft
9090
return InstanceHandler.removeExtraProject(instances, instance, name);
9191
}
9292

93-
public static String[] getQCSupportedVersions() {
94-
return APIHandler.getQCSupportedVersions();
93+
public static String[] getQCSupportedVersions(Activity ctx) {
94+
return APIHandler.getQCSupportedVersions(ctx);
9595
}
9696

9797
/**
@@ -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("!")) {
@@ -170,7 +168,7 @@ public static MinecraftInstances.Instance createNewInstance(Activity activity, M
170168
public static void prelaunch(Activity activity, MinecraftInstances instances, MinecraftInstances.Instance instance) {
171169
gameReady = false;
172170
instance.updateMods(instances);
173-
if (hasWifi) {
171+
if (hasConnection(activity)) {
174172
try {
175173
JREUtils.prelaunchCheck(activity, instance);
176174
} catch (IOException e) {
@@ -233,7 +231,7 @@ public static void login(Activity activity, @Nullable String accountUUID)
233231
}
234232

235233
MinecraftAccount acc = MinecraftAccount.load(activity.getFilesDir() + "/accounts", accountUUID);
236-
if(acc != null && (acc.expiresOn >= System.currentTimeMillis() || !hasWifi || acc.isDemoMode)) {
234+
if(acc != null && (acc.expiresOn >= System.currentTimeMillis() || !hasConnection(activity) || acc.isDemoMode)) {
237235
currentAcc = acc;
238236
API.profileImage = MinecraftAccount.getSkinFaceUrl(API.currentAcc);
239237
API.profileName = API.currentAcc.username;
@@ -260,7 +258,7 @@ public static void login(Activity activity, @Nullable String accountUUID)
260258
* @param activity activity object
261259
* @return true if the device has a valid wifi connection
262260
*/
263-
public static boolean hasConnection(Activity activity) {
261+
public static boolean hasConnection(Context activity) {
264262
boolean hasNetwork = false;
265263
ConnectivityManager connManager = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
266264
NetworkCapabilities capabilities = connManager.getNetworkCapabilities(connManager.getActiveNetwork());

src/main/java/pojlib/APIHandler.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package pojlib;
22

3+
import android.content.Context;
4+
35
import com.google.gson.Gson;
46

57
import java.io.BufferedReader;
@@ -110,15 +112,26 @@ public static <T> T postFullUrl(String url, HashMap<String, Object> query, T bod
110112

111113
public static final String SUPPORTED_VERSIONS = "https://raw.githubusercontent.com/QuestCraftPlusPlus/Pojlib/refs/heads/QuestCraft-6.0.0/supportedVersions.json";
112114

113-
public static String[] getQCSupportedVersions() {
115+
public static String[] getQCSupportedVersions(Context ctx) {
114116
File versionsJson = new File(Constants.USER_HOME + "/supportedVersions.json");
115-
try {
116-
DownloadUtils.downloadFile(SUPPORTED_VERSIONS, versionsJson, new DownloadManager(1));
117-
} catch (IOException e) {
118-
Logger.getInstance().appendToLog("Error while grabbing supported versions!\n" + e);
117+
if(API.hasConnection(ctx)) {
118+
try {
119+
DownloadUtils.downloadFile(SUPPORTED_VERSIONS, versionsJson, new DownloadManager(1));
120+
} catch (IOException e) {
121+
Logger.getInstance().appendToLog("Error while grabbing supported versions!\n" + e);
122+
}
123+
} else {
124+
Logger.getInstance().appendToLog("Skipping supported versions download.");
125+
}
126+
127+
SupportedVersions versions = GsonUtils.jsonFileToObject(versionsJson.getAbsolutePath(), SupportedVersions.class);
128+
if(versions == null) {
129+
return new String[] {
130+
"1.21.4"
131+
};
119132
}
120133

121-
return GsonUtils.jsonFileToObject(versionsJson.getAbsolutePath(), SupportedVersions.class).supportedVersions;
134+
return versions.supportedVersions;
122135
}
123136

124137
public static class SupportedVersions {

src/main/java/pojlib/InstanceHandler.java

Lines changed: 31 additions & 7 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();
@@ -65,6 +69,10 @@ public static MinecraftInstances.Instance create(Activity activity, MinecraftIns
6569
info.version = "1.0.0";
6670
info.download_link = file.downloads[0];
6771
info.type = "mod";
72+
if(isCoreMod(instance, info)) {
73+
continue;
74+
}
75+
6876
mods.add(info);
6977
}
7078
}
@@ -244,19 +252,34 @@ public static boolean hasExtraProject(MinecraftInstances.Instance instance, Stri
244252
return false;
245253
}
246254

247-
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;
255+
private static boolean isCoreMod(MinecraftInstances.Instance instance, ProjectInfo oldInfo) {
256+
// Check if its a coremod
257+
ModsJson oldMods = instance.parseModsJson(Constants.USER_HOME + "/mods.json");
258+
if(oldMods != null) {
259+
Optional<ModsJson.Version> ver = Arrays.stream(oldMods.versions).filter((v) -> !v.name.equals(instance.versionName)).findFirst();
260+
if(ver.isPresent()) {
261+
ModsJson.Version version = ver.get();
262+
Optional<ProjectInfo> info = Arrays.stream(version.coreMods).filter((mod) -> !mod.slug.equals(oldInfo.slug)).findFirst();
263+
if(info.isPresent()) {
264+
return true;
265+
}
253266
}
254267
}
255268

269+
return false;
270+
}
271+
272+
public static boolean removeExtraProject(MinecraftInstances instances, MinecraftInstances.Instance instance, String name) {
273+
ProjectInfo oldInfo = Arrays.stream(instance.extProjects).filter(info -> info.slug.equalsIgnoreCase(name)).findFirst().orElse(null);
274+
256275
if(oldInfo != null) {
257276
boolean isMod = oldInfo.type.equals("mod");
258277
boolean legacyMod = oldInfo.fileName == null;
259278

279+
if(isCoreMod(instance, oldInfo)) {
280+
return false;
281+
}
282+
260283
// Delete the mod
261284
File modFile = new File(instance.gameDir + (isMod ? "/mods/" : "/resourcepacks/") + (legacyMod ? oldInfo.slug : oldInfo.fileName) + (isMod ? ".jar" : ".zip"));
262285
modFile.delete();
@@ -265,9 +288,10 @@ public static boolean removeExtraProject(MinecraftInstances instances, Minecraft
265288
mods.remove(oldInfo);
266289
instance.extProjects = mods.toArray(mods.toArray(new ProjectInfo[0]));
267290
GsonUtils.objectToJsonFile(Constants.USER_HOME + "/instances.json", instances);
291+
return true;
268292
}
269293

270-
return oldInfo != null;
294+
return false;
271295
}
272296

273297
// Return true if instance was deleted

src/main/java/pojlib/install/Installer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,9 @@ public static void moveLocalAssets(Activity activity, MinecraftInstances.Instanc
176176
FileUtils.writeByteArrayToFile(new File(instance.gameDir + "/config/modernfix-mixins.properties"), FileUtil.loadFromAssetToByte(activity,"modernfix-mixins.properties"));
177177
FileUtils.writeByteArrayToFile(new File(instance.gameDir + "/options.txt"), FileUtil.loadFromAssetToByte(activity, "options.txt"));
178178
FileUtils.writeByteArrayToFile(new File(instance.gameDir + "/servers.dat"), FileUtil.loadFromAssetToByte(activity, "servers.dat"));
179-
FileUtils.writeByteArrayToFile(new File(Constants.USER_HOME + "/hacks/ResConfHack.jar"), FileUtil.loadFromAssetToByte(activity, "hacks/ResConfHack.jar"));
180179
FileUtils.writeByteArrayToFile(new File(instance.gameDir + "/config/vivecraft-client-config.json"), FileUtil.loadFromAssetToByte(activity, "vivecraft-client-config.json"));
180+
FileUtils.writeByteArrayToFile(new File(Constants.USER_HOME + "/hacks/ResConfHack.jar"), FileUtil.loadFromAssetToByte(activity, "hacks/ResConfHack.jar"));
181+
FileUtils.writeByteArrayToFile(new File(Constants.USER_HOME + "/hacks/resolv.conf"), FileUtil.loadFromAssetToByte(activity, "hacks/resolv.conf"));
181182
} catch (IOException e) {
182183
e.printStackTrace();
183184
}

0 commit comments

Comments
 (0)