本模组是游戏中中文输入法冲突修复(1.7.2-1.12.2)的高版本模组。
功能
- 修复Minecraft在正常游戏的时候和中文,日文,韩文输入法冲突的现象。
- 让你在开着输入法的时候也可以正常进行游戏,操控游戏,不会冲突。
模组在 1.20 后已支持 Fabric ,其它支持版本请移步输入法冲突修复。
原理
- Minecraft 的输入处理机制:
- 在 Minecraft 游戏中,一次键盘输入会先后处理游戏按键响应和文字输入响应;
- 游戏按键响应处理与我们无关,因此忽略;
- 文字输入响应会交由 Minecraft 当前显示的 GUI 屏幕处理,屏幕一般会转而调用某个文本框来处理输入字符;
- 如果不存在屏幕,或者屏幕判断不该调用文本框,或者文本框拒绝接收这一字符,那么文字不会被“输入”到任何地方;
- 无论文字是否会被输入,文字输入响应过程都会执行;
- 我们几乎无法事先确定游戏会不会接受我们输入文字。
- IMBlocker 的输入状态识别:
- 收集所有文本框对象;
- 使用 ASM 修改文本框的构造函数以实现这一点;
- 如果有文本框允许输入,则认为游戏接受输入文字。
- 例外情况:
- 有些GUI屏幕(比如书与笔和告示牌)直接处理输入字符,而不是转移给文本框来处理;
- 我们无法捕捉这些输入,因此我们将这些屏幕(Screen)放入白名单。
- 问题:
- 有可能出现假阳性,也就是文本框认为自己能接受输入,但游戏不会把输入传给这个文本框;
- 非 Windows 环境下没有可用的方法禁用/启用输入法;
- 欢迎提出建议或反馈。
兼容性:
网址:
- https://www.mcmod.cn/class/3358.html
- https://modrinth.com/mod/imblocker-original
- https://github.com/reserveword/IMBlocker
下载地址:
所属整合包: