抄录自DeepseekV4Pro:
Mod: JustARod
文件: src/main/java/org/cneko/justarod/entity/Pregnant.java
方法: readPregnantFromNbt()
行号: 281-283
readPregnantFromNbt() 中 Female 和 Male 两个 NBT 键使用了 不安全的 nbt.getBoolean() 读取,没有先用 nbt.contains() 检查键是否存在。
// Pregnant.java:281-283
default void readPregnantFromNbt(NbtCompound nbt) {
setFemale(nbt.getBoolean("Female")); // ← BUG: 缺少 contains 检查
setMale(nbt.getBoolean("Male")); // ← BUG: 缺少 contains 检查
Java 版 NBT 的 getBoolean("MissingKey") 返回 false,而不是跳过或保留下现有的值。
触发条件
任何首次加载该 mod 的旧存档玩家都会触发:
- 玩家在 vanilla(或低版本)中已有存档
- 安装 JustARod 后第一次进游戏
- 存档 NBT 中没有 "Female" 和 "Male" 键
- nbt.getBoolean("Female") → false,覆盖了 Mixin 字段的默认值 true
- 后续 hasUterus 的 fallback 逻辑(Pregnant.java:323-329)依赖 isFemale() 判断,此时已为 false,永远不会执行 setHasUterus(true)
- hasUterus 保持 Mixin 字段默认值 false
对比
同一方法中其他所有字段(Pregnant, AIDS, HPV, Uterus 等)都正确使用了 nbt.contains() + nbt.getXxx() 的二段式读取,唯独 Female 和 Male 没有。
修复
将第 282-283 行改为:
if (nbt.contains("Female")) {
setFemale(nbt.getBoolean("Female"));
}
if (nbt.contains("Male")) {
setMale(nbt.getBoolean("Male"));
}
影响
- 所有从旧版本/原版升级安装 JustARod 的玩家,女性角色都会丢失子宫
- 导致 canPregnant() 永远返回 false
- 月经周期系统完全不可用
- 百合怀孕(孤雌生殖)也无法触发
(小记:我和我朋友玩纯生存存档,在B站上看到了此Mod视频,感到好奇,将26.1版本存档降级为1.20.1版本并加载Mod,游戏中疑惑部分机制为什么丢失,使用agent才得知,望开发者尽快修复,谢谢喵,另外我和我朋友通过多个agent也发现了包括但不限于:翻译键拼写错误,性欲值逻辑缺口,死亡时 rod 必定丢失,任何异常都直接踢人,无条件关闭连接且不记录日志。瞬态网络错误也会导致玩家被踢,且无法排查原因,玩家重生时只有 Sterilization 和 Immune2HPV 被复制等等问题,稍后会再次提交)
抄录自DeepseekV4Pro:
Mod: JustARod
文件: src/main/java/org/cneko/justarod/entity/Pregnant.java
方法: readPregnantFromNbt()
行号: 281-283
readPregnantFromNbt() 中 Female 和 Male 两个 NBT 键使用了 不安全的 nbt.getBoolean() 读取,没有先用 nbt.contains() 检查键是否存在。
触发条件
任何首次加载该 mod 的旧存档玩家都会触发:
对比
同一方法中其他所有字段(Pregnant, AIDS, HPV, Uterus 等)都正确使用了 nbt.contains() + nbt.getXxx() 的二段式读取,唯独 Female 和 Male 没有。
修复
将第 282-283 行改为:
影响
(小记:我和我朋友玩纯生存存档,在B站上看到了此Mod视频,感到好奇,将26.1版本存档降级为1.20.1版本并加载Mod,游戏中疑惑部分机制为什么丢失,使用agent才得知,望开发者尽快修复,谢谢喵,另外我和我朋友通过多个agent也发现了包括但不限于:翻译键拼写错误,性欲值逻辑缺口,死亡时 rod 必定丢失,任何异常都直接踢人,无条件关闭连接且不记录日志。瞬态网络错误也会导致玩家被踢,且无法排查原因,玩家重生时只有 Sterilization 和 Immune2HPV 被复制等等问题,稍后会再次提交)