diff --git a/common/src/main/java/com/github/dimadencep/mods/rrls/duck/OverlayExtender.java b/common/src/main/java/com/github/dimadencep/mods/rrls/duck/OverlayExtender.java index 34ddd2d..5a418cb 100644 --- a/common/src/main/java/com/github/dimadencep/mods/rrls/duck/OverlayExtender.java +++ b/common/src/main/java/com/github/dimadencep/mods/rrls/duck/OverlayExtender.java @@ -15,13 +15,10 @@ @SuppressWarnings("unused") public interface OverlayExtender { - default OverlayHelper.State rrls$getState() { - return OverlayHelper.State.DEFAULT; - } - - default void rrls$setState(OverlayHelper.State state) { - } + OverlayHelper.State rrls$getState(); + void rrls$setState(OverlayHelper.State state); default void rrls$miniRender(DrawContext context) { + throw new UnsupportedOperationException("The '" + getClass().getCanonicalName() + "' overlay doesn't have a mini-render!"); } } diff --git a/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/SplashOverlayMixin.java b/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/SplashOverlayMixin.java index 74570ba..11237fb 100644 --- a/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/SplashOverlayMixin.java +++ b/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/SplashOverlayMixin.java @@ -39,8 +39,6 @@ @Mixin(SplashOverlay.class) public abstract class SplashOverlayMixin extends Overlay { - @Unique - public OverlayHelper.State rrls$state = OverlayHelper.State.DEFAULT; @Shadow public float progress; @Shadow @@ -57,17 +55,7 @@ public abstract class SplashOverlayMixin extends Overlay { ) ) private void rrls$init(MinecraftClient client, ResourceReload monitor, Consumer> exceptionHandler, boolean reloading, CallbackInfo ci) { - this.rrls$state = OverlayHelper.lookupState(client.currentScreen, reloading); - } - - @Override - public OverlayHelper.State rrls$getState() { - return this.rrls$state; - } - - @Override - public void rrls$setState(OverlayHelper.State state) { - rrls$state = state; + rrls$setState(OverlayHelper.lookupState(client.currentScreen, reloading)); } @Override @@ -97,8 +85,8 @@ public abstract class SplashOverlayMixin extends Overlay { ) ) public void rrls$render(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { - if (rrls$state != OverlayHelper.State.DEFAULT) // Update attach (Optifine ❤️) - this.rrls$state = OverlayHelper.lookupState(client.currentScreen, this.rrls$state != OverlayHelper.State.WAIT); + if (rrls$getState() != OverlayHelper.State.DEFAULT) // Update attach (Optifine ❤️) + rrls$setState(OverlayHelper.lookupState(client.currentScreen, rrls$getState() != OverlayHelper.State.WAIT)); } @WrapWithCondition( @@ -182,7 +170,7 @@ public abstract class SplashOverlayMixin extends Overlay { ); } - if (ConfigExpectPlatform.rgbProgress() && this.rrls$state != OverlayHelper.State.DEFAULT) { + if (ConfigExpectPlatform.rgbProgress() && rrls$getState() != OverlayHelper.State.DEFAULT) { int baseColor = ThreadLocalRandom.current().nextInt(0, 0xFFFFFF); return ColorHelper.Argb.getArgb( diff --git a/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/compat/GameRendererMixin.java b/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/compat/GameRendererMixin.java index 931bd1f..aeb9539 100644 --- a/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/compat/GameRendererMixin.java +++ b/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/compat/GameRendererMixin.java @@ -11,6 +11,7 @@ package com.github.dimadencep.mods.rrls.mixins.compat; import com.github.dimadencep.mods.rrls.ConfigExpectPlatform; +import com.github.dimadencep.mods.rrls.Rrls; import com.github.dimadencep.mods.rrls.utils.DummyDrawContext; import com.github.dimadencep.mods.rrls.utils.OverlayHelper; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; @@ -58,9 +59,14 @@ public class GameRendererMixin { ) ) public void rrls$miniRender(float tickDelta, long startTime, boolean tick, CallbackInfo ci, @Local(ordinal = 0) DrawContext drawContext) { - Overlay overlay = this.client.getOverlay(); + try { + Overlay overlay = this.client.getOverlay(); - if (ConfigExpectPlatform.miniRender() && OverlayHelper.isRenderingState(overlay)) - overlay.rrls$miniRender(drawContext); + if (ConfigExpectPlatform.miniRender() && OverlayHelper.isRenderingState(overlay)) + overlay.rrls$miniRender(drawContext); + + } catch (RuntimeException ex) { + Rrls.LOGGER.error(ex); + } } } diff --git a/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/compat/OverlayMixin.java b/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/compat/OverlayMixin.java index 5e50a46..7a791e3 100644 --- a/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/compat/OverlayMixin.java +++ b/common/src/main/java/com/github/dimadencep/mods/rrls/mixins/compat/OverlayMixin.java @@ -11,13 +11,28 @@ package com.github.dimadencep.mods.rrls.mixins.compat; import com.github.dimadencep.mods.rrls.duck.OverlayExtender; +import com.github.dimadencep.mods.rrls.utils.OverlayHelper; import com.llamalad7.mixinextras.injector.ModifyReturnValue; import net.minecraft.client.gui.screen.Overlay; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @Mixin(Overlay.class) public class OverlayMixin implements OverlayExtender { + @Unique + public OverlayHelper.State rrls$state = OverlayHelper.State.DEFAULT; + + @Override + public OverlayHelper.State rrls$getState() { + return rrls$state; + } + + @Override + public void rrls$setState(OverlayHelper.State state) { + this.rrls$state = state; + } + @ModifyReturnValue( method = "pausesGame", at = @At(