From 5c703d7cd873fa763cc71a26bca6877b255d3b5f Mon Sep 17 00:00:00 2001 From: keepsTime <102384688+keepsTime@users.noreply.github.com> Date: Thu, 18 Dec 2025 19:27:56 +0100 Subject: [PATCH 1/4] Catchall Bodge for NoSuchMethodError (found at glfwGetMonitorName call) occurences and similar dependency errors (LinkageError) on Zalith (Android14) --- .../MixinVulkanModMonitorSelection.java | 34 +++++++++---------- .../MixinVulkanModMonitorSelection.java | 34 +++++++++---------- .../MixinVulkanModMonitorSelection.java | 34 +++++++++---------- .../MixinVulkanModMonitorSelection.java | 34 +++++++++---------- .../MixinVulkanModMonitorSelection.java | 34 +++++++++---------- 5 files changed, 85 insertions(+), 85 deletions(-) diff --git a/fabric-1.21.1/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java b/fabric-1.21.1/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java index d61e7f4..759375b 100644 --- a/fabric-1.21.1/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java +++ b/fabric-1.21.1/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java @@ -71,7 +71,7 @@ private static void initializeMonitors() { } else { monitorHandles.add(0L); // Fallback to primary } - } catch (Exception e) { + } catch (Exception | LinkageError e) { monitorHandles.add(0L); // Fallback to primary } } @@ -90,7 +90,7 @@ private static void initializeMonitors() { selectedMonitorIndex = 0; } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Fallback to GLFW if OSHI fails initializeMonitorsWithGLFW(); } @@ -119,7 +119,7 @@ private static void initializeMonitorsWithGLFW() { } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Final fallback availableMonitors.add("Primary"); monitorHandles.add(0L); @@ -179,7 +179,7 @@ private static void initializeMonitorsWithGLFW() { // Also inject video tooltips into the final blocks injectVideoTooltips(finalBlocks); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Log error but continue with original blocks if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to inject monitor selection into video options: {}", e.getMessage()); @@ -209,7 +209,7 @@ private static boolean containsResolutionOption(net.vulkanmod.config.gui.OptionB } return false; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to check block for resolution options: {}", e.getMessage()); } @@ -244,7 +244,7 @@ private static net.vulkanmod.config.gui.OptionBlock addMonitorSelectionToBlock(n newOptions.toArray(new Option[0]) ); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to add monitor selection to existing block: {}", e.getMessage()); } @@ -283,14 +283,14 @@ private static Option createMonitorSelectionOption() { try { Text tooltip = Text.translatable("vulkanmod-extra.option.video.monitorSelection.tooltip"); monitorOption.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue if tooltip fails } } return monitorOption; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create monitor selection option: {}", e.getMessage()); } @@ -331,7 +331,7 @@ private static net.vulkanmod.config.gui.OptionBlock createMonitorSelectionBlock( try { Text tooltip = Text.translatable("vulkanmod.options.video.monitor_selection.tooltip"); monitorOption.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue if tooltip fails } } @@ -343,7 +343,7 @@ private static net.vulkanmod.config.gui.OptionBlock createMonitorSelectionBlock( options.toArray(new Option[0]) ); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create monitor selection block: {}", e.getMessage()); } @@ -390,7 +390,7 @@ private static Option createCyclingOption(Text name, String[] values, return option; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create cycling option: {}", e.getMessage()); } @@ -431,21 +431,21 @@ private static void updateVideoModesForSelectedMonitor() { java.lang.reflect.Field selectedVideoModeField = VideoModeManager.class.getDeclaredField("selectedVideoMode"); selectedVideoModeField.setAccessible(true); selectedVideoModeField.set(null, currentMode); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update selected video mode: {}", e.getMessage()); } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update video mode sets: {}", e.getMessage()); } } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update video modes for selected monitor: {}", e.getMessage()); } @@ -532,7 +532,7 @@ private static void injectVideoTooltips(net.vulkanmod.config.gui.OptionBlock[] b } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to inject video tooltips", e); } @@ -563,13 +563,13 @@ private static void injectTooltipsIntoBlock(net.vulkanmod.config.gui.OptionBlock try { Text tooltip = Text.translatable(tooltipKey); option.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue on failure } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.warn("Failed to inject tooltips into option block", e); } diff --git a/fabric-1.21.2/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java b/fabric-1.21.2/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java index 4bd653e..e919a0a 100644 --- a/fabric-1.21.2/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java +++ b/fabric-1.21.2/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java @@ -71,7 +71,7 @@ private static void initializeMonitors() { } else { monitorHandles.add(0L); // Fallback to primary } - } catch (Exception e) { + } catch (Exception | LinkageError e) { monitorHandles.add(0L); // Fallback to primary } } @@ -90,7 +90,7 @@ private static void initializeMonitors() { selectedMonitorIndex = 0; } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Fallback to GLFW if OSHI fails initializeMonitorsWithGLFW(); } @@ -119,7 +119,7 @@ private static void initializeMonitorsWithGLFW() { } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Final fallback availableMonitors.add("Primary"); monitorHandles.add(0L); @@ -179,7 +179,7 @@ private static void initializeMonitorsWithGLFW() { // Also inject video tooltips into the final blocks injectVideoTooltips(finalBlocks); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Log error but continue with original blocks if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to inject monitor selection into video options: {}", e.getMessage()); @@ -209,7 +209,7 @@ private static boolean containsResolutionOption(net.vulkanmod.config.gui.OptionB } return false; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to check block for resolution options: {}", e.getMessage()); } @@ -244,7 +244,7 @@ private static net.vulkanmod.config.gui.OptionBlock addMonitorSelectionToBlock(n newOptions.toArray(new Option[0]) ); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to add monitor selection to existing block: {}", e.getMessage()); } @@ -283,14 +283,14 @@ private static Option createMonitorSelectionOption() { try { Text tooltip = Text.translatable("vulkanmod-extra.option.video.monitorSelection.tooltip"); monitorOption.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue if tooltip fails } } return monitorOption; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create monitor selection option: {}", e.getMessage()); } @@ -331,7 +331,7 @@ private static net.vulkanmod.config.gui.OptionBlock createMonitorSelectionBlock( try { Text tooltip = Text.translatable("vulkanmod.options.video.monitor_selection.tooltip"); monitorOption.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue if tooltip fails } } @@ -343,7 +343,7 @@ private static net.vulkanmod.config.gui.OptionBlock createMonitorSelectionBlock( options.toArray(new Option[0]) ); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create monitor selection block: {}", e.getMessage()); } @@ -390,7 +390,7 @@ private static Option createCyclingOption(Text name, String[] values, return option; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create cycling option: {}", e.getMessage()); } @@ -431,21 +431,21 @@ private static void updateVideoModesForSelectedMonitor() { java.lang.reflect.Field selectedVideoModeField = VideoModeManager.class.getDeclaredField("selectedVideoMode"); selectedVideoModeField.setAccessible(true); selectedVideoModeField.set(null, currentMode); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update selected video mode: {}", e.getMessage()); } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update video mode sets: {}", e.getMessage()); } } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update video modes for selected monitor: {}", e.getMessage()); } @@ -532,7 +532,7 @@ private static void injectVideoTooltips(net.vulkanmod.config.gui.OptionBlock[] b } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue on failure } } @@ -562,14 +562,14 @@ private static void injectTooltipsIntoBlock(net.vulkanmod.config.gui.OptionBlock try { Text tooltip = Text.translatable(tooltipKey); option.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue on failure } } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.warn("Failed to inject tooltips into option block", e); } diff --git a/fabric-1.21.3/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java b/fabric-1.21.3/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java index 4bd653e..e919a0a 100644 --- a/fabric-1.21.3/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java +++ b/fabric-1.21.3/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java @@ -71,7 +71,7 @@ private static void initializeMonitors() { } else { monitorHandles.add(0L); // Fallback to primary } - } catch (Exception e) { + } catch (Exception | LinkageError e) { monitorHandles.add(0L); // Fallback to primary } } @@ -90,7 +90,7 @@ private static void initializeMonitors() { selectedMonitorIndex = 0; } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Fallback to GLFW if OSHI fails initializeMonitorsWithGLFW(); } @@ -119,7 +119,7 @@ private static void initializeMonitorsWithGLFW() { } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Final fallback availableMonitors.add("Primary"); monitorHandles.add(0L); @@ -179,7 +179,7 @@ private static void initializeMonitorsWithGLFW() { // Also inject video tooltips into the final blocks injectVideoTooltips(finalBlocks); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Log error but continue with original blocks if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to inject monitor selection into video options: {}", e.getMessage()); @@ -209,7 +209,7 @@ private static boolean containsResolutionOption(net.vulkanmod.config.gui.OptionB } return false; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to check block for resolution options: {}", e.getMessage()); } @@ -244,7 +244,7 @@ private static net.vulkanmod.config.gui.OptionBlock addMonitorSelectionToBlock(n newOptions.toArray(new Option[0]) ); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to add monitor selection to existing block: {}", e.getMessage()); } @@ -283,14 +283,14 @@ private static Option createMonitorSelectionOption() { try { Text tooltip = Text.translatable("vulkanmod-extra.option.video.monitorSelection.tooltip"); monitorOption.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue if tooltip fails } } return monitorOption; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create monitor selection option: {}", e.getMessage()); } @@ -331,7 +331,7 @@ private static net.vulkanmod.config.gui.OptionBlock createMonitorSelectionBlock( try { Text tooltip = Text.translatable("vulkanmod.options.video.monitor_selection.tooltip"); monitorOption.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue if tooltip fails } } @@ -343,7 +343,7 @@ private static net.vulkanmod.config.gui.OptionBlock createMonitorSelectionBlock( options.toArray(new Option[0]) ); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create monitor selection block: {}", e.getMessage()); } @@ -390,7 +390,7 @@ private static Option createCyclingOption(Text name, String[] values, return option; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create cycling option: {}", e.getMessage()); } @@ -431,21 +431,21 @@ private static void updateVideoModesForSelectedMonitor() { java.lang.reflect.Field selectedVideoModeField = VideoModeManager.class.getDeclaredField("selectedVideoMode"); selectedVideoModeField.setAccessible(true); selectedVideoModeField.set(null, currentMode); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update selected video mode: {}", e.getMessage()); } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update video mode sets: {}", e.getMessage()); } } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update video modes for selected monitor: {}", e.getMessage()); } @@ -532,7 +532,7 @@ private static void injectVideoTooltips(net.vulkanmod.config.gui.OptionBlock[] b } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue on failure } } @@ -562,14 +562,14 @@ private static void injectTooltipsIntoBlock(net.vulkanmod.config.gui.OptionBlock try { Text tooltip = Text.translatable(tooltipKey); option.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue on failure } } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.warn("Failed to inject tooltips into option block", e); } diff --git a/fabric-1.21.4/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java b/fabric-1.21.4/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java index 4bd653e..e919a0a 100644 --- a/fabric-1.21.4/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java +++ b/fabric-1.21.4/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java @@ -71,7 +71,7 @@ private static void initializeMonitors() { } else { monitorHandles.add(0L); // Fallback to primary } - } catch (Exception e) { + } catch (Exception | LinkageError e) { monitorHandles.add(0L); // Fallback to primary } } @@ -90,7 +90,7 @@ private static void initializeMonitors() { selectedMonitorIndex = 0; } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Fallback to GLFW if OSHI fails initializeMonitorsWithGLFW(); } @@ -119,7 +119,7 @@ private static void initializeMonitorsWithGLFW() { } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Final fallback availableMonitors.add("Primary"); monitorHandles.add(0L); @@ -179,7 +179,7 @@ private static void initializeMonitorsWithGLFW() { // Also inject video tooltips into the final blocks injectVideoTooltips(finalBlocks); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Log error but continue with original blocks if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to inject monitor selection into video options: {}", e.getMessage()); @@ -209,7 +209,7 @@ private static boolean containsResolutionOption(net.vulkanmod.config.gui.OptionB } return false; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to check block for resolution options: {}", e.getMessage()); } @@ -244,7 +244,7 @@ private static net.vulkanmod.config.gui.OptionBlock addMonitorSelectionToBlock(n newOptions.toArray(new Option[0]) ); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to add monitor selection to existing block: {}", e.getMessage()); } @@ -283,14 +283,14 @@ private static Option createMonitorSelectionOption() { try { Text tooltip = Text.translatable("vulkanmod-extra.option.video.monitorSelection.tooltip"); monitorOption.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue if tooltip fails } } return monitorOption; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create monitor selection option: {}", e.getMessage()); } @@ -331,7 +331,7 @@ private static net.vulkanmod.config.gui.OptionBlock createMonitorSelectionBlock( try { Text tooltip = Text.translatable("vulkanmod.options.video.monitor_selection.tooltip"); monitorOption.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue if tooltip fails } } @@ -343,7 +343,7 @@ private static net.vulkanmod.config.gui.OptionBlock createMonitorSelectionBlock( options.toArray(new Option[0]) ); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create monitor selection block: {}", e.getMessage()); } @@ -390,7 +390,7 @@ private static Option createCyclingOption(Text name, String[] values, return option; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create cycling option: {}", e.getMessage()); } @@ -431,21 +431,21 @@ private static void updateVideoModesForSelectedMonitor() { java.lang.reflect.Field selectedVideoModeField = VideoModeManager.class.getDeclaredField("selectedVideoMode"); selectedVideoModeField.setAccessible(true); selectedVideoModeField.set(null, currentMode); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update selected video mode: {}", e.getMessage()); } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update video mode sets: {}", e.getMessage()); } } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update video modes for selected monitor: {}", e.getMessage()); } @@ -532,7 +532,7 @@ private static void injectVideoTooltips(net.vulkanmod.config.gui.OptionBlock[] b } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue on failure } } @@ -562,14 +562,14 @@ private static void injectTooltipsIntoBlock(net.vulkanmod.config.gui.OptionBlock try { Text tooltip = Text.translatable(tooltipKey); option.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue on failure } } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.warn("Failed to inject tooltips into option block", e); } diff --git a/fabric-1.21.5/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java b/fabric-1.21.5/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java index 4bd653e..e919a0a 100644 --- a/fabric-1.21.5/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java +++ b/fabric-1.21.5/src/main/java/com/criticalrange/mixins/vulkanmod/MixinVulkanModMonitorSelection.java @@ -71,7 +71,7 @@ private static void initializeMonitors() { } else { monitorHandles.add(0L); // Fallback to primary } - } catch (Exception e) { + } catch (Exception | LinkageError e) { monitorHandles.add(0L); // Fallback to primary } } @@ -90,7 +90,7 @@ private static void initializeMonitors() { selectedMonitorIndex = 0; } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Fallback to GLFW if OSHI fails initializeMonitorsWithGLFW(); } @@ -119,7 +119,7 @@ private static void initializeMonitorsWithGLFW() { } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Final fallback availableMonitors.add("Primary"); monitorHandles.add(0L); @@ -179,7 +179,7 @@ private static void initializeMonitorsWithGLFW() { // Also inject video tooltips into the final blocks injectVideoTooltips(finalBlocks); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Log error but continue with original blocks if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to inject monitor selection into video options: {}", e.getMessage()); @@ -209,7 +209,7 @@ private static boolean containsResolutionOption(net.vulkanmod.config.gui.OptionB } return false; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to check block for resolution options: {}", e.getMessage()); } @@ -244,7 +244,7 @@ private static net.vulkanmod.config.gui.OptionBlock addMonitorSelectionToBlock(n newOptions.toArray(new Option[0]) ); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to add monitor selection to existing block: {}", e.getMessage()); } @@ -283,14 +283,14 @@ private static Option createMonitorSelectionOption() { try { Text tooltip = Text.translatable("vulkanmod-extra.option.video.monitorSelection.tooltip"); monitorOption.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue if tooltip fails } } return monitorOption; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create monitor selection option: {}", e.getMessage()); } @@ -331,7 +331,7 @@ private static net.vulkanmod.config.gui.OptionBlock createMonitorSelectionBlock( try { Text tooltip = Text.translatable("vulkanmod.options.video.monitor_selection.tooltip"); monitorOption.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue if tooltip fails } } @@ -343,7 +343,7 @@ private static net.vulkanmod.config.gui.OptionBlock createMonitorSelectionBlock( options.toArray(new Option[0]) ); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create monitor selection block: {}", e.getMessage()); } @@ -390,7 +390,7 @@ private static Option createCyclingOption(Text name, String[] values, return option; - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to create cycling option: {}", e.getMessage()); } @@ -431,21 +431,21 @@ private static void updateVideoModesForSelectedMonitor() { java.lang.reflect.Field selectedVideoModeField = VideoModeManager.class.getDeclaredField("selectedVideoMode"); selectedVideoModeField.setAccessible(true); selectedVideoModeField.set(null, currentMode); - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update selected video mode: {}", e.getMessage()); } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update video mode sets: {}", e.getMessage()); } } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.error("Failed to update video modes for selected monitor: {}", e.getMessage()); } @@ -532,7 +532,7 @@ private static void injectVideoTooltips(net.vulkanmod.config.gui.OptionBlock[] b } - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue on failure } } @@ -562,14 +562,14 @@ private static void injectTooltipsIntoBlock(net.vulkanmod.config.gui.OptionBlock try { Text tooltip = Text.translatable(tooltipKey); option.setTooltip(tooltip); - } catch (Exception e) { + } catch (Exception | LinkageError e) { // Silently continue on failure } } } } - } catch (Exception e) { + } catch (Exception | LinkageError e) { if (com.criticalrange.VulkanModExtra.LOGGER != null) { com.criticalrange.VulkanModExtra.LOGGER.warn("Failed to inject tooltips into option block", e); } From a4ef644e5efd65326dc2b97d1457b300434d7784 Mon Sep 17 00:00:00 2001 From: keepsTime <102384688+keepsTime@users.noreply.github.com> Date: Thu, 18 Dec 2025 20:19:05 +0100 Subject: [PATCH 2/4] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 946e3d9..eb10223 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,10 @@ +# VulkanMod Extra Android Fix +This Fork of VulkanMod Extra intends to increase function of VulkanMod Extra on Android devices + +Current state: +- opening video options no longer crashes the game +- video options do not display -> mod still outputs to console, shows signs of function + # VulkanMod Extra [![Modrinth Version](https://img.shields.io/modrinth/v/vulkanmod-extra?logo=modrinth&label=modrinth&color=00AF5C)](https://modrinth.com/mod/vulkanmod-extra) From 3df991a0f7969f58e2dca07ff5268e5c66423e53 Mon Sep 17 00:00:00 2001 From: keepsTime <102384688+keepsTime@users.noreply.github.com> Date: Thu, 18 Dec 2025 20:55:46 +0100 Subject: [PATCH 3/4] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index eb10223..a4b971b 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ This Fork of VulkanMod Extra intends to increase function of VulkanMod Extra on Android devices Current state: -- opening video options no longer crashes the game -- video options do not display -> mod still outputs to console, shows signs of function +- opening video options no longer crashes the game +- appears fixed # VulkanMod Extra From bd5edeec54a705d5d305c747d72f60be359f1698 Mon Sep 17 00:00:00 2001 From: keepsTime <102384688+keepsTime@users.noreply.github.com> Date: Thu, 18 Dec 2025 21:32:12 +0100 Subject: [PATCH 4/4] Update README.md --- README.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/README.md b/README.md index a4b971b..946e3d9 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,3 @@ -# VulkanMod Extra Android Fix -This Fork of VulkanMod Extra intends to increase function of VulkanMod Extra on Android devices - -Current state: -- opening video options no longer crashes the game -- appears fixed - # VulkanMod Extra [![Modrinth Version](https://img.shields.io/modrinth/v/vulkanmod-extra?logo=modrinth&label=modrinth&color=00AF5C)](https://modrinth.com/mod/vulkanmod-extra)