1 Commits
Author SHA1 Message Date
Kim 7b31dd5ab8 性能(BurstDrive):跳过未注册特效的每 tick 查询
Build / build (push) Successful in 20s
根因:
BurstDrive 对每把 SlashBlade 的服务器更新都会读取状态并调用通用特效查询;没有 BurstDrive 注册项的刀也会走到该路径,通用查询还会懒创建空的 SB.SEffect 复合标签。

改动:
在保留根 NBT 获取后,先检查 SB.SEffect 复合标签及 BurstDrive 键。未注册或空标签直接返回;已注册的键继续调用既有 isEffective、损坏状态、粒子和攻击代码。

契约:
已注册的 BurstDrive 仍由原有通用特效 API 决定有效性,包含零值、异常数值类型、玩家状态和后续攻击时序。未注册或空特效标签本来只能得到 None;现在不再为其调用通用查询,也不再写入语义为空的 SB.SEffect 子标签。

性能:
静态计数:未注册刀每个服务器更新从 1 次通用 isEffective/getSpecialEffect 查询及其潜在空子标签写入,降为 2 次 NBT 键存在性检查后返回。已注册刀路径不变。未进行实际服务器性能测量。

验证:
通过 tests/regression/burst_drive_effect_registration_regression.py,检查过滤顺序及空、已注册和异常数值键的分流;通过 ./gradlew --no-daemon compileJava reobfJar --console=plain 与 git diff --check。未在 Forge 多人运行时验证粒子与攻击体验。

Refs: #2
2026-09-14 02:06:37 +08:00