From ad05b5c2157b4fee1d5a4c2d1f3a3fadba23842f Mon Sep 17 00:00:00 2001 From: LostLuma Date: Thu, 28 Dec 2023 08:56:30 +0100 Subject: [PATCH] Fix pausing on lost focus not working when rendering is disabled --- .../dynamic_fps/impl/mixin/GameRendererMixin.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/dynamic_fps/impl/mixin/GameRendererMixin.java b/src/main/java/dynamic_fps/impl/mixin/GameRendererMixin.java index a3d45113..bd2775cc 100644 --- a/src/main/java/dynamic_fps/impl/mixin/GameRendererMixin.java +++ b/src/main/java/dynamic_fps/impl/mixin/GameRendererMixin.java @@ -1,10 +1,13 @@ package dynamic_fps.impl.mixin; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; + import dynamic_fps.impl.DynamicFPSMod; import net.minecraft.client.renderer.GameRenderer; @@ -12,12 +15,13 @@ public class GameRendererMixin { /** * Implements the mod's big feature. + * + * Note: Inject after the pause on lost focus check, + * This allows the feature to work even at zero FPS. */ - @Inject(at = @At("HEAD"), method = "render", cancellable = true) - private void onRender(CallbackInfo callbackInfo) { - if (!DynamicFPSMod.checkForRender()) { - callbackInfo.cancel(); - } + @ModifyExpressionValue(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/client/Minecraft;noRender:Z", opcode = Opcodes.GETFIELD)) + private boolean skipRendering(boolean original) { + return original || !DynamicFPSMod.checkForRender(); } /**