From 334d5083282b02da9c0ee3b07cc723b0407c99ed Mon Sep 17 00:00:00 2001 From: PolishKrowa Date: Sat, 27 Mar 2021 23:08:04 -0400 Subject: [PATCH] Changelog: - Adding the Ctrl override in inventories --- gradle.properties | 2 +- .../ctrlq/mixin/MixinHandledScreen.java | 29 +++++++++++++++++++ src/main/resources/ctrl-q.mixins.json | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/main/java/me/polishkrowa/ctrlq/mixin/MixinHandledScreen.java diff --git a/gradle.properties b/gradle.properties index 44d3a58..95407cf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.16.5 yarn_mappings=1.16.5+build.5 loader_version=0.11.2 # Mod Properties -mod_version=1.1 +mod_version=1.2 maven_group=me.PolishKrowa archives_base_name=ctrl-q # Dependencies diff --git a/src/main/java/me/polishkrowa/ctrlq/mixin/MixinHandledScreen.java b/src/main/java/me/polishkrowa/ctrlq/mixin/MixinHandledScreen.java new file mode 100644 index 0000000..b6412de --- /dev/null +++ b/src/main/java/me/polishkrowa/ctrlq/mixin/MixinHandledScreen.java @@ -0,0 +1,29 @@ +package me.polishkrowa.ctrlq.mixin; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.util.InputUtil; +import net.minecraft.screen.slot.Slot; +import net.minecraft.screen.slot.SlotActionType; +import org.jetbrains.annotations.Nullable; +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.CallbackInfoReturnable; + +@Mixin(HandledScreen.class) +public class MixinHandledScreen { + @Shadow @Nullable public Slot focusedSlot; + + @Inject(method = "keyPressed", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/HandledScreen;hasControlDown()Z"), cancellable = true) + private void injected(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable cir) { + this.onMouseClick(this.focusedSlot, this.focusedSlot.id, InputUtil.isKeyPressed(MinecraftClient.getInstance().getWindow().getHandle(), 341) || InputUtil.isKeyPressed(MinecraftClient.getInstance().getWindow().getHandle(), 345) ? 1 : 0, SlotActionType.THROW); + + cir.setReturnValue(true); + } + + @Shadow(aliases = {"onMouseClick"}) + private void onMouseClick(Slot focusedSlot, int id, int i, SlotActionType aThrow) {} + +} diff --git a/src/main/resources/ctrl-q.mixins.json b/src/main/resources/ctrl-q.mixins.json index 2c8e5c7..e654604 100644 --- a/src/main/resources/ctrl-q.mixins.json +++ b/src/main/resources/ctrl-q.mixins.json @@ -5,7 +5,7 @@ "compatibilityLevel": "JAVA_8", "mixins": [ ], - "client": ["MixinMinecraftClient"], + "client": ["MixinMinecraftClient","MixinHandledScreen"], "injectors": { "defaultRequire": 1 }