From 18cf77efbefb4b93c47e3ef27e76ec5117a5f7f4 Mon Sep 17 00:00:00 2001 From: alexytomi <60690056+alexytomi@users.noreply.github.com> Date: Fri, 21 Nov 2025 21:54:54 +0800 Subject: [PATCH] add: Sodium warning Should now let sodium launch but display a warning --- .../components/lwjgl3/lwjgl-glfw-classes.jar | Bin 2941080 -> 2941085 bytes .../src/main/assets/components/lwjgl3/version | 2 +- .../main/java/net/kdt/pojavlaunch/Tools.java | 2 +- .../fragments/MainMenuFragment.java | 18 +++++- .../prefs/MathQuestionPreference.java | 61 ++++++++++++++++++ .../net/kdt/pojavlaunch/utils/JREUtils.java | 2 +- .../src/main/jni/ctxbridges/gl_bridge.c | 2 +- app_pojavlauncher/src/main/jni/egl_bridge.c | 2 +- .../src/main/res/values/strings.xml | 13 ++++ .../src/main/res/xml/pref_experimental.xml | 6 ++ .../src/main/java/org/lwjgl/glfw/GLFW.java | 8 +-- 11 files changed, 106 insertions(+), 10 deletions(-) create mode 100644 app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/MathQuestionPreference.java diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/lwjgl-glfw-classes.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/lwjgl-glfw-classes.jar index 04a1ed62be2807368ccb97379906218723533ae9..5ac149831fe659dabdb0c5e2dac68009d1e8face 100644 GIT binary patch delta 45662 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 UAqrOmAELo!qTc)^0#>Q=e{KWn-T(jq delta 45585 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 diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/version b/app_pojavlauncher/src/main/assets/components/lwjgl3/version index dbd01091b..052402241 100644 --- a/app_pojavlauncher/src/main/assets/components/lwjgl3/version +++ b/app_pojavlauncher/src/main/assets/components/lwjgl3/version @@ -1 +1 @@ -b35956195a536dfa5895ca6d40d13c718de4d7fa \ No newline at end of file +276e966873587ef19ddad2f320052b8c10ff7a77 \ No newline at end of file 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 63a7ee557..38334f6c1 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -218,7 +218,7 @@ public final class Tools { * @param gameDir current game directory * @return whether sodium or a sodium-based mod is installed */ - private static boolean hasSodium(File gameDir) { + public static boolean hasSodium(File gameDir) { File modsDir = new File(gameDir, "mods"); File[] mods = modsDir.listFiles(file -> file.isFile() && file.getName().endsWith(".jar")); if(mods == null) return false; diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java index ee59d87e4..07e24ddd8 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java @@ -1,12 +1,16 @@ package net.kdt.pojavlaunch.fragments; +import static net.kdt.pojavlaunch.Tools.dialogOnUiThread; import static net.kdt.pojavlaunch.Tools.hasNoOnlineProfileDialog; import static net.kdt.pojavlaunch.Tools.hasOnlineProfile; import static net.kdt.pojavlaunch.Tools.openPath; import static net.kdt.pojavlaunch.Tools.shareLog; +import android.content.DialogInterface; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; +import android.os.CountDownTimer; import android.view.View; import android.widget.Button; import android.widget.ImageButton; @@ -14,17 +18,20 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import com.kdt.mcgui.mcVersionSpinner; import net.kdt.pojavlaunch.CustomControlsActivity; +import net.kdt.pojavlaunch.PojavProfile; import net.kdt.pojavlaunch.R; import net.kdt.pojavlaunch.Tools; import net.kdt.pojavlaunch.extra.ExtraConstants; import net.kdt.pojavlaunch.extra.ExtraCore; import net.kdt.pojavlaunch.prefs.LauncherPreferences; import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper; +import net.kdt.pojavlaunch.value.MinecraftAccount; import net.kdt.pojavlaunch.value.launcherprofiles.LauncherProfiles; import net.kdt.pojavlaunch.value.launcherprofiles.MinecraftProfile; @@ -64,7 +71,16 @@ public class MainMenuFragment extends Fragment { } else mInstallJarButton.setOnClickListener(v -> hasNoOnlineProfileDialog(requireActivity())); mEditProfileButton.setOnClickListener(v -> mVersionSpinner.openProfileEditor(requireActivity())); - mPlayButton.setOnClickListener(v -> ExtraCore.setValue(ExtraConstants.LAUNCH_GAME, true)); + mPlayButton.setOnClickListener(v -> { + MinecraftProfile minecraftProfile = LauncherProfiles.getCurrentProfile(); + File gameDir = Tools.getGameDirPath(minecraftProfile); + if (Tools.hasSodium(gameDir) && !(LauncherPreferences.DEFAULT_PREF.getBoolean("sodium_override", false))) { + Tools.dialogOnUiThread(requireActivity(), + R.string.sodium_warning_title, R.string.sodium_warning_message); + } else ExtraCore.setValue(ExtraConstants.LAUNCH_GAME, true); + + + }); mShareLogsButton.setOnClickListener((v) -> shareLog(requireContext())); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/MathQuestionPreference.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/MathQuestionPreference.java new file mode 100644 index 000000000..187dd2bc4 --- /dev/null +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/MathQuestionPreference.java @@ -0,0 +1,61 @@ +package net.kdt.pojavlaunch.prefs; + +import static net.kdt.pojavlaunch.Tools.dialog; + +import android.content.Context; +import android.text.InputType; +import android.util.AttributeSet; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.preference.SwitchPreferenceCompat; + +import net.kdt.pojavlaunch.R; + +import java.util.Random; + +public class MathQuestionPreference extends SwitchPreferenceCompat { + public MathQuestionPreference(@NonNull Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void onClick() { + if (isChecked()) { // Don't ask for braincells if turning off + super.onClick(); + return; + } + Random random = new Random(); + int a = random.nextInt(10) + 1; + int b = random.nextInt(10) + 1; + int c = random.nextInt(10) + 1; + int d = random.nextInt(10) + 1; + int f = random.nextInt(10) + 1; + final int answer = (a * b) + c - d; + + final EditText input = new EditText(getContext()); + input.setInputType(InputType.TYPE_CLASS_NUMBER); + + new AlertDialog.Builder(getContext()) + .setTitle(R.string.sodium_math_warning_title) + .setMessage(this.getContext().getString(R.string.sodium_math_warning_message, a, b, c, d)) + .setView(input) + .setPositiveButton("OK", (dialog, which) -> { + try { + int userAnswer = Integer.parseInt(input.getText().toString()); + if (userAnswer == answer) { + super.onClick(); + } else { + dialog(getContext(), "Wrong!", "You failed the math test!"); + } + } catch (NumberFormatException e) { + Toast.makeText(getContext(), "Please enter a number.", Toast.LENGTH_SHORT).show(); + } + }) + .setNegativeButton("Cancel", null) + .show(); + } +} diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java index 4c0f4f4c5..d95268b33 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java @@ -214,7 +214,7 @@ public class JREUtils { } if(LOCAL_RENDERER != null) { - envMap.put("POJAV_RENDERER", LOCAL_RENDERER); + envMap.put("AMETHYST_RENDERER", LOCAL_RENDERER); if(LOCAL_RENDERER.equals("opengles3_ltw")) { envMap.put("LIBGL_ES", "3"); envMap.put("POJAVEXEC_EGL","libltw.so"); // Use ANGLE EGL diff --git a/app_pojavlauncher/src/main/jni/ctxbridges/gl_bridge.c b/app_pojavlauncher/src/main/jni/ctxbridges/gl_bridge.c index 0b9ad99a4..4fb9503c3 100644 --- a/app_pojavlauncher/src/main/jni/ctxbridges/gl_bridge.c +++ b/app_pojavlauncher/src/main/jni/ctxbridges/gl_bridge.c @@ -77,7 +77,7 @@ gl_render_window_t* gl_init_context(gl_render_window_t *share) { { EGLBoolean bindResult; - if (strncmp(getenv("POJAV_RENDERER"), "opengles3_desktopgl", 19) == 0) { + if (strncmp(getenv("AMETHYST_RENDERER"), "opengles3_desktopgl", 19) == 0) { printf("EGLBridge: Binding to desktop OpenGL\n"); bindResult = eglBindAPI_p(EGL_OPENGL_API); } else { diff --git a/app_pojavlauncher/src/main/jni/egl_bridge.c b/app_pojavlauncher/src/main/jni/egl_bridge.c index f4e5760ae..563436276 100644 --- a/app_pojavlauncher/src/main/jni/egl_bridge.c +++ b/app_pojavlauncher/src/main/jni/egl_bridge.c @@ -162,7 +162,7 @@ int pojavInitOpenGL() { pojav_environ->force_vsync = true; // NOTE: Override for now. - const char *renderer = getenv("POJAV_RENDERER"); + const char *renderer = getenv("AMETHYST_RENDERER"); if (strncmp("opengles", renderer, 8) == 0) { pojav_environ->config_renderer = RENDERER_GL4ES; if (!strcmp(renderer, "opengles3_desktopgl_zink_kopper")) { diff --git a/app_pojavlauncher/src/main/res/values/strings.xml b/app_pojavlauncher/src/main/res/values/strings.xml index 4c9afe5e8..b118c6a18 100644 --- a/app_pojavlauncher/src/main/res/values/strings.xml +++ b/app_pojavlauncher/src/main/res/values/strings.xml @@ -487,4 +487,17 @@ AMD FSR 1 Upscaling Auto-renderer select failed, defaulting to HolyGL4ES Kopper Zink (Vulkan) - (all versions, mid) + Sodium detected! + It appears you are using sodium, this is unsupported and may lead to graphical issues or crashes. Please remove it and all dependent mods. + Delete Sodium and Launch + Run sodium forcefully + Using sodium may cause visual bugs and crashes. You have been warned. + Sodium is not supported. No help will be given if you encounter any issues. + + Solve the math question to enable + + Sodium is unsupported, you are on your own. You have been warned.\n + Now what\'s %1$d multiplied by %2$d plus %3$d minus %4$d? + + diff --git a/app_pojavlauncher/src/main/res/xml/pref_experimental.xml b/app_pojavlauncher/src/main/res/xml/pref_experimental.xml index 4697c4b78..c3536d559 100644 --- a/app_pojavlauncher/src/main/res/xml/pref_experimental.xml +++ b/app_pojavlauncher/src/main/res/xml/pref_experimental.xml @@ -14,6 +14,12 @@ android:key="bigCoreAffinity" android:title="@string/preference_force_big_core_title" android:summary="@string/preference_force_big_core_desc" /> + \ No newline at end of file diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java index 4abc22a6f..47dde7468 100644 --- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java +++ b/jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFW.java @@ -1005,20 +1005,20 @@ public class GLFW boolean turnipLoad = System.getenv("POJAV_LOAD_TURNIP") != null && System.getenv("POJAV_LOAD_TURNIP").equals("1"); // These values can be found at headings_array.xml - if (turnipLoad && System.getenv("POJAV_RENDERER").equals("vulkan_zink")) { + if (turnipLoad && System.getenv("AMETHYST_RENDERER").equals("vulkan_zink")) { System.out.println("GLFW: Turnip+Zink detected, setting GL context to 4.6"); glMajor = 4; glMinor = 6; - } else if (System.getenv("POJAV_RENDERER").equals("opengles3_virgl")) { + } else if (System.getenv("AMETHYST_RENDERER").equals("opengles3_virgl")) { System.out.println("GLFW: virglrenderer detected, setting GL context to 4.3"); glMajor = 4; glMinor = 3; - } else if (System.getenv("POJAV_RENDERER").equals("opengles_mobileglues")) { + } else if (System.getenv("AMETHYST_RENDERER").equals("opengles_mobileglues")) { System.out.println("GLFW: MobileGlues detected, setting GL context to 4.0"); glMajor = 4; glMinor = 0; } else { - System.out.println("GLFW: " + System.getenv("POJAV_RENDERER") + " detected, defaulting GL context to 3.3"); + System.out.println("GLFW: " + System.getenv("AMETHYST_RENDERER") + " detected, defaulting GL context to 3.3"); } win.windowAttribs.put(GLFW_CONTEXT_VERSION_MAJOR, glMajor); win.windowAttribs.put(GLFW_CONTEXT_VERSION_MINOR, glMinor);