目录

crash_Report

复现测试

造一个4*4向下的钻头,打上胶。 在角落放下动力粘性活塞以及活塞杆 使用大小齿轮套接加速动力粘性活塞(使用转速控制器未测到相关bug) 女仆选定为摇手柄模式并跟随。将女仆开始摇动手柄并挖方块之后拉出曲柄范围。 当女仆停止摇曲柄的时候出现崩溃

AI分析

C6C 内容

  • c6c-lite-1.0.0.0.jar 是整合包补丁型模组,不是单功能模组,包含物品、战利品光柱、词条/奖励、Create 兼容、女仆兼容和大量 Mixin。
  • 物品包括 回归药水、深渊派对挑战书、破佑之祝、邪术吊坠、怯懦诅咒、迅击之靴、巨像之戒 等,见 assets/c6c/lang/zh_cn.json。
  • Create 相关内容包括浇水配方、流体/喷嘴/机械结构修正、手摇曲柄女仆兼容、运动结构客户端移除修正等。
  • 女仆相关内容包括 c6c:crank_task,描述是“女仆会寻找并使用最近的手摇曲柄”。
  • Mixin 很多,关键相关项是 Create.HandCrankBlockEntityMixin 和 Create.Bugfix.ContinuousOBBColliderMixin,见 c6c.mixins.json:35、c6c.mixins.json:38。 女仆摇曲柄机制
  • C6C 通过 MaidPlugin 接入车万女仆,把 CrankTask 注册进女仆任务列表。
  • CrankTask 的 ID 是 c6c:crank_task,图标是 Create 的 HAND_CRANK。
  • UseCrankBehaviour 会在女仆附近约 7x3x7 范围搜索 create:hand_crank。
  • 靠近后不是模拟普通右键,而是直接操作 HandCrankBlockEntity:设置 inUse = 20、backwards = false,然后调用 updateGeneratedRotation()。
  • C6C 还通过 HandCrankBlockEntityMixin 给曲柄加了“女仆应力”:128 + 女仆好感度 * 5,持续 20 tick。 崩溃原因
  • 你现有崩溃报告里,真正崩的位置不是 crank_task,而是 Create 的运动结构碰撞:crash-reports/crash-2026-05-16_23.46.20-client.txt:22。
  • 异常是 Cannot read field “x” because “mf.axis” is null,栈在 ContinuousOBBCollider.collideMany,见 crash-reports/crash-2026-05-16_23.46.20-client.txt:23。
  • 也就是说:女仆摇曲柄本身触发了机械网络供能,随后某个 Create 运动结构开始运动/碰撞检测,碰撞检测里遇到了 axis == null 的异常数据。
  • C6C 确实有一个 ContinuousOBBColliderMixin 想修 Create 碰撞里的空轴问题,但它只兜底了 normalAxis,这次崩的是 mf.axis,不是同一个字段。 结论
  • 直接来源:c6c:crank_task 让女仆主动摇 create:hand_crank。
  • 直接崩溃点:Create 运动结构碰撞系统的 mf.axis == null。
  • 触发关系:女仆摇曲柄供能 -> 机械结构运动 -> 碰撞检测执行 -> 触发 Create/Aeronautics/Sable/C6C 相关碰撞链中的空轴崩溃。
  • 优先规避:不要让女仆使用 crank_task 驱动含运动结构/航空结构的机器;改用普通动力源测试。如果停用 crank_task 后不崩,C6C 是触发源;如果手动供能也崩,根因更偏向 Create 航空/运动结构碰撞兼容。

