diff options
author | inglettronald <inglettronald@gmail.com> | 2023-06-09 16:55:24 -0500 |
---|---|---|
committer | inglettronald <inglettronald@gmail.com> | 2023-06-09 16:55:24 -0500 |
commit | c0eb625a9b937bcb9256e98afb80d32443daa795 (patch) | |
tree | 3b1056bb17a50faabce65ee62a763050bb636741 /src/main/java/com/dulkirfabric/mixin | |
parent | 88a2da60ac3a074dd93fa13f262775b05573548f (diff) | |
download | DulkirMod-Fabric-c0eb625a9b937bcb9256e98afb80d32443daa795.tar.gz DulkirMod-Fabric-c0eb625a9b937bcb9256e98afb80d32443daa795.tar.bz2 DulkirMod-Fabric-c0eb625a9b937bcb9256e98afb80d32443daa795.zip |
1.20 refactor
Diffstat (limited to 'src/main/java/com/dulkirfabric/mixin')
3 files changed, 65 insertions, 0 deletions
diff --git a/src/main/java/com/dulkirfabric/mixin/io/HandledScreenMixin.java b/src/main/java/com/dulkirfabric/mixin/io/HandledScreenMixin.java new file mode 100644 index 0000000..430faa0 --- /dev/null +++ b/src/main/java/com/dulkirfabric/mixin/io/HandledScreenMixin.java @@ -0,0 +1,48 @@ +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 net.minecraft.screen.slot.SlotActionType; +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/ScreenMixin.java b/src/main/java/com/dulkirfabric/mixin/render/ScreenMixin.java index a29cfbc..56ed0f9 100644 --- a/src/main/java/com/dulkirfabric/mixin/render/ScreenMixin.java +++ b/src/main/java/com/dulkirfabric/mixin/render/ScreenMixin.java @@ -13,6 +13,7 @@ package com.dulkirfabric.mixin.render; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Drawable; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.Selectable; @@ -20,10 +21,18 @@ import net.minecraft.client.gui.screen.Screen; 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(Screen.class) public abstract class ScreenMixin { @Shadow protected abstract <T extends Element & Drawable & Selectable> T addDrawableChild(T drawableElement); + + @Inject(method = "resize", at = @At("HEAD")) + private void beforeResizeScreen(MinecraftClient client, int width, int height, CallbackInfo ci) { + + } }
\ No newline at end of file diff --git a/src/main/java/com/dulkirfabric/mixin/render/TooltipMixin.java b/src/main/java/com/dulkirfabric/mixin/render/TooltipMixin.java new file mode 100644 index 0000000..b484885 --- /dev/null +++ b/src/main/java/com/dulkirfabric/mixin/render/TooltipMixin.java @@ -0,0 +1,8 @@ +package com.dulkirfabric.mixin.render; + +import net.minecraft.client.gui.tooltip.Tooltip; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(Tooltip.class) +public class TooltipMixin { +} |