Touhou Little Maid

Touhou Little Maid

2M Downloads

QuickEasyMenu和TouhouLittleMaid冲突问题

easyRongYi opened this issue · 15 comments

commented

这是我为了方便给某个服务器加QuickEasyMenu模组偶然发现的
由于服务器加了VanillaFix模组所以他是在游戏报错并不是客户端整个崩掉
java_VC9Xife1F0
后来我自己测试的时候因为只加了QuickEasyMenu和TouhouLittleMaid所以它直接崩溃了并报错
javaw_wE8kUmpmnS
QuickEasyMenu版本为touhoulittlemaid-1.12.2-1.2.2-release
TouhouLittleMaid版本为QuickEasyMenu-1.12.2-2.0.3
启动器是HMCL版本为HMCL-3.3.172

commented

请提供完整的错误报告

commented
commented

很头疼,我现在完全不知道怎么解决:

  1. QuickEasyMenu 调用了 JS 引擎,导致 TouhouLittleMaid 模组调用 JS 引擎失败。
  2. TouhouLittleMaid 可以通过调用系统 JS 引擎来规避这个问题,但是它调用了自带的 JS 引擎
  3. TouhouLittleMaid 如果调用了系统 JS 引擎,大约有 2% 玩家在使用 Java 8 60 以下版本的 Java,会导致女仆没有动画。
  4. 所以难点来了,我应该是说服那 2% 的玩家更新它们的 Java,还是说服你放弃使用 QuickEasyMenu
commented

很头疼,我现在完全不知道怎么解决:

  1. QuickEasyMenu 调用了 JS 引擎,导致 TouhouLittleMaid 模组调用 JS 引擎失败。
  2. TouhouLittleMaid 可以通过调用系统 JS 引擎来规避这个问题,但是它调用了自带的 JS 引擎
  3. TouhouLittleMaid 如果调用了系统 JS 引擎,大约有 2% 玩家在使用 Java 8 60 以下版本的 Java,会导致女仆没有动画。
  4. 所以难点来了,我应该是说服那 2% 的玩家更新它们的 Java,还是说服你放弃使用 QuickEasyMenu

是否可以检查用户的Java版本,对于高版本java使用系统引擎,低版本java使用模组自带引擎呢?

commented

那么那些使用 Java 8 60 版本以下的人,在加装了类似的模组后,还是会导致游戏崩溃。

不过我目前也只能想到这个解决办法了。

commented

那么那些使用 Java 8 60 版本以下的人,在加装了类似的模组后,还是会导致游戏崩溃。

不过我目前也只能想到这个解决办法了。

欸?如果低版本java没有内置js引擎(或者内置js引擎不好使的话),为啥QuickEasyMenu这类mod能在低版本java上正常运行呢?

commented

因为我用了 Java.asJSONCompatible() 函数,这个函数在 60 版本以上才有

commented

没问题了

commented

因为 QuickEasyMenu 不是开源模组,我刚刚只好反编译来了解为何会出现这个问题。

基本上和 QuickEasyMenu 的不规范写法存在关系,QuickEasyMenu 在调用 JS 引擎时候没有采用官方文档提示的设置 ClassLoader 为 null 来获取系统 ClassLoader,而是自己手动把所有 jdk 开头的库强行塞入游戏的 ClassLoader 中,导致和我内置的 Loader 发生了冲突。

我之前还疑惑为何 Custom NPCs 模组也是调用了 JS 引擎,但是一点问题也没有,然后看源码才发现了这个问题。

因为 QuickEasyMenu 不是开源模组,我无法通过发送 Pull Request 修复它的问题,所以我建议你删除 QuickEasyMenu 或者我这个模组……

commented

有没有可以代替QuickEasyMenu模组,我使用QuickEasyMenu单纯是为了快捷输入指令

commented

我还是先暂时采用我那个折中的办法(检测 Java 版本来调用引擎)来减少触发这个 bug 的概率吧,但是你得等到下次发布才能使用这个模组了

commented

有没有推荐的类似QuickEasyMenu辅助模组

commented

这个我就不知道了

commented

好吧,那我就先等你下个版本发布吧

commented

好,自动构建好了下个版本了 https://ci.covertdragon.team/job/TouhouLittleMaid/,你下载试试,看看这次还崩溃么