diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000..171157c Binary files /dev/null and b/assets/icon.png differ diff --git a/src/main/java/dev/isxander/controlify/compatibility/yacl/YACLScreenProcessor.java b/src/main/java/dev/isxander/controlify/compatibility/yacl/YACLScreenProcessor.java index e25c93c..cbe5cb8 100644 --- a/src/main/java/dev/isxander/controlify/compatibility/yacl/YACLScreenProcessor.java +++ b/src/main/java/dev/isxander/controlify/compatibility/yacl/YACLScreenProcessor.java @@ -1,9 +1,7 @@ package dev.isxander.controlify.compatibility.yacl; -import dev.isxander.controlify.api.buttonguide.ButtonGuideApi; -import dev.isxander.controlify.api.buttonguide.ButtonGuidePredicate; -import dev.isxander.controlify.api.buttonguide.ButtonRenderPosition; import dev.isxander.controlify.controller.Controller; +import dev.isxander.controlify.mixins.compat.yacl.YACLScreenCategoryTabAccessor; import dev.isxander.controlify.screenop.ScreenProcessor; import dev.isxander.yacl.gui.YACLScreen; @@ -15,9 +13,10 @@ public class YACLScreenProcessor extends ScreenProcessor { @Override protected void handleButtons(Controller controller) { if (controller.bindings().GUI_ABSTRACT_ACTION_1.justPressed()) { + if (screen.tabManager.getCurrentTab() instanceof YACLScreen.CategoryTab categoryTab) { + ((YACLScreenCategoryTabAccessor) categoryTab).getSaveFinishedButton().onPress(); + } playClackSound(); -// if (screen.tabManager.getCurrentTab() instanceof ) -// screen.finishedSaveButton.onPress(); } super.handleButtons(controller); diff --git a/src/main/java/dev/isxander/controlify/mixins/compat/yacl/YACLScreenCategoryTabAccessor.java b/src/main/java/dev/isxander/controlify/mixins/compat/yacl/YACLScreenCategoryTabAccessor.java new file mode 100644 index 0000000..367520f --- /dev/null +++ b/src/main/java/dev/isxander/controlify/mixins/compat/yacl/YACLScreenCategoryTabAccessor.java @@ -0,0 +1,12 @@ +package dev.isxander.controlify.mixins.compat.yacl; + +import dev.isxander.yacl.gui.YACLScreen; +import net.minecraft.client.gui.components.Button; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(YACLScreen.CategoryTab.class) +public interface YACLScreenCategoryTabAccessor { + @Accessor + Button getSaveFinishedButton(); +} diff --git a/src/main/java/dev/isxander/controlify/mixins/compat/yacl/YACLScreenCategoryTabMixin.java b/src/main/java/dev/isxander/controlify/mixins/compat/yacl/YACLScreenCategoryTabMixin.java new file mode 100644 index 0000000..442d5ed --- /dev/null +++ b/src/main/java/dev/isxander/controlify/mixins/compat/yacl/YACLScreenCategoryTabMixin.java @@ -0,0 +1,24 @@ +package dev.isxander.controlify.mixins.compat.yacl; + +import dev.isxander.controlify.api.buttonguide.ButtonGuideApi; +import dev.isxander.controlify.api.buttonguide.ButtonGuidePredicate; +import dev.isxander.controlify.api.buttonguide.ButtonRenderPosition; +import dev.isxander.yacl.api.ConfigCategory; +import dev.isxander.yacl.gui.YACLScreen; +import net.minecraft.client.gui.components.Button; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(YACLScreen.CategoryTab.class) +public class YACLScreenCategoryTabMixin { + @Shadow @Final private Button saveFinishedButton; + + @Inject(method = "", at = @At("RETURN")) + private void onConstructCategory(YACLScreen this$0, ConfigCategory category, CallbackInfo ci) { + ButtonGuideApi.addGuideToButton(saveFinishedButton, bindings -> bindings.GUI_ABSTRACT_ACTION_1, ButtonRenderPosition.TEXT, ButtonGuidePredicate.ALWAYS); + } +} diff --git a/src/main/resources/controlify.mixins.json b/src/main/resources/controlify.mixins.json index 20836c1..55c00f5 100644 --- a/src/main/resources/controlify.mixins.json +++ b/src/main/resources/controlify.mixins.json @@ -24,6 +24,8 @@ "compat.sodium.SodiumOptionsGUIMixin", "compat.yacl.CyclingControllerElementMixin", "compat.yacl.SliderControllerElementMixin", + "compat.yacl.YACLScreenCategoryTabAccessor", + "compat.yacl.YACLScreenCategoryTabMixin", "compat.yacl.YACLScreenMixin", "core.ClientPacketListenerMixin", "core.GuiMixin",