From ad9c82c9917cb870b29196861d3e650b6e58a5c1 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Fri, 20 Jul 2018 11:05:21 +0200 Subject: [PATCH] Fix compatibility with Optifine 1.12.2 E1 Optifine has changed some package names, this commit deals with that. --- .../compat/optifine/OptifineReflection.java | 8 +++++++- .../compat/shaders/ShaderReflection.java | 15 +++++++++------ .../compat/shaders/mixin/MixinShadersRender.java | 5 ++++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/replaymod/compat/optifine/OptifineReflection.java b/src/main/java/com/replaymod/compat/optifine/OptifineReflection.java index 07aab724..b05205d2 100644 --- a/src/main/java/com/replaymod/compat/optifine/OptifineReflection.java +++ b/src/main/java/com/replaymod/compat/optifine/OptifineReflection.java @@ -27,7 +27,13 @@ public class OptifineReflection { public static void reloadLang() { try { - Class.forName("Lang").getDeclaredMethod("resourcesReloaded").invoke(null); + Class langClass; + try { + langClass = Class.forName("Lang"); // Pre Optifine 1.12.2 E1 + } catch (ClassNotFoundException ignore) { + langClass = Class.forName("net.optifine.Lang"); // Post Optifine 1.12.2 E1 + } + langClass.getDeclaredMethod("resourcesReloaded").invoke(null); } catch (ClassNotFoundException ignore) { // no optifine installed } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { diff --git a/src/main/java/com/replaymod/compat/shaders/ShaderReflection.java b/src/main/java/com/replaymod/compat/shaders/ShaderReflection.java index 387874fd..5daac450 100644 --- a/src/main/java/com/replaymod/compat/shaders/ShaderReflection.java +++ b/src/main/java/com/replaymod/compat/shaders/ShaderReflection.java @@ -25,16 +25,19 @@ public class ShaderReflection { static { try { - shaders_frameTimeCounter = Class.forName("shadersmod.client.Shaders") - .getDeclaredField("frameTimeCounter"); + Class shadersClass; + try { + shadersClass = Class.forName("shadersmod.client.Shaders"); // Pre Optifine 1.12.2 E1 + } catch (ClassNotFoundException ignore) { + shadersClass = Class.forName("net.optifine.shaders.Shaders"); // Post Optifine 1.12.2 E1 + } + shaders_frameTimeCounter = shadersClass.getDeclaredField("frameTimeCounter"); shaders_frameTimeCounter.setAccessible(true); - shaders_isShadowPass = Class.forName("shadersmod.client.Shaders") - .getDeclaredField("isShadowPass"); + shaders_isShadowPass = shadersClass.getDeclaredField("isShadowPass"); shaders_isShadowPass.setAccessible(true); - shaders_beginRender = Class.forName("shadersmod.client.Shaders") - .getDeclaredMethod("beginRender", Minecraft.class, float.class, long.class); + shaders_beginRender = shadersClass.getDeclaredMethod("beginRender", Minecraft.class, float.class, long.class); shaders_beginRender.setAccessible(true); renderGlobal_chunksToUpdateForced = Class.forName("net.minecraft.client.renderer.RenderGlobal") diff --git a/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java b/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java index b81d176f..0ba5299f 100644 --- a/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java +++ b/src/main/java/com/replaymod/compat/shaders/mixin/MixinShadersRender.java @@ -9,7 +9,10 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Pseudo -@Mixin(targets = "shadersmod/client/ShadersRender", remap = false) +@Mixin(targets = { + "shadersmod/client/ShadersRender", // Pre Optifine 1.12.2 E1 + "net/optifine/shaders/ShadersRender" // Post Optifine 1.12.2 E1 +}, remap = false) public abstract class MixinShadersRender { @Inject(method = "renderHand0", at = @At("HEAD"), cancellable = true)