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/io | |
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/io')
4 files changed, 77 insertions, 47 deletions
diff --git a/src/main/java/com/dulkirfabric/mixin/io/HandledScreenMixin.java b/src/main/java/com/dulkirfabric/mixin/io/HandledScreenMixin.java deleted file mode 100644 index dbf8dbd..0000000 --- a/src/main/java/com/dulkirfabric/mixin/io/HandledScreenMixin.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.dulkirfabric.mixin.io; - -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/io/KeyboardMixin.java b/src/main/java/com/dulkirfabric/mixin/io/KeyboardMixin.java new file mode 100644 index 0000000..47decc6 --- /dev/null +++ b/src/main/java/com/dulkirfabric/mixin/io/KeyboardMixin.java @@ -0,0 +1,16 @@ +package com.dulkirfabric.mixin.io; + +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(); + } +} diff --git a/src/main/java/com/dulkirfabric/mixin/io/MouseMixin.java b/src/main/java/com/dulkirfabric/mixin/io/MouseMixin.java new file mode 100644 index 0000000..76dd828 --- /dev/null +++ b/src/main/java/com/dulkirfabric/mixin/io/MouseMixin.java @@ -0,0 +1,43 @@ +package com.dulkirfabric.mixin.io; + +import com.dulkirfabric.features.InventoryScale; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import net.minecraft.client.Mouse; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(Mouse.class) +public class MouseMixin { + + @ModifyExpressionValue(method = "onMouseButton", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getScaledWidth()I")) + public int onMouseButtonWidth(int originalScaledWidth) { + return (int) (originalScaledWidth / InventoryScale.INSTANCE.getScale()); + } + + @ModifyExpressionValue(method = "onMouseButton", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getScaledHeight()I")) + public int onMouseButtonHeight(int originalScaledHeight) { + return (int) (originalScaledHeight / InventoryScale.INSTANCE.getScale()); + } + + @ModifyExpressionValue(method = "onCursorPos", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getScaledWidth()I")) + public int onCursorPosWidth(int originalScaledWidth) { + return (int) (originalScaledWidth / InventoryScale.INSTANCE.getScale()); + } + + @ModifyExpressionValue(method = "onCursorPos", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getScaledHeight()I")) + public int onCursorPosHeight(int originalScaledHeight) { + return (int) (originalScaledHeight / InventoryScale.INSTANCE.getScale()); + } + + @ModifyExpressionValue(method = "onMouseScroll", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getScaledWidth()I")) + public int onMouseScrollWidth(int originalScaledWidth) { + return (int) (originalScaledWidth / InventoryScale.INSTANCE.getScale()); + } + + @ModifyExpressionValue(method = "onMouseScroll", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getScaledHeight()I")) + public int onMouseScrollHeight(int originalScaledHeight) { + return (int) (originalScaledHeight / InventoryScale.INSTANCE.getScale()); + } + +} + diff --git a/src/main/java/com/dulkirfabric/mixin/io/SoundSystemMixin.java b/src/main/java/com/dulkirfabric/mixin/io/SoundSystemMixin.java new file mode 100644 index 0000000..e28d133 --- /dev/null +++ b/src/main/java/com/dulkirfabric/mixin/io/SoundSystemMixin.java @@ -0,0 +1,18 @@ +package com.dulkirfabric.mixin.io; + +import com.dulkirfabric.events.PlaySoundEvent; +import net.minecraft.client.sound.SoundInstance; +import net.minecraft.client.sound.SoundSystem; +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(SoundSystem.class) +public class SoundSystemMixin { + + @Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/sound/SoundInstance;getSound()Lnet/minecraft/client/sound/Sound;"), cancellable = true) + public void onSound(SoundInstance sound, CallbackInfo ci) { + if (new PlaySoundEvent(sound).post()) ci.cancel(); + } +} |