From 07876b0d0dde3f9d07c290a1bcce446b4f7e3635 Mon Sep 17 00:00:00 2001 From: alexytomi <60690056+alexytomi@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:06:57 +0800 Subject: [PATCH 1/3] fix(strings): Update Holy GL4ES string Holy GL4ES breaks on 1.21.5 due to it using glFramebuffer extensively, which GL4ES didn't like 1.21.6 doubles down on this by using UBOs which the target API of ES2.X on GL4ES cannot easily handle, so this is likely the end of things for GL4ES --- app_pojavlauncher/src/main/res/values-en-rGB/strings.xml | 2 +- app_pojavlauncher/src/main/res/values/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app_pojavlauncher/src/main/res/values-en-rGB/strings.xml b/app_pojavlauncher/src/main/res/values-en-rGB/strings.xml index 86db929bb..36dc2d752 100644 --- a/app_pojavlauncher/src/main/res/values-en-rGB/strings.xml +++ b/app_pojavlauncher/src/main/res/values-en-rGB/strings.xml @@ -46,7 +46,7 @@ JVM Launch arguments Be careful, this may make game crash if modified without knowledge. Renderer - Holy GL4ES - (all versions, fast) + Holy GL4ES - (1.21.4< only, fast) Zink (Vulkan) - (all versions, mid) Release Snapshot diff --git a/app_pojavlauncher/src/main/res/values/strings.xml b/app_pojavlauncher/src/main/res/values/strings.xml index 8ff87f43f..5b830b622 100644 --- a/app_pojavlauncher/src/main/res/values/strings.xml +++ b/app_pojavlauncher/src/main/res/values/strings.xml @@ -65,7 +65,7 @@ Extra Renderer Settings Renderer specific settings Renderer - Holy GL4ES - (all versions, fast) + Holy GL4ES - (1.21.4< only, fast) Zink (Vulkan) - (all versions, mid) MobileGlues (OpenGL ES) - (1.17+ only, fast) LTW (OpenGL ES 3) - 1.17+ only From adcd35e065464941e6904de18143448c91cf2f98 Mon Sep 17 00:00:00 2001 From: alexytomi <60690056+alexytomi@users.noreply.github.com> Date: Tue, 22 Jul 2025 20:17:17 +0800 Subject: [PATCH 2/3] add(Tools.java): Add more functions and an overload --- .../main/java/net/kdt/pojavlaunch/Tools.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java index 82d101fc9..c8268477a 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -822,6 +822,9 @@ public final class Tools { public static void dialogOnUiThread(final Activity activity, final CharSequence title, final CharSequence message) { activity.runOnUiThread(()->dialog(activity, title, message)); } + public static void dialogOnUiThread(final Activity activity, final int title, final int message) { + dialogOnUiThread(activity, activity.getString(title), activity.getString(message)); + } public static void dialog(final Context context, final CharSequence title, final CharSequence message) { new AlertDialog.Builder(context) @@ -1506,5 +1509,47 @@ public final class Tools { hasNoOnlineProfileDialog(activity, null, customTitle, customMessage); } + public static String getSelectedVanillaMcVer(){ + String selectedProfile = LauncherPreferences.DEFAULT_PREF.getString(LauncherPreferences.PREF_KEY_CURRENT_PROFILE, ""); + MinecraftProfile selected = LauncherProfiles.mainProfileJson.profiles.get(selectedProfile); + if (selected == null) { // This should NEVER happen. + throw new RuntimeException("No profile selected, how did you reach this? Go ask in the discord or github"); + } + String currentMCVersion = selected.lastVersionId; + String vanillaVersion = currentMCVersion; + File providedJsonFile = new File(Tools.DIR_HOME_VERSION + "/" + currentMCVersion + "/" + currentMCVersion + ".json"); + JMinecraftVersionList.Version providedJsonVersion = null; + try { + providedJsonVersion = Tools.GLOBAL_GSON.fromJson(Tools.read(providedJsonFile.getAbsolutePath()), JMinecraftVersionList.Version.class); + } catch (IOException e) { + throw new RuntimeException(e); + } + try { + vanillaVersion = providedJsonVersion.inheritsFrom != null ? providedJsonVersion.inheritsFrom : vanillaVersion; + } catch (NullPointerException e) { + throw new RuntimeException(e); + } + return vanillaVersion; + } + public static Integer mcVersiontoInt(String mcVersion){ + String[] sVersionArray = mcVersion.split("\\."); + String[] iVersionArray = new String[3]; + // Make sure this is actually a version string + for (int i = 0; i < iVersionArray.length; i++) { + // Ensure there's padding + sVersionArray[i] = String.format("%3s", sVersionArray[i]).replace(' ', '0'); + System.out.println(sVersionArray[i]); + // Grab only the last 3, MCJE 999.999.999 isnt coming soon anyway + sVersionArray[i] = sVersionArray[i].substring(sVersionArray[i].length() - 3); + try { + // Verify its a real deal, legit number + Integer.parseInt(sVersionArray[i]); + iVersionArray[i] = sVersionArray[i]; + } catch (NumberFormatException e) { + throw new RuntimeException("Tools(mcVersiontoInt): Invalid version string"); + } + } + return Integer.parseInt(iVersionArray[0] + iVersionArray[1] + iVersionArray[2]); + } } From 6cfb9cb18a2de13f796b41a2330d86402b95759a Mon Sep 17 00:00:00 2001 From: alexytomi <60690056+alexytomi@users.noreply.github.com> Date: Wed, 23 Jul 2025 03:02:04 +0800 Subject: [PATCH 3/3] rework(Renderer/Default): Remove "Global Default" and check based on mcver Just use profile customization. --- .../src/main/java/net/kdt/pojavlaunch/MainActivity.java | 5 ++++- .../net/kdt/pojavlaunch/prefs/LauncherPreferences.java | 2 -- .../prefs/screens/LauncherPreferenceVideoFragment.java | 6 ------ app_pojavlauncher/src/main/res/xml/pref_video.xml | 8 +------- 4 files changed, 5 insertions(+), 16 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java index f35eb39f9..5b63a8173 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -357,7 +357,10 @@ public class MainActivity extends BaseActivity implements ControlButtonMenuListe private void runCraft(String versionId, JMinecraftVersionList.Version version) throws Throwable { if(Tools.LOCAL_RENDERER == null) { - Tools.LOCAL_RENDERER = LauncherPreferences.PREF_RENDERER; + Integer iSelectedMcVer = Tools.mcVersiontoInt(Tools.getSelectedVanillaMcVer()); + if (iSelectedMcVer >= 1021005) { + Tools.LOCAL_RENDERER = "opengles_mobileglues"; + } else Tools.LOCAL_RENDERER = "opengles2"; } if(!Tools.checkRendererCompatible(this, Tools.LOCAL_RENDERER)) { Tools.RenderersList renderersList = Tools.getCompatibleRenderers(this); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java index 1b06c7542..dc4dd71ad 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java @@ -27,7 +27,6 @@ public class LauncherPreferences { public static final String PREF_KEY_SKIP_NOTIFICATION_CHECK = "skipNotificationPermissionCheck"; public static SharedPreferences DEFAULT_PREF; - public static String PREF_RENDERER = "opengles2"; public static boolean PREF_IGNORE_NOTCH = false; public static int PREF_NOTCH_SIZE = 0; @@ -79,7 +78,6 @@ public class LauncherPreferences { Tools.initStorageConstants(ctx); boolean isDevicePowerful = isDevicePowerful(ctx); - PREF_RENDERER = DEFAULT_PREF.getString("renderer", "opengles2"); PREF_BUTTONSIZE = DEFAULT_PREF.getInt("buttonscale", 100); PREF_MOUSESCALE = DEFAULT_PREF.getInt("mousescale", 100)/100f; PREF_MOUSESPEED = ((float)DEFAULT_PREF.getInt("mousespeed",100))/100f; diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceVideoFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceVideoFragment.java index 14f412e51..c17bfd417 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceVideoFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceVideoFragment.java @@ -45,12 +45,6 @@ public class LauncherPreferenceVideoFragment extends LauncherPreferenceFragment requirePreference("alternate_surface", SwitchPreferenceCompat.class).setChecked(LauncherPreferences.PREF_USE_ALTERNATE_SURFACE); requirePreference("force_vsync", SwitchPreferenceCompat.class).setChecked(LauncherPreferences.PREF_FORCE_VSYNC); - ListPreference rendererListPreference = requirePreference("renderer", - ListPreference.class); - Tools.RenderersList renderersList = Tools.getCompatibleRenderers(getContext()); - rendererListPreference.setEntries(renderersList.rendererDisplayNames); - rendererListPreference.setEntryValues(renderersList.rendererIds.toArray(new String[0])); - computeVisibility(); } diff --git a/app_pojavlauncher/src/main/res/xml/pref_video.xml b/app_pojavlauncher/src/main/res/xml/pref_video.xml index 0d96c6f61..f0dbf92b2 100644 --- a/app_pojavlauncher/src/main/res/xml/pref_video.xml +++ b/app_pojavlauncher/src/main/res/xml/pref_video.xml @@ -5,16 +5,10 @@ - -