???
本帖最后由 野生的柠檬精 于 2026-10-24 20:54 编辑
是的,兄弟们我又来分享经验了
关于1.3.5 报错的问题,我已经解决了,但我不确保我的经验能够通用于所有人。
先给出文件以方便想直接游玩的人,附件直接解压到mod根目录覆盖(大白话说就是下载了mod后解压的文件qsmx下面这都看不懂就只能等作者修了),但我不确保我的文件你们也能直接用,原因下面会写。
我的分析如下:我查看了日志,里面提到了编译qsmx_fluxVent.java的事情,但不知道为何没有成功,所以在最后因为找不到文件报错退出,因此我的解决方法就是在外面手动编译后将字节码文件放到了jar包的对应位置(日志里有写位置),然后就进入成功了。
因为我没有开发远星mod的经验与相关的知识,所以我不确定这种动态编译(启动时编译)设计的目的,但既然有这种设计肯定有其原因,这也是我不确定我将编译好的文件补进去的方法在其他人的电脑上能不能用,我本机上的JDK是25LTS,如果你们无法用我附件的文件解决,只能自己动手编译(或者你没有JDK或相关的知识就别费劲折腾,等作者更新吧)
命令如下
cd 【游戏根目录】这里换成你的游戏根目录,别照着复制粘贴啊!!!
javac -encoding UTF-8 --release 17 -cp "starsector-core\starfarer.api.jar;starsector-core\starfarer_obf.jar;starsector-core\lwjgl.jar;starsector-core\lwjgl_util.jar" -d "mods\qsmx" "mods\qsmx\src\data\weapon\qsmx_fluxVent.java"
这条命令会将编译产物直接放到mod目录下名字叫做 qsmx_fluxVent.class ,你现在只用打开到mod/jars目录下 可以看到一个jar包,用压缩软件打开jar包,将产物放到 data/weapon 下面,比如放错了,是weapon 不是weapons 注意尾巴的 s 然后保存
leaies 发表于 2026-10-24 20:46
103楼,修好了
荧光~微暖づღ 发表于 2026-10-24 20:02
???
看103楼,我修了修
野生的柠檬精 发表于 2026-10-24 19:49
同款报错
103楼,我修了一下
我去了,一更新就出问题
277ll 发表于 2026-10-24 21:03
我去了,一更新就出问题
大佬,为什么选择启动时编译而不是直接编译好,我在103的方案,刚刚我又回去看了眼成功进入的日志,qsmx_fluxVent相关的只有一行:
INFOcom.fs.starfarer.loading.scripts.ScriptStore- Class already loaded (perhaps from jar file, or due to a reference from another class), skipping compilation.
说明编译好放到jar包里面确实避开了报错
搞东西搞昏头了
277ll 发表于 2026-10-24 21:09
搞东西搞昏头了
如果启动时编译不是有意设计的,我发的jar包是可以用的,我刚刚看了一下我的命令行,是加了release 17的,产物符合游戏的JDK版本,应该大家都能用
虽然但是感觉数值还是很高(),前期去深红看黑市里面有个4k块钱的帕级,这么小一艘我暂时还没找到能单挑的过它的(甚至是系统的攻势(
这个mod和“更多任务扩展”一起加载,在和npc对话生成「军事赏金」时发生卡死。
大肥鱼的说法是
现象:在 NPC 对话里点「军事赏金」,画面卡死。CPU 满载一阵后僵死,内存从 4.2 GB 涨到 6 GB 以上,starsector.log 停在 MMM 的 creator=... 那行之后。jstack / jcmd 全部连不上(JVM 不再应答 attach)。
定位手段:写了个 -javaagent 探针,每秒记录游戏主线程(Thread-1)的调用栈。卡死时最后一帧:
代码块
FleetData.findFirstUnusedIndex
← FleetData.addFleetMember
← FleetFactoryV3.addToFleet:1366
← FleetFactoryV3.addShips:1427
← FleetFactoryV3.addCombatFleetPoints:1804
← FleetFactoryV3.createFleet:380
← CreateFleetAction.doAction:1834
← BaseCustomBountyCreator.createFleet:235
← CBDerelict.createBounty:89 ← 遗弃船赏金
← MmmMilitaryCustomBounty.create:453
根因链:
某 mod 有一艘彩蛋 Boss 船,fleet pts = 999999,同时挂了 derelict 标签;
原版 derelict 阵营编成是 knownShips: tags:["derelict"],于是把它当普通遗弃舰收编;
Faction.getApproximateMaxFPPerFleet() 是按舰体尺寸求平均 FP 再乘 maxShipsInAIFleet(30)。这个阵营名册只有 10 艘船、2 艘主力舰(999999 + 30),平均值 → 50 万,单舰队上限算出 300 万 FP;
CBDerelict(遗弃船赏金)按这个上限生成舰队;
FleetFactoryV3.addCombatFleetPoints() 的 while (numFails < 2) 没有任何迭代上限,只要每轮还能塞进船就永不退出 → 要加约 200 万点 FP 的船(几万艘)→ 内存爆 → 卡死。
两个坑点(给后来人):
阵营 knownShips 是存在存档里的(campaign.xml 里的 <knownShips><st>...</st></knownShips>)。所以只改船体标签 / 阵营配置,对已存在的存档无效,必须改「船体 FP」这种每次启动从数据文件读的东西。
这类雷是通用的:任何"小名册 + 极端 FP"的阵营都会中,不只是遗弃船。
修复:把该船 fleet pts 从 999999 改成 60(船体本身数值不动)。改后按原公式重算存档里 88 个阵营名册,最坏从 300 万降到 3582。