Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 35 additions & 2 deletions app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,7 @@ private static File getGameDir() {

/**
* Searches for mod in mods directory of current selected profile
* Not case-sensitive
* @param filenames Filename(s) of the .jar mod(s)
* @return Whether or not the .jar is found
*/
Expand All @@ -281,7 +282,7 @@ public static boolean hasMods(String... filenames) {
if (modFiles == null) return false;
for (File file : modFiles) {
for (String filename : filenames)
if (file.getName().contains(filename)) return true;
if (file.getName().toLowerCase().contains(filename.toLowerCase())) return true;
}
return false;
}
Expand Down Expand Up @@ -359,10 +360,12 @@ private static boolean affectedByRenderDistanceIssue() {
return info.isAdreno() && info.glesMajorVersion >= 3;
}

private static String[] sodiumMods = {"sodium", "embeddium", "rubidium", "xenon"};

private static boolean affectedByLTWRenderDistanceIssue() {
if(!"opengles3_ltw".equals(Tools.LOCAL_RENDERER)) return false;
if(!affectedByRenderDistanceIssue()) return false;
if(hasMods("sodium", "embeddium", "rubidium")) return false;
if(hasMods(sodiumMods)) return false;

int renderDistance;
try {
Expand Down Expand Up @@ -471,7 +474,37 @@ public static void launchMinecraft(final AppCompatActivity activity, MinecraftAc
javaArgList.add("-Dimgui.library.name=imgui-java");
// We use an abomination to support all DH versions with a single library.
javaArgList.add("-DZstdNativePath="+Tools.NATIVE_LIB_DIR+"/libzstd-jni-1.5.7-6-dhcompat.so");
// We only ever reach this point when user has already used the force run switch
boolean hasSodiumMod = false;
for (String modName : sodiumMods) {
if (hasMods(sodiumMods)) {
hasSodiumMod = true;
File mixinPropertiesConfigFile = new File(getGameDir(), "config/" + modName + "-mixins.properties");
// Write mixin configs to somewhat help stability. We don't want more people complaining.
String[] propertiesToAdd = {
"mixin.features.buffer_builder.intrinsics=false",
"mixin.features.chunk_rendering=false"
};
List<String> mixinPropertiesConfigStrings = null;
try {
mixinPropertiesConfigStrings = org.apache.commons.io.FileUtils.readLines(mixinPropertiesConfigFile, "UTF-8");
} catch (IOException ignored) {}
if (mixinPropertiesConfigStrings == null) {
mixinPropertiesConfigStrings = new ArrayList<>();
}
for (String newLine : propertiesToAdd) {
if (!mixinPropertiesConfigStrings.contains(newLine)) {
mixinPropertiesConfigStrings.add(newLine);
}
}
try {
org.apache.commons.io.FileUtils.writeLines(mixinPropertiesConfigFile, mixinPropertiesConfigStrings);
} catch (IOException ignored) {} // If we can't write it, we tried our best.

}
}
// We use a janky lwjgl setup. We don't want more people complaining it crashes.
if (hasSodiumMod) javaArgList.add("-Dsodium.checks.issue2561=false");
javaArgList.add(versionInfo.mainClass);
javaArgList.addAll(Arrays.asList(launchArgs));
// ctx.appendlnToLog("full args: "+javaArgList.toString());
Expand Down
Loading