形成原因 你这个判断基本对:崩溃大概率不是“女仆开始摇曲柄”这一瞬间直接炸,而是 女仆被跟随主人逻辑带离曲柄后,C6C 的曲柄任务留下了一个短暂、不连续的 Create 动力状态,进而触发运动结构碰撞崩溃。 完整链路大概是这样:

  1. c6c-lite 注册了 c6c:crank_task。
  2. 女仆执行该任务时,在附近搜索 create:hand_crank。
  3. 找到后,UseCrankBehaviour 直接操作 Create 的 HandCrankBlockEntity。
  4. 它设置:
    • inUse = 20
    • backwards = false
    • maidTick = 20
    • maidStress = 128 + 女仆好感度 * 5
    • 然后调用 updateGeneratedRotation()
  5. 这会让手摇曲柄临时向机械网络提供动力。
  6. 如果女仆继续待在曲柄旁边,任务会周期性重复执行,曲柄就像被持续摇动。
  7. 但如果主人走远,女仆跟随主人离开曲柄范围,crank_task 不再继续刷新曲柄。
  8. 曲柄方块实体里仍然残留上一次 C6C 设置的 inUse / maidTick,最多持续约 20 tick。
  9. 这期间机械网络处于短促供能、断供、再计算的状态。
  10. 如果这个动力连接到了运动结构、航空结构、装配结构、活塞结构、旋转结构等,就可能触发 Create 的运动结构碰撞更新。
  11. 崩溃报告显示真正崩在 Create 的 ContinuousOBBCollider.collideMany,异常是 mf.axis == null。
  12. 所以表面上是“女仆摇曲柄导致崩溃”,实际更像是“女仆离开曲柄后造成动力状态突变,触发某个运动结构碰撞数据异常”。 为什么是“超出范围”后容易发生 UseCrankBehaviour 的设计是一次性脉冲式的,不是完整的“开始摇动 -> 持续摇动 -> 停止摇动”状态机。 它没有保存“当前正在操作哪个曲柄”的长期状态,也没有在女仆离开范围时明确执行:
  • 停止该曲柄
  • 清理 maidTick
  • 清理 maidStress
  • 主动刷新机械网络
  • 避免曲柄残留 inUse 它只是在每次成功靠近曲柄时,把曲柄状态续上 20 tick。 所以一旦女仆因为跟随主人被拉走,逻辑会变成: 女仆摇了一下曲柄 曲柄获得 20 tick 动力 女仆离开范围 C6C 不再续杯 Create 机械网络短暂运行 20 tick 后动力消失 机械网络/运动结构重新计算 客户端碰撞检测遇到异常数据 崩溃 这和你观察到的“女仆跟随主人超出摇杆范围之后产生崩溃”是吻合的。 为什么崩溃栈不直接出现 C6C 因为 C6C 是触发源,不一定是最终抛异常的位置。 崩溃报告的直接异常是: java.lang.NullPointerException: Cannot read field “x” because “mf.axis” is null at com.simibubi.create.foundation.collision.ContinuousOBBCollider.collideMany 这说明最后炸的是 Create 的运动结构碰撞检测。 C6C 在前面做的是: 给曲柄临时动力 -> 让机械结构动起来/停下来 真正崩的是后续 Create 处理运动结构碰撞时,某个碰撞面的 axis 是 null。 C6C 的补丁为什么没防住 C6C 自己也有一个相关 Mixin: “Create.Bugfix.ContinuousOBBColliderMixin” 它看起来是想修 Create 碰撞里的空轴问题。但反汇编后能看到,它兜底的是 normalAxis: if (normalAxis == null) { normalAxis = axis != null ? axis : new Vec3(0, 1, 0); } 但你的崩溃是: mf.axis is null 也就是另一个对象里的 axis 为空。C6C 这个 Mixin 没有覆盖到这次崩溃的字段,所以没防住。 更准确的根因描述 根因可以概括为: C6C 的女仆曲柄任务用“20 tick 临时写入”的方式驱动 Create 手摇曲柄。 当女仆因跟随主人离开曲柄范围后,曲柄供能不连续,导致机械网络/运动结构频繁启停或状态突变。 该状态突变触发 Create 运动结构碰撞检测,而当前整合包里的 Create / Aeronautics / Sable / C6C 碰撞补丁组合存在空 axis 风险,最终客户端崩溃。 为什么手动摇可能不崩 玩家手动摇曲柄时,通常是连续右键、视角固定、位置固定,动力变化比较连续。 女仆摇曲柄则是 AI 脉冲:
  • 每次只续 20 tick
  • 女仆可能被跟随主人任务打断
  • 搜索范围有限
  • 离开后没有显式停止逻辑
  • 曲柄动力可能突然掉线
  • 女仆好感度还会改变临时应力容量 因此它比玩家手动操作更容易制造“不稳定动力源”。 验证方式 你可以这样验证:
  1. 放一个简单曲柄,只接齿轮,不接运动结构。
  2. 让女仆执行 crank_task,然后带她离开范围。
  3. 如果不崩,说明单纯曲柄不致命。
  4. 再把曲柄接到会移动实体/结构的机械上,比如机械活塞、装配体、飞行器相关结构。
  5. 如果离开范围后崩溃复现,说明问题在“曲柄供能突变 -> 运动结构碰撞”。 规避方式
  • 不要让 crank_task 驱动运动结构、航空结构、机械活塞、装配体。
  • 让女仆固定工作范围,避免主人把她拉离曲柄。
  • 不要让女仆处于“跟随主人”和“摇曲柄工作”互相抢控制的状态。
  • 如果只是测试 Create 机器,先用创造马达/水车/风车替代女仆曲柄。
  • 如果需要稳定使用女仆曲柄,最好让曲柄只驱动小型静态机械网络,不连接会生成运动碰撞体的结构。 一句话结论 崩溃形成原因不是女仆“能摇曲柄”本身,而是 C6C 的女仆曲柄任务在女仆离开范围后没有完整停机/清理逻辑,导致 Create 动力状态突变,进而触发运动结构碰撞系统里的 axis == null 崩溃。
关于
4.2 MB
邀请码