[游戏日志]
707290 INFOcom.fs.starfarer.api.impl.campaign.bt_DerelictSpawner- Generated a ork_supermule_standard (ork_supermule_standard) in orbit of Barax in the Elgava 星系 system.
707290 INFOcom.fs.starfarer.api.impl.campaign.bt_DerelictSpawner- Successfully spawned 9 derelicts out of 9 planned.
707306 INFOsound.O- Cleaning up music with id
707384 ERROR com.fs.starfarer.combat.CombatMain- java.lang.NullPointerException: Cannot invoke "com.fs.starfarer.api.campaign.PlanetAPI.isBlackHole()" because the return value of "com.fs.starfarer.api.campaign.StarSystemAPI.getStar()" is null
java.lang.NullPointerException: Cannot invoke "com.fs.starfarer.api.campaign.PlanetAPI.isBlackHole()" because the return value of "com.fs.starfarer.api.campaign.StarSystemAPI.getStar()" is null
at data.campaign.gr_TagshipSpawner.getRandomSystemWithBlacklist(gr_TagshipSpawner.java:145)
at data.campaign.gr_TagshipSpawner.spawnPleiades(gr_TagshipSpawner.java:57)
at data.scripts.gr_ModPlugin.onNewGameAfterTimePass(gr_ModPlugin.java:35)
at com.fs.starfarer.campaign.save.CampaignGameManager.o00000(Unknown Source)
at com.fs.starfarer.title.TitleScreenState.dialogDismissed(Unknown Source)
at com.fs.starfarer.ui.oo0O.dismiss(Unknown Source)
at com.fs.starfarer.ui.impl.o0OO.dismiss(Unknown Source)
at com.fs.starfarer.campaign.save.A.actionPerformed(Unknown Source)
at com.fs.starfarer.ui.n.buttonPressed(Unknown Source)
at com.fs.starfarer.ui.int.new(Unknown Source)
at com.fs.starfarer.ui.int.processInput(Unknown Source)
at com.fs.starfarer.ui.W.o00000(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
707676 INFOsound.O- Creating streaming player for music with id
这个模组写的逻辑:
1. 遍历星系,想要找一个符合条件的星系来刷旗舰
2. 代码直接调用 `system.getStar().isBlackHole()`
3. **但是部分星系是无恒星星系(没有主星),`getStar()` 返回 null**
4. 代码**没有先判断 getStar () 是否为 null**,直接访问属性,导致游戏抛出 NPE 崩溃
前面 INFO 日志是正常的:在 Elgava 星系生成废弃船,9 艘全部生成成功,和这次崩溃无关。音乐加载日志只是菜单音乐,也不是报错源头。
念你成疾 发表于 2026-10-14 18:32
[游戏日志]
707290 INFOcom.fs.starfarer.api.impl.campaign.bt_DerelictSpawner- Generat ...
昂宿不知道为什么生成失败,直接开不了新档
如果有专属军官对应的骚话联动就好了qwq
老大,昂宿有专属军官吗?
本帖最后由 赤羽灵 于 2026-10-27 13:03 编辑
找到了:这次卡死并非 VIC 造成,问题出在「星海集群(GalacticConstellate)1.13.7d」。
抓到的线程栈(PID 9480,Thread-3,RUNNABLE,累计 CPU 626 秒说明它一直在原地空转):
代码块
at java.lang.StringLatin1.toLowerCase
at com.fs.starfarer.campaign.StarSystem.getId
at data.campaign.gr_TagshipSpawner.getRandomSystemWithBlacklist(gr_TagshipSpawner.java:127)
at data.campaign.gr_TagshipSpawner.spawnHyades_Outframe(gr_TagshipSpawner.java:85)
at data.scripts.gr_ModPlugin.onNewGameAfterTimePass(gr_ModPlugin.java:36)
at com.fs.starfarer.campaign.save.CampaignGameManager.o00000
原因:spawnPleiades / spawnHyades_Outframe / spawnAldebaran 这三个方法都是下面这个结构:
java
while (placeToSpawn == null) {
system = getRandomSystemWithBlacklist(...); // 只挑黑洞星系
placeToSpawn = BaseThemeGenerator.getLocations(...).pick();// 这个星系取不到点就永远 null
}
这里没有尝试次数上限。一旦随机抽到“取不到 NEAR_STAR 位置点”的星系,它就会每轮重新计算一遍全星系 id(getId() 里带 toLowerCase),导致开局线程死转。你之前那 4 次能进,是因为运气好,没有抽到那种星系;这是概率触发的。
感觉有点三体人吊打原始人的感觉了{:5_124:}
https://www.fossic.org/static/image/smiley/approlight/approlight_22.png