IMBlocker icon indicating copy to clipboard operation
IMBlocker copied to clipboard

[漏洞] 1.20.1 EMI的物品搜索文本框无法启用输入法

Open Phoupraw opened this issue 2 years ago • 21 comments

右下角的“搜索EMI……”文本框只能输入英文,即使启用了输入法也是如此。 2023-07-26_15 16 54

Phoupraw avatar Jul 26 '23 07:07 Phoupraw

不对劲,现在又可以输入中文了。 我无法复现这个bug,暂且关闭。

Phoupraw avatar Jul 26 '23 08:07 Phoupraw

好吧,现在它又输入不了中文了。我弄不清楚这个bug的触发机制。

Phoupraw avatar Jul 26 '23 10:07 Phoupraw

fabric挺烦的,不少mod都会自己写输入框,只能一个一个适配

reserveword avatar Jul 26 '23 12:07 reserveword

emi使用了原版的输入框,按理说应该能正常工作。我看看能不能复现吧。 预先问几个问题:

  1. 你使用的是哪个版本?
  2. 你使用的时候文本框是否有激活(边框高亮变白、光标闪烁)?
  3. 你是否尝试过多点几次文本框/关闭物品栏重新打开?

reserveword avatar Jul 26 '23 14:07 reserveword

emi使用了原版的输入框,按理说应该能正常工作。我看看能不能复现吧。 预先问几个问题:

  1. 你使用的是哪个版本?
  2. 你使用的时候文本框是否有激活(边框高亮变白、光标闪烁)?
  3. 你是否尝试过多点几次文本框/关闭物品栏重新打开?
  1. 4.0.5+1.20

Phoupraw avatar Jul 26 '23 16:07 Phoupraw

REI上也存在类似的问题

HhiPyrene avatar Jul 30 '23 14:07 HhiPyrene

可能和 #22 里REI mixin报错的问题有关吧

hexadecimal233 avatar Aug 02 '23 16:08 hexadecimal233

我好像明白这个bug怎么触发了:如果当前屏幕上除了EMI的搜索框外还有其它文本框,那么EMI搜索框使用输入法;如果当前屏幕上只有EMI搜索框而没有其它文本框,则EMI搜索框不能使用输入法,只能直接输入英文。

Phoupraw avatar Aug 06 '23 05:08 Phoupraw

悲报:我装emi失败了,没法在开发环境加载emi

REI上也存在类似的问题

无法复现,请求进一步说明 image

reserveword avatar Aug 27 '23 03:08 reserveword

悲报:我装emi失败了,没法在开发环境加载emi

REI上也存在类似的问题

无法复现,请求进一步说明 image

我在REI上也有一样的问题,和EMI一样,具体情况是:如果当前屏幕上只有EMI/REI的搜索框,那么无法用输入法,只能直接输入英文字母,即使手动按输入法切换快捷键也不行;如果当前屏幕上有其它输入框,比如AE2的终端的搜索框、创造模式物品栏的搜索标签页,那么可以正常使用输入法。

Phoupraw avatar Aug 27 '23 05:08 Phoupraw

我成功加载emi模组了

我发现emi跳过了正常的键入消息传递路径,直接监听键盘事件来输入文字,所以我注入的探测方法没法发现emi的文本框。同时emi也不接受正常文本框的tick消息(原版中用来控制文本框的光标闪烁)(因此emi的搜索文本框是没有光标闪烁的),最终导致我无法探测emi搜索框是否正在工作

reserveword avatar Aug 27 '23 05:08 reserveword

有其他输入框时正常工作应该是因为我发出的探测方法被其他文本框捕获后识别到其他文本框,而正常输入文本时会被emi拦截,所以不会输入到那些文本框中

reserveword avatar Aug 27 '23 05:08 reserveword

可以注入EMI的文本框吗?

Phoupraw avatar Aug 27 '23 05:08 Phoupraw

可以注入EMI的文本框吗?

我已经注入emi的文本框了,但是emi的文本框“存在”和文本框“能接收信息”是两回事。我意识到这一点是从对jei的兼容中发现的。jei似乎会在关闭屏幕时扔保留文本框存在和接收信息的能力,只是我们的输入不再发送给这个文本框了。

事实上要准确获取emi搜索框是否正在工作最准确的方法是查看emi注入到键盘事件的代码,但是那样可能会很麻烦

其实考虑到emi自带拼音搜索,对这些文本框直接不使用输入法或许是更好的做法XD

reserveword avatar Aug 27 '23 05:08 reserveword

好像只有REI自带拼音搜索把?EMI没有,至少目前我能下载到的最新版1.0.19+1.20.1+fabric没有。

