diff --git a/src/main/java/dev/isxander/controlify/mixins/feature/accessibility/LocalPlayerMixin.java b/src/main/java/dev/isxander/controlify/mixins/feature/accessibility/LocalPlayerMixin.java index a1a8a24..ca4f0d8 100644 --- a/src/main/java/dev/isxander/controlify/mixins/feature/accessibility/LocalPlayerMixin.java +++ b/src/main/java/dev/isxander/controlify/mixins/feature/accessibility/LocalPlayerMixin.java @@ -1,8 +1,8 @@ package dev.isxander.controlify.mixins.feature.accessibility; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import dev.isxander.controlify.Controlify; import dev.isxander.controlify.InputMode; +import dev.isxander.controlify.api.ControlifyApi; import net.minecraft.client.player.LocalPlayer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -11,8 +11,10 @@ import org.spongepowered.asm.mixin.injection.At; public class LocalPlayerMixin { @ModifyExpressionValue(method = "sendPosition", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/OptionInstance;get()Ljava/lang/Object;")) private Object shouldUseAutoJump(Object keyboardAutoJump) { - if (Controlify.instance().currentInputMode() == InputMode.CONTROLLER) { - return Controlify.instance().currentController().config().autoJump; + if (ControlifyApi.get().currentInputMode() == InputMode.CONTROLLER) { + return ControlifyApi.get().getCurrentController() + .map(controller -> controller.config().autoJump) + .orElse(false); } return keyboardAutoJump; } diff --git a/src/main/java/dev/isxander/controlify/mixins/feature/chatkbheight/ChatScreenMixin.java b/src/main/java/dev/isxander/controlify/mixins/feature/chatkbheight/ChatScreenMixin.java index 2268ed9..0324808 100644 --- a/src/main/java/dev/isxander/controlify/mixins/feature/chatkbheight/ChatScreenMixin.java +++ b/src/main/java/dev/isxander/controlify/mixins/feature/chatkbheight/ChatScreenMixin.java @@ -1,7 +1,7 @@ package dev.isxander.controlify.mixins.feature.chatkbheight; import dev.isxander.controlify.Controlify; -import dev.isxander.controlify.controller.Controller; +import dev.isxander.controlify.api.ControlifyApi; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.ChatScreen; import net.minecraft.client.gui.screens.Screen; @@ -22,8 +22,9 @@ public abstract class ChatScreenMixin extends Screen { private void translateRender(GuiGraphics graphics, int mouseX, int mouseY, float delta, CallbackInfo ci) { graphics.pose().pushPose(); - Controller controller = Controlify.instance().currentController(); - graphics.pose().translate(0, -controller.config().chatKeyboardHeight * this.height, 0); + Controlify.instance().getCurrentController().ifPresent(c -> { + graphics.pose().translate(0, -c.config().chatKeyboardHeight * this.height, 0); + }); } @Inject(method = "render", at = @At("TAIL")) @@ -33,7 +34,7 @@ public abstract class ChatScreenMixin extends Screen { @ModifyVariable(method = "mouseClicked", at = @At("HEAD"), ordinal = 1, argsOnly = true) private double modifyClickY(double original) { - Controller controller = Controlify.instance().currentController(); - return original + controller.config().chatKeyboardHeight * this.height; + float yOffset = ControlifyApi.get().getCurrentController().map(c -> c.config().chatKeyboardHeight * this.height).orElse(0f); + return original + yOffset; } } diff --git a/src/main/java/dev/isxander/controlify/mixins/feature/guide/ingame/ClientPacketListenerMixin.java b/src/main/java/dev/isxander/controlify/mixins/feature/guide/ingame/ClientPacketListenerMixin.java index 274bb48..c9848fa 100644 --- a/src/main/java/dev/isxander/controlify/mixins/feature/guide/ingame/ClientPacketListenerMixin.java +++ b/src/main/java/dev/isxander/controlify/mixins/feature/guide/ingame/ClientPacketListenerMixin.java @@ -31,6 +31,6 @@ public class ClientPacketListenerMixin { private void initButtonGuide() { if (Controlify.instance().currentInputMode() == InputMode.CONTROLLER && minecraft.player != null) - Controlify.instance().inGameButtonGuide = new InGameButtonGuide(Controlify.instance().currentController(), minecraft.player); + Controlify.instance().inGameButtonGuide = new InGameButtonGuide(Controlify.instance().getCurrentController().orElseThrow(), minecraft.player); } } diff --git a/src/main/java/dev/isxander/controlify/mixins/feature/guide/ingame/GuiMixin.java b/src/main/java/dev/isxander/controlify/mixins/feature/guide/ingame/GuiMixin.java index d1faf8b..5eed7d5 100644 --- a/src/main/java/dev/isxander/controlify/mixins/feature/guide/ingame/GuiMixin.java +++ b/src/main/java/dev/isxander/controlify/mixins/feature/guide/ingame/GuiMixin.java @@ -1,6 +1,5 @@ package dev.isxander.controlify.mixins.feature.guide.ingame; -import com.mojang.blaze3d.vertex.PoseStack; import dev.isxander.controlify.Controlify; import dev.isxander.controlify.gui.guide.InGameButtonGuide; import net.minecraft.client.Minecraft; diff --git a/src/main/java/dev/isxander/controlify/mixins/feature/guide/screen/AbstractButtonMixin.java b/src/main/java/dev/isxander/controlify/mixins/feature/guide/screen/AbstractButtonMixin.java index ba7f42e..94f99fa 100644 --- a/src/main/java/dev/isxander/controlify/mixins/feature/guide/screen/AbstractButtonMixin.java +++ b/src/main/java/dev/isxander/controlify/mixins/feature/guide/screen/AbstractButtonMixin.java @@ -67,7 +67,7 @@ public abstract class AbstractButtonMixin extends AbstractWidgetMixin implements return renderData != null && this.isActive() && Controlify.instance().currentInputMode() == InputMode.CONTROLLER - && Controlify.instance().currentController().config().showScreenGuide + && Controlify.instance().getCurrentController().map(c -> c.config().showScreenGuide).orElse(false) && !renderData.binding().apply(Controlify.instance().currentController().bindings()).isUnbound() && renderData.renderPredicate().shouldDisplay((AbstractButton) (Object) this); } diff --git a/src/main/java/dev/isxander/controlify/mixins/feature/guide/screen/TabNavigationBarMixin.java b/src/main/java/dev/isxander/controlify/mixins/feature/guide/screen/TabNavigationBarMixin.java index c3d0533..8046fa5 100644 --- a/src/main/java/dev/isxander/controlify/mixins/feature/guide/screen/TabNavigationBarMixin.java +++ b/src/main/java/dev/isxander/controlify/mixins/feature/guide/screen/TabNavigationBarMixin.java @@ -26,10 +26,11 @@ public class TabNavigationBarMixin { @Inject(method = "render", at = @At("RETURN")) private void renderControllerButtonOverlay(GuiGraphics graphics, int mouseX, int mouseY, float delta, CallbackInfo ci) { if (Controlify.instance().currentInputMode() == InputMode.CONTROLLER) { - var controller = Controlify.instance().currentController(); - if (controller.config().showScreenGuide) { - this.renderControllerButtonOverlay(graphics, controller); - } + Controlify.instance().getCurrentController().ifPresent(c -> { + if (c.config().showScreenGuide) { + this.renderControllerButtonOverlay(graphics, c); + } + }); } }