Skip to content
This repository was archived by the owner on Jun 3, 2024. It is now read-only.

Commit be43547

Browse files
committed
key pressed and released
1 parent 923bee8 commit be43547

3 files changed

Lines changed: 64 additions & 0 deletions

File tree

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.patchworkmc.mixin.rendering;
2+
3+
import net.minecraftforge.client.event.GuiScreenEvent;
4+
import net.minecraftforge.common.MinecraftForge;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.Shadow;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Inject;
9+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
10+
11+
import net.minecraft.client.Keyboard;
12+
import net.minecraft.client.gui.ParentElement;
13+
import net.minecraft.client.gui.screen.Screen;
14+
15+
@Mixin(Keyboard.class)
16+
public abstract class MixinKeyboard {
17+
@Shadow
18+
private boolean repeatEvents;
19+
20+
@Inject(method = "method_1454", at = @At("HEAD"), cancellable = true)
21+
public void preKeyEvent(int i, boolean[] bls, ParentElement element, int key, int scanCode, int j, CallbackInfo info) {
22+
if (i != 1 && (i != 2 || !this.repeatEvents)) {
23+
if (i == 0) {
24+
if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardKeyReleasedEvent.Pre((Screen) element, key, scanCode, j))) {
25+
bls[0] = true;
26+
info.cancel();
27+
}
28+
}
29+
} else {
30+
if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardKeyPressedEvent.Pre((Screen) element, key, scanCode, j))) {
31+
bls[0] = true;
32+
info.cancel();
33+
}
34+
}
35+
}
36+
37+
@Inject(method = "method_1454", at = @At("RETURN"))
38+
public void postKeyEvent(int i, boolean[] bls, ParentElement element, int key, int scanCode, int j, CallbackInfo info) {
39+
if (bls[0]) {
40+
return;
41+
}
42+
43+
if (i != 1 && (i != 2 || !this.repeatEvents)) {
44+
if (i == 0) {
45+
if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardKeyReleasedEvent.Post((Screen) element, key, scanCode, j))) {
46+
bls[0] = true;
47+
}
48+
}
49+
} else {
50+
if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardKeyPressedEvent.Post((Screen) element, key, scanCode, j))) {
51+
bls[0] = true;
52+
}
53+
}
54+
}
55+
}

patchwork-rendering/src/main/java/com/patchworkmc/mixin/rendering/MixinMouse.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ public void preMouseClicked(boolean[] bls, double d, double e, int button, Callb
6161

6262
@Inject(method = "method_1611", at = @At("RETURN"), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true)
6363
public void postMouseClicked(boolean[] bls, double d, double e, int button, CallbackInfo info) {
64+
if (bls[0]) {
65+
return;
66+
}
67+
6468
if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.MouseClickedEvent.Post(client.currentScreen, d, e, button))) {
6569
bls[0] = true;
6670
info.cancel();
@@ -77,6 +81,10 @@ public void preMouseReleased(boolean[] bls, double d, double e, int button, Call
7781

7882
@Inject(method = "method_1605", at = @At("RETURN"), locals = LocalCapture.CAPTURE_FAILHARD)
7983
public void postMouseReleased(boolean[] bls, double d, double e, int button, CallbackInfo info) {
84+
if (bls[0]) {
85+
return;
86+
}
87+
8088
if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.MouseReleasedEvent.Post(client.currentScreen, d, e, button))) {
8189
bls[0] = true;
8290
info.cancel();

patchwork-rendering/src/main/resources/patchwork-rendering.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"mixins": [
66
"MixinAbstractInventoryScreen",
77
"MixinGameRenderer",
8+
"MixinKeyboard",
89
"MixinMouse",
910
"MixinScreen"
1011
],

0 commit comments

Comments
 (0)