Phoupraw avatar Aug 27 '23 06:08 Phoupraw

好像只有REI自带拼音搜索把?EMI没有,至少目前我能下载到的最新版1.0.19+1.20.1+fabric没有。

确实,我看错了

reserveword avatar Aug 27 '23 06:08 reserveword

我改成鼠标点击文本框的时候检测文本框是否正在工作吧

每有一次鼠标点击事件,检测同一tick内是否有文本框收到该事件:如果收到该事件且文本框为正在工作的状态,那么开启输入法;如果没有文本框受到该事件,那么取消开启输入法(其他规则导致输入法开启则仍保持开启)

reserveword avatar Aug 27 '23 06:08 reserveword

fixed

reserveword avatar Aug 27 '23 13:08 reserveword

仍然有问题:

  • 当打开了EMI配方界面时(即展示各种配方的界面,dev.emi.emi.screen.RecipeScreen),可以正常使用输入法。
  • 当处于没有打开EMI配方界面的的容器界面(包括玩家物品栏界面)时,无法使用输入法。

模组列表:

  • ae2 15.0.4-beta
  • ae2-emi-crafting 1.0.1
  • ae2wtlib 15.0.1-beta
  • amecs 1.3.9+mc.1.20-pre2
    • amecsapi 1.4.0+mc1.20-pre1
  • cardinal-components-base 5.2.1
  • cardinal-components-entity 5.2.1
  • cloth-config 11.0.99
  • com_github_llamalad7_mixinextras 0.2.0-rc.4
  • diggusmaximus 1.5.9-1.20
  • emi 1.0.22+1.20.1+fabric
  • emi_loot 0.6.5+1.20.1
  • emiffect 1.1.1+mc1.20.1
  • emitrades 1.2.0+mc1.20.1
    • org_quiltmc_parsers_json 0.2.1
  • extra-mod-integrations 0.4.1+1.20.1
  • fabric-api 0.89.0+1.20.1
  • fabric-api-base 0.4.30+7abfd51577
  • fabric-api-lookup-api-v1 1.6.35+4d8536c977
  • fabric-biome-api-v1 13.0.10+b3afc78b77
  • fabric-block-api-v1 1.0.10+92a0d36777
  • fabric-block-view-api-v2 1.0.0+92a0d36777
  • fabric-blockrenderlayer-v1 1.1.40+b3afc78b77
  • fabric-client-tags-api-v1 1.1.1+97bb207577
  • fabric-command-api-v1 1.2.33+f71b366f77
  • fabric-command-api-v2 2.2.12+b3afc78b77
  • fabric-commands-v0 0.2.50+df3654b377
  • fabric-containers-v0 0.1.63+df3654b377
  • fabric-content-registries-v0 4.0.9+b3afc78b77
  • fabric-convention-tags-v1 1.5.4+a1a980da77
  • fabric-crash-report-info-v1 0.2.18+aeb40ebe77
  • fabric-data-generation-api-v1 12.3.0+0883a8d477
  • fabric-dimensions-v1 2.1.53+8536527b77
  • fabric-entity-events-v1 1.5.22+b3afc78b77
  • fabric-events-interaction-v0 0.6.1+e91849a877
  • fabric-events-lifecycle-v0 0.2.62+df3654b377
  • fabric-game-rule-api-v1 1.0.38+b04edc7a77
  • fabric-gametest-api-v1 1.2.12+b3afc78b77
  • fabric-item-api-v1 2.1.27+b3afc78b77
  • fabric-item-group-api-v1 4.0.10+23d9108177
  • fabric-key-binding-api-v1 1.0.36+fb8d95da77
  • fabric-keybindings-v0 0.2.34+df3654b377
  • fabric-lifecycle-events-v1 2.2.21+b3afc78b77
  • fabric-loot-api-v2 1.1.39+b3afc78b77
  • fabric-loot-tables-v1 1.1.43+9e7660c677
  • fabric-message-api-v1 5.1.7+3265161977
  • fabric-mining-level-api-v1 2.1.49+b3afc78b77
  • fabric-model-loading-api-v1 1.0.2+709a987177
  • fabric-models-v0 0.4.1+9386d8a777
  • fabric-networking-api-v1 1.3.10+eeb8eb3677
  • fabric-networking-v0 0.3.50+df3654b377
  • fabric-object-builder-api-v1 11.1.1+6beca84877
  • fabric-particles-v1 1.1.1+201a23a077
  • fabric-recipe-api-v1 1.0.20+b3afc78b77
  • fabric-registry-sync-v0 2.3.2+4df89eb277
  • fabric-renderer-api-v1 3.2.0+39a511ba77
  • fabric-renderer-indigo 1.5.0+39a511ba77
  • fabric-renderer-registries-v1 3.2.45+df3654b377
  • fabric-rendering-data-attachment-v1 0.3.36+92a0d36777
  • fabric-rendering-fluids-v1 3.0.27+b3afc78b77
  • fabric-rendering-v0 1.1.48+df3654b377
  • fabric-rendering-v1 3.0.7+b3afc78b77
  • fabric-resource-conditions-api-v1 2.3.5+ea08f9d877
  • fabric-resource-loader-v0 0.11.9+132c48c177
  • fabric-screen-api-v1 2.0.7+b3afc78b77
  • fabric-screen-handler-api-v1 1.3.29+b3afc78b77
  • fabric-sound-api-v1 1.0.12+b3afc78b77
  • fabric-transfer-api-v1 3.3.1+195226a777
  • fabric-transitive-access-wideners-v1 4.3.0+6c31357e77
  • fabricloader 0.14.22
  • forgeconfigapiport 8.0.0
  • iceberg 1.1.15
  • imblocker 4.0.5
  • java 17
  • jei 15.2.0.23
  • kyrptconfig 1.5.6-1.20
  • languagereload 1.5.8+1.20.1
  • ldlib 1.0.16.b
  • minecraft 1.20.1
  • modmenu 7.2.2
  • porting_lib_core 2.1.1021+1.20
  • porting_lib_data 2.1.1021+1.20
  • porting_lib_gametest 2.1.1021+1.20
  • porting_lib_model_generators 2.1.1021+1.20
  • porting_lib_model_materials 2.1.1021+1.20
  • porting_lib_tags 3.0
  • porting_lib_utility 2.1.1021+1.20
  • puzzleslib 8.0.15
  • reborncore 5.8.7
  • registrate-fabric 1.3.59-MC1.20
  • team_reborn_energy 3.0.0
  • techreborn 5.8.7
  • travelersbackpack 1.20.1-9.1.2
  • trifle ${version}
  • trinkets 3.7.1
  • universalenchants 8.0.0
    • extensibleenums 7.0.1

