|
|
我再补一项排查:兽耳助手 里是否只有 mmMellystarring 一个类实现了 SingleOptionAction。如果只有它,后续修复点就很单一。
这次新崩溃也已经定位清楚了,而且和你刚更新的那个前置直接相关。
结论 这次是 兽耳助手! 和新版 SimpleIndustryOptionProvider 1.0.3 接口不兼容导致的。
直接证据
日志里最新崩溃是: starsector.log:1822696 java.lang.AbstractMethodError
出错类是: data.scripts.campaign.industry.mmMellystarring
缺失的方法是: addToIndustryTooltip(Industry, IndustryTooltipMode, TooltipMakerAPI, float, boolean)
调用链显示它是在殖民地工业 tooltip 生成时炸的: ListenerUtil.addToIndustryTooltip BaseIndustry.createTooltip 这和你说的“进殖民地的星球界面崩溃”完全一致。
为什么更新前置后反而出了这个新问题 你现在的 SIOP 已经是:
mods/SimpleIndustryOptionProvider/mod_info.json:5-7
version: 1.0.3
gameVersion: 0.98a-RC8
而新版 SIOP 的 SingleOptionAction 接口比旧版多了一个新抽象方法:
void addToIndustryTooltip(Industry ind, Industry.IndustryTooltipMode mode, TooltipMakerAPI tooltip, float width, boolean expanded);
这点我已经从你当前 SIOP.jar 里确认了。
但 兽耳助手 里的 mmMellystarring 还是旧实现,只实现了旧接口的方法,没有实现这个新增方法。
mods/mimikko098v0.762/jars/src/data/scripts/campaign/industry/mmMellystarring.java
里面没有任何 addToIndustryTooltip(...)
所以:
启动时不一定马上炸
但一旦你打开殖民地工业界面,游戏要生成工业提示框
新版 SIOP 就会调用 addToIndustryTooltip(...)
mmMellystarring 没实现,直接 AbstractMethodError
谁有问题 严格说是“两个版本之间不兼容”:
SIOP 1.0.3 新增了接口方法
兽耳助手 0.761 还是按旧版 SIOP 写的
所以现在这俩版本搭配起来会炸
范围 从当前源码看,兽耳助手 里只有这一个 SIOP 选项实现类:
mmMellystarring
所以问题点很集中,不像是全模组到处都坏。
你现在的可行处理方案
找 兽耳助手 的更新版/补丁
最理想
需要作者已经适配 SIOP 1.0.3
回退 SimpleIndustryOptionProvider 到旧版
可能能解决这个殖民地界面问题
但你前面说旧版又会触发别的问题,所以这条未必适合你现在
临时禁用 兽耳助手
最稳
但你应该不想这么做
做一个本地兼容修补
本质上就是给 mmMellystarring 补上新版接口要求的方法
这是最小代码修复点
我建议的判断 如果你刚换的新前置修掉了“进游戏就炸”的问题,但现在只在殖民地界面炸,那基本就是: 前置新版可用,但 兽耳助手 没跟上新版接口
结论不行( ,不过我可以去看看ai能不能修补一个 |
|