本模组是游戏中中文输入法冲突修复(1.7.2-1.12.2)的高版本模组。
功能
模组在 1.20 后已支持 Fabric ,其它支持版本请移步输入法冲突修复。
原理
Minecraft 的输入处理机制:
在 Minecraft 游戏中,一次键盘输入会先后处理游戏按键响应和文字输入响应;
游戏按键响应处理与我们无关,因此忽略;
文字输入响应会交由 Minecraft 当前显示的 GUI 屏幕处理,屏幕一般会转而调用某个文本框来处理输入字符;
如果不存在屏幕,或者屏幕判断不该调用文本框,或者文本框拒绝接收这一字符,那么文字不会被“输入”到任何地方;
无论文字是否会被输入,文字输入响应过程都会执行;
我们几乎无法事先确定游戏会不会接受我们输入文字。
IMBlocker 的输入状态识别:
收集所有文本框对象;
使用 ASM 修改文本框的构造函数以实现这一点;
如果有文本框允许输入,则认为游戏接受输入文字。
例外情况:
问题: