|
|
发表于 2026-5-6 11:45:01
|
显示全部楼层
610117 [Thread-2] ERROR com.fs.starfarer.combat.CombatMain - java.lang.NullPointerException: Cannot invoke "com.fs.starfarer.api.combat.ShipAPI.getOwner()" because "ship" is null
java.lang.NullPointerException: Cannot invoke "com.fs.starfarer.api.combat.ShipAPI.getOwner()" because "ship" is null
at data.scripts.util.PLSP_Util.getFPStrength(PLSP_Util.java:757) ~[?:?]
at data.shipsystems.scripts.ai.PLSP_TimeLockAI.advanceImpl(PLSP_TimeLockAI.java:28) ~[?:?]
at data.shipsystems.scripts.ai.PLSP_BaseSystemAI.advance(PLSP_BaseSystemAI.java:41) ~[?:?]
at com.fs.starfarer.loading.specs.do$1.o00000(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.combat.ai.BasicShipAI.advance(Unknown Source) ~[starfarer_obf.jar:?]
at com.genir.aitweaks.core.shipai.ExtendedShipAI.advance(ExtendedShipAI.kt:41) ~[?:?]
at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.combat.CombatState.traverse(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.state.AppDriver.begin(Unknown Source) ~[fs.common_obf.jar:?]
at com.fs.starfarer.combat.CombatMain.main(Unknown Source) [starfarer_obf.jar:?]
at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source) [starfarer_obf.jar:?]
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source) [starfarer_obf.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1516) [?:?]
这是一个远行星号(Starsector)的Mod错误。问题出在`PLSP_Util.getFPStrength`方法的第757行,尝试调用一个为`null`的`ship`对象的`getOwner()`方法。
## 错误原因
在`PLSP_TimeLockAI`类的第28行调用`PLSP_Util.getFPStrength`时,传入的`ship`参数为`null`。
## 解决方案
### 1. 临时修复(修改代码)
如果你有Mod的源代码,在`PLSP_Util.java`的第757行附近添加null检查:
```java
// 原来的代码(大概是这样)
public static float getFPStrength(ShipAPI ship) {
// 第757行
int owner = ship.getOwner(); // 这里ship可能为null
// 修改为:
if (ship == null) {
return 0f; // 或者其他默认值
}
int owner = ship.getOwner();
```
在`PLSP_TimeLockAI.java`的第28行也应该添加检查:
```java
// 在调用前检查
if (ship == null) {
return;
}
float strength = PLSP_Util.getFPStrength(ship);
```
### 2. 排查哪个Mod出问题
从堆栈看,问题出在`PLSP_`前缀的类,这很可能是:
- **PLSP Sector** 或 **Progressive S-Mods** 相关的Mod
检查你安装的Mod列表,找到带有"PLSP"或类似名称的Mod。
### 3. 其他解决方法
- **更新Mod**:检查该Mod是否有新版本修复了这个问题
- **Mod冲突**:注意堆栈中有`com.genir.aitweaks.core.shipai.ExtendedShipAI`,可能与**AI Tweaks**Mod冲突
- **临时禁用**:如果问题持续出现,暂时禁用带有`PLSP`前缀的Mod
### 4. 避免问题触发
如果不想修改代码,尽量避免在战斗中出现以下情况:
- 触发`PLSP_TimeLockAI`相关的舰船系统时,目标舰船被摧毁
- AI控制的舰船在使用时间锁定技能时目标消失
D指导的诊断,某船使用时间锁定的时候会闪退 |
|