diff options
author | inglettronald <inglettronald@gmail.com> | 2023-07-21 19:09:59 -0500 |
---|---|---|
committer | inglettronald <inglettronald@gmail.com> | 2023-07-21 19:09:59 -0500 |
commit | e3f9d34e8ad5ff1effcba2cc39c7f375edaab115 (patch) | |
tree | 3df811af120ae607bdf46b230022979bd8331921 /src/main/java/com/dulkirfabric/mixin/render | |
parent | c53d33258ac48cd89883d5f27f380a7d30e561cb (diff) | |
download | DulkirMod-Fabric-e3f9d34e8ad5ff1effcba2cc39c7f375edaab115.tar.gz DulkirMod-Fabric-e3f9d34e8ad5ff1effcba2cc39c7f375edaab115.tar.bz2 DulkirMod-Fabric-e3f9d34e8ad5ff1effcba2cc39c7f375edaab115.zip |
Organization
Diffstat (limited to 'src/main/java/com/dulkirfabric/mixin/render')
-rw-r--r-- | src/main/java/com/dulkirfabric/mixin/render/HandledScreenMixin.java | 47 | ||||
-rw-r--r-- | src/main/java/com/dulkirfabric/mixin/render/KeyboardMixin.java | 16 |
2 files changed, 47 insertions, 16 deletions
diff --git a/src/main/java/com/dulkirfabric/mixin/render/HandledScreenMixin.java b/src/main/java/com/dulkirfabric/mixin/render/HandledScreenMixin.java new file mode 100644 index 0000000..97d9552 --- /dev/null +++ b/src/main/java/com/dulkirfabric/mixin/render/HandledScreenMixin.java @@ -0,0 +1,47 @@ +package com.dulkirfabric.mixin.render; + +import com.dulkirfabric.events.InventoryKeyPressEvent; +import com.dulkirfabric.events.SlotRenderEvent; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.screen.slot.Slot; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +@Mixin(HandledScreen.class) +public class HandledScreenMixin { + @Inject(method = "keyPressed", at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/gui/screen/ingame/HandledScreen;handleHotbarKeyPressed(II)Z", + shift = At.Shift.BEFORE), cancellable = true) + public void onKeyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable<Boolean> cir) { + if (new InventoryKeyPressEvent(keyCode, scanCode, modifiers).post()) { + cir.setReturnValue(true); + } + } + + /**@Inject(method = "onMouseClick(Lnet/minecraft/screen/slot/Slot;IILnet/minecraft/screen/slot/SlotActionType;)V", + at = @At("HEAD"), cancellable = true) + public void onMouseClickedSlot(Slot slot, int slotId, int button, SlotActionType actionType, CallbackInfo ci) { + if (IsSlotProtectedEvent.shouldBlockInteraction(slot)) { + ci.cancel(); + } + }*/ + + @Inject(method = "render", at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/gui/screen/ingame/HandledScreen;drawSlot(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/screen/slot/Slot;)V", + shift = At.Shift.AFTER), locals = LocalCapture.CAPTURE_FAILHARD) + public void onAfterDrawSlot(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci, int i, int j, int k, Slot slot) { + SlotRenderEvent.After event = new SlotRenderEvent.After(context, slot, mouseX, mouseY, delta); + event.post(); + } + + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/HandledScreen;drawSlot(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/screen/slot/Slot;)V", shift = At.Shift.BEFORE), locals = LocalCapture.CAPTURE_FAILHARD) + public void onBeforeDrawSlot(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci, int i, int j, int k, Slot slot) { + SlotRenderEvent.Before event = new SlotRenderEvent.Before(context, slot, mouseX, mouseY, delta); + event.post(); + } +} diff --git a/src/main/java/com/dulkirfabric/mixin/render/KeyboardMixin.java b/src/main/java/com/dulkirfabric/mixin/render/KeyboardMixin.java deleted file mode 100644 index c2c5a45..0000000 --- a/src/main/java/com/dulkirfabric/mixin/render/KeyboardMixin.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dulkirfabric.mixin.render; - -import com.dulkirfabric.events.WorldKeyPressEvent; -import net.minecraft.client.Keyboard; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(Keyboard.class) -public class KeyboardMixin { - @Inject(method = "onKey", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/option/KeyBinding;onKeyPressed(Lnet/minecraft/client/util/InputUtil$Key;)V")) - public void onKeyBoardInWorld(long window, int key, int scancode, int action, int modifiers, CallbackInfo ci) { - new WorldKeyPressEvent(key, scancode, modifiers).post(); - } -} |