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

Commit e2eedd3

Browse files
authored
Merge pull request #41 from shedaniel/master
we fix double char
2 parents a31d6ac + a54a781 commit e2eedd3

2 files changed

Lines changed: 15 additions & 8 deletions

File tree

patchwork-gui/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
archivesBaseName = "patchwork-gui"
2-
version = getSubprojectVersion(project, "0.1.0")
2+
version = getSubprojectVersion(project, "0.1.1")
33

44
dependencies {
55
compile project(path: ':patchwork-fml', configuration: 'dev')

patchwork-gui/src/main/java/com/patchworkmc/mixin/gui/MixinKeyboard.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.spongepowered.asm.mixin.Shadow;
2626
import org.spongepowered.asm.mixin.injection.At;
2727
import org.spongepowered.asm.mixin.injection.Inject;
28+
import org.spongepowered.asm.mixin.injection.Redirect;
2829
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
2930

3031
import net.minecraft.client.Keyboard;
@@ -74,20 +75,26 @@ private void postKeyEvent(int i, boolean[] bls, ParentElement element, int key,
7475
}
7576

7677
@Inject(method = "method_1458", at = @At("HEAD"), cancellable = true)
77-
private static void charEvent(Element element, int character, int mods, CallbackInfo info) {
78+
private static void preCharTyped(Element element, int character, int mods, CallbackInfo info) {
7879
if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Pre((Screen) element, (char) character, mods))) {
7980
info.cancel();
80-
} else if (!element.charTyped((char) character, mods)) {
81-
MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Post((Screen) element, (char) character, mods));
8281
}
8382
}
8483

84+
@Redirect(method = "method_1458", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Element;charTyped(CI)Z"))
85+
private static boolean charTyped(Element element, char character, int mods) {
86+
return element.charTyped(character, mods) || MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Post((Screen) element, character, mods));
87+
}
88+
8589
@Inject(method = "method_1473", at = @At("HEAD"), cancellable = true)
86-
private static void charEvent(Element element, char character, int mods, CallbackInfo info) {
87-
if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Pre((Screen) element, character, mods))) {
90+
private static void preCharTyped(Element element, char character, int mods, CallbackInfo info) {
91+
if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Pre((Screen) element, (char) character, mods))) {
8892
info.cancel();
89-
} else if (!element.charTyped(character, mods)) {
90-
MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Post((Screen) element, character, mods));
9193
}
9294
}
95+
96+
@Redirect(method = "method_1473", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Element;charTyped(CI)Z"))
97+
private static boolean charTyped2(Element element, char character, int mods) {
98+
return element.charTyped(character, mods) || MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Post((Screen) element, character, mods));
99+
}
93100
}

0 commit comments

Comments
 (0)