From e63bc3f6a3c8ecf4922463cd62d77a79c933337c Mon Sep 17 00:00:00 2001 From: FalsePattern Date: Thu, 26 Dec 2024 14:58:20 +0100 Subject: [PATCH] add lwjgl3 conflict warning --- build.gradle.kts | 2 ++ .../com/falsepattern/falsetweaks/Compat.java | 29 +++++++++++++++++++ .../falsepattern/falsetweaks/FalseTweaks.java | 7 +++++ 3 files changed, 38 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index d9f7a99..c29c57e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -69,6 +69,8 @@ dependencies { compileOnly("makamys:neodymium-mc1.7.10:0.4.0-unofficial:dev") + compileOnly("com.github.GTNewHorizons:lwjgl3ify:2.1.5:dev") + compileOnly(deobf("optifine:optifine:1.7.10_hd_u_e7")) compileOnly("com.gtnewhorizons.retrofuturabootstrap:RetroFuturaBootstrap:1.0.7") diff --git a/src/main/java/com/falsepattern/falsetweaks/Compat.java b/src/main/java/com/falsepattern/falsetweaks/Compat.java index c80e866..a49b0fd 100644 --- a/src/main/java/com/falsepattern/falsetweaks/Compat.java +++ b/src/main/java/com/falsepattern/falsetweaks/Compat.java @@ -46,6 +46,7 @@ public class Compat { private static Boolean OPTIFINE = null; private static Boolean DYNLIGHTS = null; private static Boolean SHADERS = null; + private static Boolean LWJGL3IFY = null; public static boolean neodymiumInstalled() { if (NEODYMIUM != null) { @@ -113,6 +114,19 @@ public static boolean optiFineHasShaders() { return SHADERS; } + public static boolean lwjgl3ifyLoaded() { + if (LWJGL3IFY != null) { + return LWJGL3IFY; + } + try { + LWJGL3IFY = Launch.classLoader.getClassBytes("me.eigenraven.lwjgl3ify.core.Lwjgl3ifyCoremod") != null; + } catch (IOException e) { + e.printStackTrace(); + LWJGL3IFY = false; + } + return LWJGL3IFY; + } + public static void applyCompatibilityTweaks() { ThreadingCompat.init(); if (Loader.isModLoaded("apparatus")) { @@ -136,6 +150,15 @@ public static boolean isShaders() { return optiFineHasShaders() && Config.isShaders(); } + public static boolean isSTBIStitcher() { + try { + return lwjgl3ifyLoaded() && LWJGL3IfyCompat.stbiTextureStitching(); + } catch (Throwable t) { + t.printStackTrace(); + return false; + } + } + public static float getAmbientOcclusionLightValue(Block block, int x, int y, int z, IBlockAccess blockAccess) { if (ApparatusCompat.isApparatusPresent()) { return ApparatusCompat.getAmbientOcclusionLightValue(block, x, y, z, blockAccess); @@ -175,6 +198,12 @@ public static Tessellator threadTessellator() { } } + private static class LWJGL3IfyCompat { + public static boolean stbiTextureStitching() { + return me.eigenraven.lwjgl3ify.core.Config.MIXIN_STBI_TEXTURE_STITCHING; + } + } + private static class NeodymiumCompat { public static boolean isActive() { return Neodymium.isActive(); diff --git a/src/main/java/com/falsepattern/falsetweaks/FalseTweaks.java b/src/main/java/com/falsepattern/falsetweaks/FalseTweaks.java index ff5450c..093de11 100644 --- a/src/main/java/com/falsepattern/falsetweaks/FalseTweaks.java +++ b/src/main/java/com/falsepattern/falsetweaks/FalseTweaks.java @@ -26,6 +26,7 @@ import com.falsepattern.falsetweaks.config.ModuleConfig; import com.falsepattern.falsetweaks.proxy.CommonProxy; +import net.minecraft.util.EnumChatFormatting; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.SidedProxy; @@ -79,6 +80,12 @@ public void preInit(FMLPreInitializationEvent e) { if (Loader.isModLoaded("DynamicLights")) { createSidedException("Remove the DynamicLights mod and restart the game!\nFalseTweaks has built-in dynamic lights support."); } + if (ModuleConfig.TEXTURE_OPTIMIZATIONS && Compat.isSTBIStitcher()) { + createSidedException("FalseTweaks " + + EnumChatFormatting.BOLD + "textureOptimizations" + EnumChatFormatting.RESET + " is not compatible with LWJGL3Ify's " + + EnumChatFormatting.BOLD + "stbiTextureStitching" + EnumChatFormatting.RESET + + " option.\nDisable stbiTextureStitching in the lwjgl3ify.cfg\nor disable textureOptimizations in FalseTweaks!"); + } } @Mod.EventHandler