logo
0
0
WeChat Login
chore: 清理构建缓存并添加缺失的构建文件

AOA3 Fix

这是一个面向 NeoForge 1.21.1 的小型兼容修复模组,用来修复 AoA3 3.7.16.1 中玩家使用手里剑时可能触发的客户端崩溃。

问题说明

崩溃日志显示,aoa3:slice_star 在客户端命中实体时进入了 AoA3 的伤害处理逻辑,随后调用了依赖服务端实例的注册表访问代码:

  • SliceStarEntity#doEntityImpact(...)
  • DamageUtil#doProjectileAttack(...)
  • RegistryUtil#getDataDrivenRegistry(...)

在纯客户端上下文中,WorldUtil.getServer() 返回 null,最终触发空指针异常并导致游戏崩溃。

修复方式

本模组通过 Mixin 定向注入 AoA3 的 SliceStarEntity

  • 目标类:net.tslat.aoa3.content.entity.projectile.thrown.SliceStarEntity
  • 目标方法:doEntityImpact(...)
  • 修复策略:如果当前世界是客户端,则直接取消这次客户端命中处理,避免继续执行会访问服务端注册表的 AoA3 逻辑

这样可以保留服务端侧的正常伤害结算,同时绕开客户端本地错误路径。

构建要求

当前仓库已经移除了构建缓存、IDE 配置和无关模板文件,保留的是最小源码集合。

你需要自行准备以下环境:

  • Java 21
  • Gradle 8.8 或兼容版本

构建命令:

gradle build

说明:

  • 当前仓库未包含 gradlew 包装器脚本
  • 如果你希望仓库可直接构建,建议后续补上 gradlewgradlew.batgradle-wrapper.jar

目录说明

src/main/java/net/ming/aoa3_fix/Aoa3_fix.java
src/main/java/net/ming/aoa3_fix/mixin/SliceStarEntityMixin.java
src/main/resources/aoa3_fix.mixins.json
src/main/templates/META-INF/neoforge.mods.toml
fix.txt
  • Aoa3_fix.java:模组入口
  • SliceStarEntityMixin.java:核心修复逻辑
  • aoa3_fix.mixins.json:Mixin 配置
  • neoforge.mods.toml:模组元数据与依赖声明
  • fix.txt:原始崩溃日志,作为问题记录保留

已移除内容

为了让仓库更干净,以下不必要内容已经移除:

  • .gradle/
  • build/
  • .idea/
  • .vscode/
  • 模板示例语言文件
  • 不完整的 gradle/wrapper/ 残留

已知限制

  • 该修复基于 AoA3 3.7.16.1
  • 如果 AoA3 后续修改了 SliceStarEntity 的类名、方法名或参数签名,需要同步调整 Mixin
  • 当前未在此环境中实际执行构建,因为本机没有可用的 Gradle 命令