Phoupraw avatar Oct 27 '23 15:10 Phoupraw

仍然有问题:

* 当打开了EMI配方界面时(即展示各种配方的界面,`dev.emi.emi.screen.RecipeScreen`),可以正常使用输入法。

* 当处于没有打开EMI配方界面的的容器界面(包括玩家物品栏界面)时,无法使用输入法。

模组列表:

* ae2 15.0.4-beta

* ae2-emi-crafting 1.0.1

* ae2wtlib 15.0.1-beta

* amecs 1.3.9+mc.1.20-pre2
  
  * amecsapi 1.4.0+mc1.20-pre1

* cardinal-components-base 5.2.1

* cardinal-components-entity 5.2.1

* cloth-config 11.0.99

* com_github_llamalad7_mixinextras 0.2.0-rc.4

* diggusmaximus 1.5.9-1.20

* emi 1.0.22+1.20.1+fabric

* emi_loot 0.6.5+1.20.1

* emiffect 1.1.1+mc1.20.1

* emitrades 1.2.0+mc1.20.1
  
  * org_quiltmc_parsers_json 0.2.1

* extra-mod-integrations 0.4.1+1.20.1

* fabric-api 0.89.0+1.20.1

* fabric-api-base 0.4.30+7abfd51577

* fabric-api-lookup-api-v1 1.6.35+4d8536c977

* fabric-biome-api-v1 13.0.10+b3afc78b77

* fabric-block-api-v1 1.0.10+92a0d36777

* fabric-block-view-api-v2 1.0.0+92a0d36777

* fabric-blockrenderlayer-v1 1.1.40+b3afc78b77

* fabric-client-tags-api-v1 1.1.1+97bb207577

* fabric-command-api-v1 1.2.33+f71b366f77

* fabric-command-api-v2 2.2.12+b3afc78b77

* fabric-commands-v0 0.2.50+df3654b377

* fabric-containers-v0 0.1.63+df3654b377

* fabric-content-registries-v0 4.0.9+b3afc78b77

* fabric-convention-tags-v1 1.5.4+a1a980da77

* fabric-crash-report-info-v1 0.2.18+aeb40ebe77

* fabric-data-generation-api-v1 12.3.0+0883a8d477

* fabric-dimensions-v1 2.1.53+8536527b77

* fabric-entity-events-v1 1.5.22+b3afc78b77

* fabric-events-interaction-v0 0.6.1+e91849a877

* fabric-events-lifecycle-v0 0.2.62+df3654b377

* fabric-game-rule-api-v1 1.0.38+b04edc7a77

* fabric-gametest-api-v1 1.2.12+b3afc78b77

