|
22 | 22 | import net.minecraftforge.client.event.GuiScreenEvent; |
23 | 23 | import net.minecraftforge.common.MinecraftForge; |
24 | 24 | import org.spongepowered.asm.mixin.Mixin; |
25 | | -import org.spongepowered.asm.mixin.Overwrite; |
26 | 25 | import org.spongepowered.asm.mixin.Shadow; |
27 | 26 | import org.spongepowered.asm.mixin.injection.At; |
28 | 27 | import org.spongepowered.asm.mixin.injection.Inject; |
| 28 | +import org.spongepowered.asm.mixin.injection.Redirect; |
29 | 29 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; |
30 | 30 |
|
31 | 31 | import net.minecraft.client.Keyboard; |
@@ -74,21 +74,27 @@ private void postKeyEvent(int i, boolean[] bls, ParentElement element, int key, |
74 | 74 | } |
75 | 75 | } |
76 | 76 |
|
77 | | - @Overwrite |
78 | | - private static void method_1458(Element element, int character, int mods) { |
79 | | - if (!MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Pre((Screen) element, (char) character, mods))) { |
80 | | - if (!element.charTyped((char) character, mods)) { |
81 | | - MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Post((Screen) element, (char) character, mods)); |
82 | | - } |
| 77 | + @Inject(method = "method_1458", at = @At("HEAD"), cancellable = true) |
| 78 | + private static void method_1458(Element element, int character, int mods, CallbackInfo info) { |
| 79 | + if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Pre((Screen) element, (char) character, mods))) { |
| 80 | + info.cancel(); |
83 | 81 | } |
84 | 82 | } |
85 | 83 |
|
86 | | - @Overwrite |
87 | | - private static void method_1473(Element element, char character, int mods) { |
88 | | - if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Pre((Screen) element, character, mods))) { |
89 | | - if (!element.charTyped(character, mods)) { |
90 | | - MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Post((Screen) element, character, mods)); |
91 | | - } |
| 84 | + @Redirect(method = "method_1458", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Element;charTyped(CI)Z")) |
| 85 | + private static boolean method_1458(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 | + |
| 89 | + @Inject(method = "method_1473", at = @At("HEAD"), cancellable = true) |
| 90 | + private static void method_1473(Element element, char character, int mods, CallbackInfo info) { |
| 91 | + if (MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.KeyboardCharTypedEvent.Pre((Screen) element, (char) character, mods))) { |
| 92 | + info.cancel(); |
92 | 93 | } |
93 | 94 | } |
| 95 | + |
| 96 | + @Redirect(method = "method_1473", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Element;charTyped(CI)Z")) |
| 97 | + private static boolean method_1473(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 | + } |
94 | 100 | } |
0 commit comments