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/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]); + } } 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/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 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 @@ - -