* fabric-item-api-v1 2.1.27+b3afc78b77

* fabric-item-group-api-v1 4.0.10+23d9108177

* fabric-key-binding-api-v1 1.0.36+fb8d95da77

* fabric-keybindings-v0 0.2.34+df3654b377

* fabric-lifecycle-events-v1 2.2.21+b3afc78b77

* fabric-loot-api-v2 1.1.39+b3afc78b77

* fabric-loot-tables-v1 1.1.43+9e7660c677

* fabric-message-api-v1 5.1.7+3265161977

* fabric-mining-level-api-v1 2.1.49+b3afc78b77

* fabric-model-loading-api-v1 1.0.2+709a987177

* fabric-models-v0 0.4.1+9386d8a777

* fabric-networking-api-v1 1.3.10+eeb8eb3677

* fabric-networking-v0 0.3.50+df3654b377

* fabric-object-builder-api-v1 11.1.1+6beca84877

* fabric-particles-v1 1.1.1+201a23a077

* fabric-recipe-api-v1 1.0.20+b3afc78b77

* fabric-registry-sync-v0 2.3.2+4df89eb277

* fabric-renderer-api-v1 3.2.0+39a511ba77

* fabric-renderer-indigo 1.5.0+39a511ba77

* fabric-renderer-registries-v1 3.2.45+df3654b377

* fabric-rendering-data-attachment-v1 0.3.36+92a0d36777

* fabric-rendering-fluids-v1 3.0.27+b3afc78b77

* fabric-rendering-v0 1.1.48+df3654b377

* fabric-rendering-v1 3.0.7+b3afc78b77

* fabric-resource-conditions-api-v1 2.3.5+ea08f9d877

* fabric-resource-loader-v0 0.11.9+132c48c177

* fabric-screen-api-v1 2.0.7+b3afc78b77

* fabric-screen-handler-api-v1 1.3.29+b3afc78b77

* fabric-sound-api-v1 1.0.12+b3afc78b77

* fabric-transfer-api-v1 3.3.1+195226a777

* fabric-transitive-access-wideners-v1 4.3.0+6c31357e77

* fabricloader 0.14.22

* forgeconfigapiport 8.0.0

* iceberg 1.1.15

* imblocker 4.0.5

* java 17

* jei 15.2.0.23

* kyrptconfig 1.5.6-1.20

* languagereload 1.5.8+1.20.1

* ldlib 1.0.16.b

* minecraft 1.20.1

* modmenu 7.2.2

* porting_lib_core 2.1.1021+1.20

* porting_lib_data 2.1.1021+1.20

* porting_lib_gametest 2.1.1021+1.20

* porting_lib_model_generators 2.1.1021+1.20

* porting_lib_model_materials 2.1.1021+1.20

* porting_lib_tags 3.0

* porting_lib_utility 2.1.1021+1.20

* puzzleslib 8.0.15

* reborncore 5.8.7

* registrate-fabric 1.3.59-MC1.20

* team_reborn_energy 3.0.0

* techreborn 5.8.7

* travelersbackpack 1.20.1-9.1.2

* trifle ${version}

* trinkets 3.7.1

* universalenchants 8.0.0
  
  * extensibleenums 7.0.1

是的,我也是这样

reana-ovo avatar Jan 06 '24 16:01 reana-ovo

仍然有问题:

* 当打开了EMI配方界面时(即展示各种配方的界面,`dev.emi.emi.screen.RecipeScreen`),可以正常使用输入法。

* 当处于没有打开EMI配方界面的的容器界面(包括玩家物品栏界面)时,无法使用输入法。

你是说下图所示情况吗?我这边测试是通过的。可以帮忙看看最小复现模组列表是啥样的吗 图片

reserveword avatar May 26 '24 06:05 reserveword

似乎在白名单里面加入minecraft:net.minecraft.class_481就行了,是调用的原版的screen(只是猜测,但我加入了就好了)

LearnMC avatar Dec 21 '24 15:12 LearnMC

  • 当打开了EMI配方界面时(即展示各种配方的界面,dev.emi.emi.screen.RecipeScreen),可以正常使用输入法。
  • 当处于没有打开EMI配方界面的的容器界面(包括玩家物品栏界面)时,无法使用输入法。

遇到了同样的情况。

在物品栏中点击 EMI 输入框的 debug.log: image

在 RecipeScreen 中点击 EMI 输入框的 debug.log: image


尝试添加了以下白名单,均无效:

screenWhitelist = ["minecraft:net.minecraft.class_481", ...
inputWhitelist = ["emi:dev.emi.emi.screen.widget.EmiSearchWidget"]

LTCatt avatar Jan 03 '25 16:01 LTCatt