diff --git a/.gitignore b/.gitignore index 03d54d2285..2b4183e14d 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ app_pojavlauncher/.cxx/ /jre_lwjgl3glfw/gradle/ /jre_lwjgl3glfw/**/build/ /jre_lwjgl3glfw/**/.gradle/ +/app_pojavlauncher/curseforge_key.txt diff --git a/app_pojavlauncher/build.gradle b/app_pojavlauncher/build.gradle index 7d9a5eeddc..681edba7ff 100644 --- a/app_pojavlauncher/build.gradle +++ b/app_pojavlauncher/build.gradle @@ -7,7 +7,7 @@ static def getDate() { return new Date().format('yyyyMMdd') } def getVersionName = { // Get the last version tag, as well as the short head of the last commit ByteArrayOutputStream TAG = new ByteArrayOutputStream() - String semVer = "1.1.4" + String semVer = "1.1.5" // Used by the fallback for github actions ByteArrayOutputStream TAG_PART_COMMIT = new ByteArrayOutputStream() String TAG_STRING @@ -54,7 +54,7 @@ def getVersionName = { def getCFApiKey = { String key = System.getenv("CURSEFORGE_API_KEY"); if(key != null) return key; - File curseforgeKeyFile = new File("./curseforge_key.txt"); + File curseforgeKeyFile = new File("$projectDir/curseforge_key.txt"); if(curseforgeKeyFile.canRead() && curseforgeKeyFile.isFile()) { return curseforgeKeyFile.text; } diff --git a/app_pojavlauncher/libs/MobileGlues-release.aar b/app_pojavlauncher/libs/MobileGlues-release.aar index 070161c9c7..eb09f3666c 100644 Binary files a/app_pojavlauncher/libs/MobileGlues-release.aar and b/app_pojavlauncher/libs/MobileGlues-release.aar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-3.3.3-merged-modules.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-3.3.3-merged-modules.jar index 19a7ba4c58..a2b03a8b29 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-3.3.3-merged-modules.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-3.3.3-merged-modules.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-freetype.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-freetype.jar index 0e1a853c46..45670a88a2 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-freetype.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-freetype.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-lwjglx.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-lwjglx.jar index ca4e20fa27..41ccde77a6 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-lwjglx.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-lwjglx.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-nanovg.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-nanovg.jar index c7738efa04..de51565ac8 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-nanovg.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-nanovg.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-openal.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-openal.jar index 0033b80618..c280f9c220 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-openal.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-openal.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-shaderc.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-shaderc.jar index b12af561d1..42c12433d5 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-shaderc.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-shaderc.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-spvc.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-spvc.jar index 28df172fce..8c71286554 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-spvc.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-spvc.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-stb.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-stb.jar index 7b28373830..43799d96ce 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-stb.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-stb.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-tinyfd.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-tinyfd.jar index c8e7df3459..7c5a5397fb 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-tinyfd.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-tinyfd.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-vma.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-vma.jar index 98049ba3ac..5468a5206c 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-vma.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-vma.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-vulkan.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-vulkan.jar index 8e47fa2d1a..ee0718840c 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-vulkan.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl-vulkan.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl.jar index f5a332fa98..9c9e0632f6 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/lwjgl.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/version b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/version index 2611f98b0c..50873ad458 100644 --- a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/version +++ b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.3.3/version @@ -1 +1 @@ -d562b83d28c54d14bbb2f0366ed428945100310e \ No newline at end of file +7e958ece157c2208c2a8c715a4f92b684b112cfa \ No newline at end of file diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-3.4.1-merged-modules.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-3.4.1-merged-modules.jar index 3dab4bc2ed..badf649cc7 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-3.4.1-merged-modules.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-3.4.1-merged-modules.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-freetype.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-freetype.jar index cd60300015..f77201aade 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-freetype.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-freetype.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-lwjglx.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-lwjglx.jar index b6df6fe3bf..b25b6a467a 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-lwjglx.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-lwjglx.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-nanovg.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-nanovg.jar index 6522ec97d5..21c50ae2d2 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-nanovg.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-nanovg.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-openal.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-openal.jar index e484115657..477fb455be 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-openal.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-openal.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-shaderc.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-shaderc.jar index 9587cac93e..1b7a66f7d8 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-shaderc.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-shaderc.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-spvc.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-spvc.jar index 4aeae7e6d4..0a859695cb 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-spvc.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-spvc.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-stb.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-stb.jar index b896dd03b7..db56a1b5d1 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-stb.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-stb.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-tinyfd.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-tinyfd.jar index 59042e6f11..4405166471 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-tinyfd.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-tinyfd.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-vma.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-vma.jar index 958b9c5b22..27f967b74a 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-vma.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-vma.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-vulkan.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-vulkan.jar index 806b62ca47..4b5bbde662 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-vulkan.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl-vulkan.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl.jar index 1f746784c5..632f219285 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/lwjgl.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/version b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/version index 95678ab8e8..a4cb3f363c 100644 --- a/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/version +++ b/app_pojavlauncher/src/main/assets/components/lwjgl3/3.4.1/version @@ -1 +1 @@ -3999dc44bce7e9d269e034e79c7e430f88a50f3e \ No newline at end of file +80680c59be7562f6efefb301122e421068d6c652 \ No newline at end of file diff --git a/app_pojavlauncher/src/main/assets/components/methods_injector_agent/methods_injector_agent.jar b/app_pojavlauncher/src/main/assets/components/methods_injector_agent/methods_injector_agent.jar index 9a000e6e74..fc0e4a46eb 100644 Binary files a/app_pojavlauncher/src/main/assets/components/methods_injector_agent/methods_injector_agent.jar and b/app_pojavlauncher/src/main/assets/components/methods_injector_agent/methods_injector_agent.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/methods_injector_agent/version b/app_pojavlauncher/src/main/assets/components/methods_injector_agent/version index bb8430ced3..6dd6563610 100644 --- a/app_pojavlauncher/src/main/assets/components/methods_injector_agent/version +++ b/app_pojavlauncher/src/main/assets/components/methods_injector_agent/version @@ -1 +1 @@ -8fc4f7410f7ff1ebea0d604f69d13531814650ca \ No newline at end of file +2be860186e97caa614b289022a73b9774adcb85b \ No newline at end of file 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 15bf980006..996edf58a8 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -363,6 +363,7 @@ public void onConfigurationChanged(@NonNull Configuration newConfig) { mControlLayout.requestLayout(); mControlLayout.post(()->{ // Child of mControlLayout, so refreshing size here is correct + Tools.setFullscreen(this, setFullscreen()); minecraftGLView.refreshSize(); Tools.updateWindowSize(this); mControlLayout.refreshControlButtonPositions(); @@ -418,7 +419,8 @@ private void runCraft(String versionId, JMinecraftVersionList.Version version) t } catch (RuntimeException ignored){ assetVersion = "legacy"; } // If this fails.. oh well. - + + // FIXME: Automatic detection should be based on provided hint GLFW_CONTEXT_VERSION_MAJOR and GLFW_CONTEXT_VERSION_MINOR // Autoselect renderer if (Tools.LOCAL_RENDERER == null) { // Preferably we could detect when it is modded and swap to zink however that would also @@ -426,11 +428,13 @@ private void runCraft(String versionId, JMinecraftVersionList.Version version) t // experience for no reason. We will compromise with just having users do it themselves. Tools.LOCAL_RENDERER = "opengles2"; // MobileGlues becomes available post 1.17. It has superior compatibility with mods - // while having fairly similar performance performance compared to GL4ES-based forks. + // while having fairly similar performance compared to GL4ES-based forks. if(assetVersion.matches("\\d+") || // Should match all digits, which is the modern assetVersioning "1.17".equals(assetVersion) || "1.18".equals(assetVersion) || - "1.19".equals(assetVersion)) Tools.LOCAL_RENDERER = "opengles_mobileglues"; + "1.19".equals(assetVersion) || + // Angelica gives us GL3.3core on 1.7.10, it's a unique case. + hasMods("angelica")) Tools.LOCAL_RENDERER = "opengles_mobileglues"; } if(!Tools.checkRendererCompatible(this, Tools.LOCAL_RENDERER)) { Tools.RenderersList renderersList = Tools.getCompatibleRenderers(this); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java index 22c343772d..022b32690a 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java @@ -147,7 +147,15 @@ public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, } @Override - public void surfaceDestroyed(@NonNull SurfaceHolder holder) {} + public void surfaceDestroyed(@NonNull SurfaceHolder holder) { + /* + Surface recreation in SurfaceView happens very often. When tabbing back in from + out, when minimizing floating window, when turning into floating window, etc. + Whenever the surface isn't in view, it is destroyed. When going into floating + window, it appears to automatically release the associated ANativeWindow. This + can cause a crash if not handled. + */ + } }); ((ViewGroup)getParent()).addView(surfaceView); @@ -178,6 +186,11 @@ public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surface, int wid @Override public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surface) { + /* + Surface recreation in TextureView can only really happen once, when turning + into a floating window. Subsequent turns to floating window no longer trigger + recreation. Tabbing out and in does not trigger recreation. + */ return true; } 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 72e6f28cc8..8732e69df1 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -696,21 +696,44 @@ public static void getCacioJavaArgs(List javaArgList, boolean isJava8, A public static String[] getMinecraftJVMArgs(String versionName, File gameDir) { JMinecraftVersionList.Version versionInfo = Tools.getVersionInfo(versionName, true); - // Parse Forge 1.17+ additional JVM Arguments - if (versionInfo.inheritsFrom == null || versionInfo.arguments == null || versionInfo.arguments.jvm == null) { - return new String[0]; - } Map varArgMap = new ArrayMap<>(); varArgMap.put("classpath_separator", ":"); varArgMap.put("library_directory", DIR_HOME_LIBRARY); varArgMap.put("version_name", versionInfo.id); - varArgMap.put("natives_directory", Tools.NATIVE_LIB_DIR); + varArgMap.put("natives_directory", Tools.DIR_CACHE.getAbsolutePath()); List minecraftArgs = new ArrayList<>(); - if (versionInfo.arguments != null) { + if (versionInfo.arguments.jvm != null) { for (Object arg : versionInfo.arguments.jvm) { if (arg instanceof String) { + // These are defined later on + if (((String) arg).contains("java.library.path")) { + continue; + } + if (arg.equals("-cp")) { + continue; + } + if (arg.equals("${classpath}")){ + continue; + } + // Should fix Forge 1.17.1-37.0.12 and older from crashing + // Fixed in forge on https://github.com/MinecraftForge/MinecraftForge/pull/7919 + // Released as Forge 1.17.1-37.0.13 in https://maven.minecraftforge.net/net/minecraftforge/forge/1.17.1-37.0.13/forge-1.17.1-37.0.13-changelog.txt + // yes this duplicates it, it's fine. + // FIXME: Workaround old bootstraplauncher <0.1.17 buggy behaviour. See FCL workaround + // https://github.com/FCL-Team/FoldCraftLauncher/blob/00e96bcf8ddc8a550e9aba6091a73d5bee973b54/FCLCore/src/main/java/com/tungsten/fclcore/download/MaintainTask.java#L198-L200 + if (((String) arg).startsWith("-DignoreList=")){ + minecraftArgs.add(arg+",${version_name}.jar"); + continue; + } + + // TODO: Implement adding launcher brand and version + if (((String) arg).contains("minecraft.launcher.brand") || + ((String) arg).contains("minecraft.launcher.version")) { + continue; + } + minecraftArgs.add((String) arg); } //TODO: implement (?maybe?) } @@ -800,7 +823,7 @@ public static String artifactToPath(DependentLibrary library) { library.downloads.artifact.path != null) return library.downloads.artifact.path; String[] libInfos = library.name.split(":"); - return libInfos[0].replaceAll("\\.", "/") + "/" + libInfos[1] + "/" + libInfos[2] + "/" + libInfos[1] + "-" + libInfos[2] + ".jar"; + return libInfos[0].replaceAll("\\.", "/") + "/" + libInfos[1] + "/" + libInfos[2] + "/" + libInfos[1] + "-" + libInfos[2] + (libInfos.length == 4 ? "-" + libInfos[3] : "") + ".jar"; } private static String getLibClasspath(JMinecraftVersionList.Version info){ @@ -823,9 +846,13 @@ public static String generateLaunchClasspath(JMinecraftVersionList.Version info, String internalLwjglVersion = iLwjglVersion >= 341 ? "3.4.1" : "3.3.3"; File lwjgl3Folder = new File(Tools.DIR_GAME_HOME, "lwjgl3/"+internalLwjglVersion); String lwjglCore = lwjgl3Folder.getAbsolutePath() + "/lwjgl.jar"; + String lwjglMerged = lwjgl3Folder.getAbsolutePath() + "/lwjgl-"+internalLwjglVersion+"-merged-modules"; String lwjglxFile = lwjgl3Folder + "/lwjgl-lwjglx.jar"; + launchClasspath.append(lwjglCore).append(":"); + // 2nd in priority in case we need to merge lwjgl.jar again for testing + launchClasspath.append(lwjglMerged).append(":"); File[] lwjglModules = lwjgl3Folder.listFiles(pathname -> pathname.getName().endsWith(".jar") && diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModsSearchFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModsSearchFragment.java index c1ae935599..ed67b67037 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModsSearchFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModsSearchFragment.java @@ -35,6 +35,7 @@ import net.kdt.pojavlaunch.modloaders.modpacks.models.ModDetail; import net.kdt.pojavlaunch.modloaders.modpacks.models.ModItem; import net.kdt.pojavlaunch.modloaders.modpacks.models.SearchFilters; +import net.kdt.pojavlaunch.modloaders.modpacks.models.Constants; import net.kdt.pojavlaunch.prefs.LauncherPreferences; import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper; import net.kdt.pojavlaunch.profiles.VersionSelectorDialog; @@ -231,6 +232,27 @@ public void handleInstallation(Context context, ModDetail modDetail, int selecte } String url = modDetail.versionUrls[selectedVersion]; + + // Check if this is a CF-restricted mod using the flag set during search + boolean isCfRestricted = modDetail.apiSource == Constants.SOURCE_CURSEFORGE + && (modDetail.isRestricted || url == null || url.isEmpty()); + + if (isCfRestricted) { + // Show dialog directing user to download from CurseForge website + String cfUrl = "https://www.curseforge.com/minecraft/mc-mods/" + modDetail.id; + Context dialogCtx = mActivityContext != null ? mActivityContext : context; + mMainHandler.post(() -> + new AlertDialog.Builder(dialogCtx) + .setTitle(modDetail.title) + .setMessage("This mod restricts third-party downloads.\n\nDownload it manually from CurseForge and place it in your mods folder:\n\n" + cfUrl) + .setPositiveButton("Open CurseForge", (d, w) -> + Tools.openURL((android.app.Activity) dialogCtx, cfUrl)) + .setNegativeButton(android.R.string.cancel, null) + .show() + ); + return; + } + if (url == null || url.isEmpty()) { Tools.showErrorRemote(context, R.string.modpack_install_download_failed, new IOException("No download URL available for this mod")); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/CurseforgeApi.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/CurseforgeApi.java index f263763974..7036f3c9e5 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/CurseforgeApi.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/api/CurseforgeApi.java @@ -78,16 +78,17 @@ public SearchResult searchMod(SearchFilters searchFilters, SearchResult previous JsonElement allowModDistribution = dataElement.get("allowModDistribution"); // Gson automatically casts null to false, which leans to issues // So, only check the distribution flag if it is non-null - if(!allowModDistribution.isJsonNull() && !allowModDistribution.getAsBoolean()) { - Log.i("CurseforgeApi", "Skipping modpack "+dataElement.get("name").getAsString() + " because curseforge sucks"); - continue; - } + boolean restricted = !allowModDistribution.isJsonNull() && !allowModDistribution.getAsBoolean(); + JsonObject logo = dataElement.getAsJsonObject("logo"); + String thumbnailUrl = (logo != null && logo.has("thumbnailUrl") && !logo.get("thumbnailUrl").isJsonNull()) + ? logo.get("thumbnailUrl").getAsString() : ""; ModItem modItem = new ModItem(Constants.SOURCE_CURSEFORGE, searchFilters.isModpack, dataElement.get("id").getAsString(), dataElement.get("name").getAsString(), dataElement.get("summary").getAsString(), - dataElement.getAsJsonObject("logo").get("thumbnailUrl").getAsString()); + thumbnailUrl); + modItem.isRestricted = restricted; modItemList.add(modItem); } if(curseforgeSearchResult == null) curseforgeSearchResult = new CurseforgeSearchResult(); @@ -100,6 +101,14 @@ public SearchResult searchMod(SearchFilters searchFilters, SearchResult previous @Override public ModDetail getModDetails(ModItem item) { + // Short-circuit for restricted mods — no point fetching versions + if (item.isRestricted) { + return new ModDetail(item, + new String[]{"Blocked by the author!"}, + new String[]{null}, + new String[]{null}, + new String[]{null}); + } ArrayList allModDetails = new ArrayList<>(); int index = 0; while(index != CURSEFORGE_PAGINATION_END_REACHED && @@ -108,6 +117,26 @@ public ModDetail getModDetails(ModItem item) { } if(index == CURSEFORGE_PAGINATION_ERROR) return null; int length = allModDetails.size(); + + // Check if ALL versions have null downloadUrl (fully restricted mod) + boolean allRestricted = length > 0; + for (int i = 0; i < length; i++) { + JsonElement url = allModDetails.get(i).get("downloadUrl"); + if (url != null && !url.isJsonNull()) { + allRestricted = false; + break; + } + } + if (allRestricted || length == 0) { + // All versions restricted - return a ModDetail with one entry that signals this. + // The version name shown in spinner makes it clear, tapping Install shows CF dialog. + return new ModDetail(item, + new String[]{"Blocked by the author! By clicking the install button it will open the CurseForge page."}, + new String[]{null}, + new String[]{null}, + new String[]{null}); + } + String[] versionNames = new String[length]; String[] mcVersionNames = new String[length]; String[] versionUrls = new String[length]; @@ -118,11 +147,7 @@ public ModDetail getModDetails(ModItem item) { JsonElement downloadUrl = modDetail.get("downloadUrl"); if (downloadUrl == null || downloadUrl.isJsonNull()) { - // CF restricts direct download for some mods — build edge CDN URL instead - int fileId = modDetail.get("id").getAsInt(); - String fileName = modDetail.get("fileName").getAsString(); - versionUrls[i] = String.format("https://edge.forgecdn.net/files/%s/%s/%s", - fileId / 1000, fileId % 1000, fileName); + versionUrls[i] = null; } else { versionUrls[i] = downloadUrl.getAsString(); } @@ -290,4 +315,4 @@ private boolean verifyManifest(CurseManifest manifest) { static class CurseforgeSearchResult extends SearchResult { int previousOffset; } -} +} \ No newline at end of file diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/ModDetail.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/ModDetail.java index 211eb289ef..6bc3abc404 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/ModDetail.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/models/ModDetail.java @@ -33,7 +33,7 @@ public ModDetail(ModItem item, String[] versionNames, String[] mcVersionNames, S // Add the mc version to the version model for (int i=0; i 0 ? CallbackBridge.windowWidth : CallbackBridge.physicalWidth)); diff --git a/app_pojavlauncher/src/main/jni/ctxbridges/gl_bridge.c b/app_pojavlauncher/src/main/jni/ctxbridges/gl_bridge.c index 4fb9503c35..7f3571bac1 100644 --- a/app_pojavlauncher/src/main/jni/ctxbridges/gl_bridge.c +++ b/app_pojavlauncher/src/main/jni/ctxbridges/gl_bridge.c @@ -11,6 +11,7 @@ #include "egl_loader.h" #define TAG __FILE_NAME__ +#include #include // @@ -101,10 +102,33 @@ gl_render_window_t* gl_init_context(gl_render_window_t *share) { } void gl_swap_surface(gl_render_window_t* bundle) { - if(bundle->nativeSurface != NULL) { - ANativeWindow_release(bundle->nativeSurface); + /* + * In some cases (see MinecraftGLSurface.start(), android kills the surface automatically for + * us, if we try to release/destroy it, we SIGSEGV. Check if we are -19x-19 or some other + * invalid value and skip the release because Android decided to handle releasing it for us. + * This goes against every piece of documentation I have ever seen but who actually reads those? + * + * Some drivers take forever to properly destroy the surface, they do it part at a time or + * some other garbage while SIGSEGVing us if we try releasing while they're in the middle of + * turning the surface dead. This makes the width and height make it look valid when it actually + * isn't so we wait for them and hope there is no race condition of both us and Android trying + * to release the surface. This seems driver dependent as AVD and Waydroid do not need 0.75s + * to set the bloody height and width to their proper values. They just do it, instantly. + */ + usleep(750000); // An overkill amount of time to wait for a surface to finish dying + int32_t nativeWindowWidth = ANativeWindow_getWidth(pojav_environ->pojavWindow); + int32_t nativeWindowHeight = ANativeWindow_getHeight(pojav_environ->pojavWindow); + if ((nativeWindowWidth > 0) || (nativeWindowHeight > 0)) { + LOGI("Native surface dimensions (%d x %d)\n", + nativeWindowWidth, nativeWindowHeight); + if (bundle->nativeSurface != NULL) { + ANativeWindow_release(bundle->nativeSurface); + } + if (bundle->surface != NULL) eglDestroySurface_p(g_EglDisplay, bundle->surface); + } else { + LOGW("Native surface dimensions (%d x %d) are invalid! Assuming given nativeSurface is bad.\n", + nativeWindowWidth, nativeWindowHeight); } - if(bundle->surface != NULL) eglDestroySurface_p(g_EglDisplay, bundle->surface); if(bundle->newNativeSurface != NULL) { LOGI("Switching to new native surface"); bundle->nativeSurface = bundle->newNativeSurface; diff --git a/app_pojavlauncher/src/main/jni/input_bridge_v3.c b/app_pojavlauncher/src/main/jni/input_bridge_v3.c index 6ddab2e06f..716946e946 100644 --- a/app_pojavlauncher/src/main/jni/input_bridge_v3.c +++ b/app_pojavlauncher/src/main/jni/input_bridge_v3.c @@ -48,6 +48,10 @@ jint JNI_OnLoad(JavaVM* vm, __attribute__((unused)) void* reserved) { LOGI("Saving DVM environ..."); //Save dalvik global JavaVM pointer pojav_environ->dalvikJavaVMPtr = vm; + // Sets up the stuff that GLFW/JVM needs to communicate to Android + // These methods are called from GLFW/JVM and connect to Android-side impls + // These aren't separated out into a method because these can be ran so long as we are in Android-land + // so that means this library must be loaded at least once in Android-land JNIEnv *dvEnv; (*vm)->GetEnv(vm, (void**) &dvEnv, JNI_VERSION_1_4); pojav_environ->bridgeClazz = (*dvEnv)->NewGlobalRef(dvEnv,(*dvEnv) ->FindClass(dvEnv,"org/lwjgl/glfw/CallbackBridge")); @@ -60,17 +64,7 @@ jint JNI_OnLoad(JavaVM* vm, __attribute__((unused)) void* reserved) { LOGI("Saving JVM environ..."); pojav_environ->runtimeJavaVMPtr = vm; JNIEnv *vmEnv; - (*vm)->GetEnv(vm, (void**) &vmEnv, JNI_VERSION_1_4); - pojav_environ->vmGlfwClass = (*vmEnv)->NewGlobalRef(vmEnv, (*vmEnv)->FindClass(vmEnv, "org/lwjgl/glfw/GLFW")); - pojav_environ->method_glftSetWindowAttrib = (*vmEnv)->GetStaticMethodID(vmEnv, pojav_environ->vmGlfwClass, "glfwSetWindowAttrib", "(JII)V"); - pojav_environ->method_internalWindowSizeChanged = (*vmEnv)->GetStaticMethodID(vmEnv, pojav_environ->vmGlfwClass, "internalWindowSizeChanged", "(J)V"); - pojav_environ->method_internalChangeMonitorSize = (*vmEnv)->GetStaticMethodID(vmEnv, pojav_environ->vmGlfwClass, "internalChangeMonitorSize", "(II)V"); - jfieldID field_keyDownBuffer = (*vmEnv)->GetStaticFieldID(vmEnv, pojav_environ->vmGlfwClass, "keyDownBuffer", "Ljava/nio/ByteBuffer;"); - jobject keyDownBufferJ = (*vmEnv)->GetStaticObjectField(vmEnv, pojav_environ->vmGlfwClass, field_keyDownBuffer); - pojav_environ->keyDownBuffer = (*vmEnv)->GetDirectBufferAddress(vmEnv, keyDownBufferJ); - jfieldID field_mouseDownBuffer = (*vmEnv)->GetStaticFieldID(vmEnv, pojav_environ->vmGlfwClass, "mouseDownBuffer", "Ljava/nio/ByteBuffer;"); - jobject mouseDownBufferJ = (*vmEnv)->GetStaticObjectField(vmEnv, pojav_environ->vmGlfwClass, field_mouseDownBuffer); - pojav_environ->mouseDownBuffer = (*vmEnv)->GetDirectBufferAddress(vmEnv, mouseDownBufferJ); + (*pojav_environ->runtimeJavaVMPtr)->GetEnv(pojav_environ->runtimeJavaVMPtr, (void**) &vmEnv, JNI_VERSION_1_4); hookExec(vmEnv); installLwjglDlopenHook(vmEnv); installEMUIIteratorMititgation(vmEnv); @@ -87,6 +81,26 @@ jint JNI_OnLoad(JavaVM* vm, __attribute__((unused)) void* reserved) { return JNI_VERSION_1_4; } +// Sets up the stuff that Android needs to communicate to GLFW/JVM +// These methods are called from Android and connect to GLFW/JVM-side impls +// These are separated out into a method because GLFW loads much later than when we need to dlopen +// pojavexec since it does more than just GLFW. +// TODO: Add checks in case someone forgets to run this method. Probably see if pojav_environ->vmGlfwClass is null or not +JNIEXPORT void JNICALL Java_org_lwjgl_glfw_GLFW_nativeInitializeGLFWNativeBridge(__attribute__((unused)) JNIEnv* env, __attribute__((unused)) jclass clazz) { + JNIEnv *vmEnv; + (*pojav_environ->runtimeJavaVMPtr)->GetEnv(pojav_environ->runtimeJavaVMPtr, (void**) &vmEnv, JNI_VERSION_1_4); + pojav_environ->vmGlfwClass = (*vmEnv)->NewGlobalRef(vmEnv, (*vmEnv)->FindClass(vmEnv, "org/lwjgl/glfw/GLFW")); + pojav_environ->method_glftSetWindowAttrib = (*vmEnv)->GetStaticMethodID(vmEnv, pojav_environ->vmGlfwClass, "glfwSetWindowAttrib", "(JII)V"); + pojav_environ->method_internalWindowSizeChanged = (*vmEnv)->GetStaticMethodID(vmEnv, pojav_environ->vmGlfwClass, "internalWindowSizeChanged", "(J)V"); + pojav_environ->method_internalChangeMonitorSize = (*vmEnv)->GetStaticMethodID(vmEnv, pojav_environ->vmGlfwClass, "internalChangeMonitorSize", "(II)V"); + jfieldID field_keyDownBuffer = (*vmEnv)->GetStaticFieldID(vmEnv, pojav_environ->vmGlfwClass, "keyDownBuffer", "Ljava/nio/ByteBuffer;"); + jobject keyDownBufferJ = (*vmEnv)->GetStaticObjectField(vmEnv, pojav_environ->vmGlfwClass, field_keyDownBuffer); + pojav_environ->keyDownBuffer = (*vmEnv)->GetDirectBufferAddress(vmEnv, keyDownBufferJ); + jfieldID field_mouseDownBuffer = (*vmEnv)->GetStaticFieldID(vmEnv, pojav_environ->vmGlfwClass, "mouseDownBuffer", "Ljava/nio/ByteBuffer;"); + jobject mouseDownBufferJ = (*vmEnv)->GetStaticObjectField(vmEnv, pojav_environ->vmGlfwClass, field_mouseDownBuffer); + pojav_environ->mouseDownBuffer = (*vmEnv)->GetDirectBufferAddress(vmEnv, mouseDownBufferJ); +} + #define ADD_CALLBACK_WWIN(NAME) \ JNIEXPORT jlong JNICALL Java_org_lwjgl_glfw_GLFW_nglfwSet##NAME##Callback(JNIEnv * env, jclass cls, jlong window, jlong callbackptr) { \ void** oldCallback = (void**) &pojav_environ->GLFW_invoke_##NAME; \ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-freetype.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-freetype.jar index 0e1a853c46..45670a88a2 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-freetype.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-freetype.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-glfw.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-glfw.jar index 86ada0908c..c78b682613 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-glfw.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-glfw.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-lwjglx.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-lwjglx.jar index ca4e20fa27..41ccde77a6 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-lwjglx.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-lwjglx.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-nanovg.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-nanovg.jar index c7738efa04..de51565ac8 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-nanovg.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-nanovg.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-openal.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-openal.jar index 0033b80618..c280f9c220 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-openal.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-openal.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-opengl.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-opengl.jar index 49d696e5fd..4bd46ee8fc 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-opengl.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-opengl.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-shaderc.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-shaderc.jar index b12af561d1..42c12433d5 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-shaderc.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-shaderc.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-spvc.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-spvc.jar index 28df172fce..8c71286554 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-spvc.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-spvc.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-stb.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-stb.jar index 7b28373830..43799d96ce 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-stb.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-stb.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-tinyfd.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-tinyfd.jar index c8e7df3459..7c5a5397fb 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-tinyfd.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-tinyfd.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-vma.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-vma.jar index 98049ba3ac..5468a5206c 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-vma.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-vma.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-vulkan.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-vulkan.jar index 8e47fa2d1a..ee0718840c 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-vulkan.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl-vulkan.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl.jar b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl.jar index f5a332fa98..9c9e0632f6 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl.jar and b/jre_lwjgl3glfw/lwjgl-3.3.3/libs/lwjgl-3.3.3/lwjgl.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.3.3/src/main/java/org/lwjgl/glfw/GLFW.java b/jre_lwjgl3glfw/lwjgl-3.3.3/src/main/java/org/lwjgl/glfw/GLFW.java index 56292d4e21..410f0b6aa7 100644 --- a/jre_lwjgl3glfw/lwjgl-3.3.3/src/main/java/org/lwjgl/glfw/GLFW.java +++ b/jre_lwjgl3glfw/lwjgl-3.3.3/src/main/java/org/lwjgl/glfw/GLFW.java @@ -522,10 +522,13 @@ public class GLFW private static final String PROP_WINDOW_HEIGHT= "glfwstub.windowHeight"; public static long mainContext = 0; private static long gamepadDataPointer; - + private static native void nativeInitializeGLFWNativeBridge(); static { try { + // Mods like LWJGL3ify have more of a chance of overriding the other classes so + // lets just load it here again just to be safe. System.loadLibrary("pojavexec"); + nativeInitializeGLFWNativeBridge(); } catch (UnsatisfiedLinkError e) { e.printStackTrace(); } diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-freetype.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-freetype.jar index cd60300015..f77201aade 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-freetype.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-freetype.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-glfw.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-glfw.jar index 44ed7def5c..f1e84084b9 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-glfw.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-glfw.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-lwjglx.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-lwjglx.jar index b6df6fe3bf..b25b6a467a 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-lwjglx.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-lwjglx.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-nanovg.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-nanovg.jar index 6522ec97d5..21c50ae2d2 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-nanovg.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-nanovg.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-openal.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-openal.jar index e484115657..477fb455be 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-openal.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-openal.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-opengl.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-opengl.jar index a9f59b50ba..7cd0aafa66 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-opengl.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-opengl.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-shaderc.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-shaderc.jar index 9587cac93e..1b7a66f7d8 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-shaderc.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-shaderc.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-spvc.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-spvc.jar index 4aeae7e6d4..0a859695cb 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-spvc.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-spvc.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-stb.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-stb.jar index b896dd03b7..db56a1b5d1 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-stb.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-stb.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-tinyfd.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-tinyfd.jar index 59042e6f11..4405166471 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-tinyfd.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-tinyfd.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-vma.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-vma.jar index 958b9c5b22..27f967b74a 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-vma.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-vma.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-vulkan.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-vulkan.jar index 806b62ca47..4b5bbde662 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-vulkan.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl-vulkan.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl.jar b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl.jar index 1f746784c5..632f219285 100644 Binary files a/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl.jar and b/jre_lwjgl3glfw/lwjgl-3.4.1/libs/lwjgl-3.4.1/lwjgl.jar differ diff --git a/jre_lwjgl3glfw/lwjgl-3.4.1/src/main/java/org/lwjgl/glfw/GLFW.java b/jre_lwjgl3glfw/lwjgl-3.4.1/src/main/java/org/lwjgl/glfw/GLFW.java index c25522ab96..d81731e10a 100644 --- a/jre_lwjgl3glfw/lwjgl-3.4.1/src/main/java/org/lwjgl/glfw/GLFW.java +++ b/jre_lwjgl3glfw/lwjgl-3.4.1/src/main/java/org/lwjgl/glfw/GLFW.java @@ -529,9 +529,13 @@ public class GLFW public static long mainContext = 0; private static long gamepadDataPointer; + private static native void nativeInitializeGLFWNativeBridge(); static { try { + // Mods like LWJGL3ify have more of a chance of overriding the other classes so + // lets just load it here again just to be safe. System.loadLibrary("pojavexec"); + nativeInitializeGLFWNativeBridge(); } catch (UnsatisfiedLinkError e) { e.printStackTrace(); }