From 08931e9739e1473df10e82630d94a44a4f213f50 Mon Sep 17 00:00:00 2001 From: isXander Date: Wed, 1 Feb 2023 23:16:34 +0000 Subject: [PATCH] fix list components not scrolling from controller navigation --- .../vanilla/AbstractSelectionListMixin.java | 16 ++++++++++++++++ src/main/resources/controlify.mixins.json | 9 +++++---- 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 src/main/java/dev/isxander/controlify/mixins/compat/screen/vanilla/AbstractSelectionListMixin.java diff --git a/src/main/java/dev/isxander/controlify/mixins/compat/screen/vanilla/AbstractSelectionListMixin.java b/src/main/java/dev/isxander/controlify/mixins/compat/screen/vanilla/AbstractSelectionListMixin.java new file mode 100644 index 0000000..1344c29 --- /dev/null +++ b/src/main/java/dev/isxander/controlify/mixins/compat/screen/vanilla/AbstractSelectionListMixin.java @@ -0,0 +1,16 @@ +package dev.isxander.controlify.mixins.compat.screen.vanilla; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import dev.isxander.controlify.Controlify; +import dev.isxander.controlify.InputMode; +import net.minecraft.client.gui.components.AbstractSelectionList; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(AbstractSelectionList.class) +public class AbstractSelectionListMixin { + @ModifyExpressionValue(method = "setFocused", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/InputType;isKeyboard()Z")) + private boolean shouldEnsureEntryVisible(boolean keyboard) { + return keyboard || Controlify.getInstance().getCurrentInputMode() == InputMode.CONTROLLER; + } +} diff --git a/src/main/resources/controlify.mixins.json b/src/main/resources/controlify.mixins.json index 5c3ee34..97c3c56 100644 --- a/src/main/resources/controlify.mixins.json +++ b/src/main/resources/controlify.mixins.json @@ -7,14 +7,15 @@ ], "client": [ "compat.screen.vanilla.AbstractContainerEventHandlerMixin", + "compat.screen.vanilla.AbstractSelectionListMixin", "compat.screen.vanilla.AbstractSliderButtonMixin", - "core.ClientPacketListenerMixin", "compat.screen.vanilla.ContainerObjectSelectionListEntryMixin", + "compat.screen.vanilla.ScreenAccessor", + "compat.screen.vanilla.ScreenMixin", + "core.ClientPacketListenerMixin", "core.KeyboardHandlerMixin", - "feature.bind.KeyMappingAccessor", "core.MinecraftMixin", "core.MouseHandlerMixin", - "compat.screen.vanilla.ScreenAccessor", - "compat.screen.vanilla.ScreenMixin" + "feature.bind.KeyMappingAccessor" ] }