Fixed the issue where heater damage in 26.1 would knock back players. 修复了26.1加热器伤害会击退玩家的问题#3779
Conversation
PigeonNian
commented
Jun 19, 2026
- 在 DamageTypeTagLoader 中将 heaterBurn 伤害类型加入 NO_KNOCKBACK 标签
- HeaterBlock 改用自定义 ModDamageTypes.heaterBurn 伤害来源替代 hotFloor
- 更新 no_knockback.json 数据文件,包含 heater_burn 伤害类型
- 修正 hammer_removable.json 文件格式问题,确保 JSON 正确闭合
- 在 DamageTypeTagLoader 中将 heaterBurn 伤害类型加入 NO_KNOCKBACK 标签 - HeaterBlock 改用自定义 ModDamageTypes.heaterBurn 伤害来源替代 hotFloor - 更新 no_knockback.json 数据文件,包含 heater_burn 伤害类型 - 修正 hammer_removable.json 文件格式问题,确保 JSON 正确闭合
There was a problem hiding this comment.
好的,这是对提交请求的代码审查。
问题 1:JSON 文件缺少末尾换行符
- 文件:
src/generated/resources/data/anvilcraft/tags/block/hammer_removable.json - 问题: 文件末尾缺少一个换行符 (
\n)。这在 POSIX 标准中是一个小问题,可能会导致某些工具(如diff、cat)的行为不一致。 - 建议: 在文件末尾添加一个换行符。这通常可以通过在编辑器中保存时启用“在文件末尾添加换行符”选项来解决。
问题 2:JSON 文件缺少末尾换行符
- 文件:
src/generated/resources/data/minecraft/tags/damage_type/no_knockback.json - 问题: 同样,文件末尾缺少一个换行符。
- 建议: 在文件末尾添加一个换行符。
问题 3:DamageTypeTagLoader.java 中重复的 rawBuilder 调用
-
文件:
src/main/java/dev/dubhe/anvilcraft/data/tags/DamageTypeTagLoader.java -
问题: 代码中为
DamageTypeTags.NO_KNOCKBACK标签调用了两次provider.rawBuilder(...)。虽然这可能会正常工作(取决于rawBuilder的实现,它可能只是追加元素),但这不是最佳实践,并且可能表明存在逻辑错误或代码冗余。 -
建议: 将两次调用合并为一次,如下所示:
provider.rawBuilder(DamageTypeTags.NO_KNOCKBACK) .addOptionalElement(ModDamageTypes.LOST_IN_TIME.identifier()) .addOptionalElement(ModDamageTypes.HEATER_BURN.identifier());
问题 4:HeaterBlock.java 中的伤害类型变更
- 文件:
src/main/java/dev/dubhe/anvilcraft/block/power/consumer/HeaterBlock.java - 问题: 将伤害类型从
level.damageSources().hotFloor()更改为ModDamageTypes.heaterBurn(level)。 - 建议:
- 确认意图: 请确认
heater_burn伤害类型是否确实旨在替代hotFloor。hotFloor通常与岩浆块相关,而heater_burn可能是一个自定义伤害类型。请确保游戏逻辑上这是正确的。 - 检查伤害类型定义: 确保
ModDamageTypes.heaterBurn(level)返回的DamageSource对象已正确配置(例如,设置了正确的死亡消息、伤害类型标签等)。 - 检查标签一致性: 您已将
heater_burn添加到no_knockback标签中。请确认这是否是预期的行为。通常,烧伤不应该造成击退,所以这很合理。但请确保heater_burn没有意外地被添加到其他不应该存在的标签中。
- 确认意图: 请确认
总结
这是一个相对较小的更改,主要涉及添加新的伤害类型和相关的标签。主要问题是代码风格(缺少换行符)和代码冗余(重复的 rawBuilder 调用)。逻辑变更(伤害类型)看起来是合理的,但需要确认其意图和配置是否正确。
Reason: script execution via -e/-c flag Reply |
|
审查已完成。以下是分析结果: 代码审查摘要:PR #3779结论:✅ 批准 — 代码清晰、范围集中、修改精确。无阻塞性问题。 🟢 主要更改
✅ 验证点1. 语义正确性
2. 一致性检查
3. 数据生成闭环
4. Hammer 移除 JSON 修复
💡 建议(非阻塞)
🔍 未发现的明显问题
📋 总结这是一个精确的 Bug 修复 PR,改动量小(4 个文件,共 ~20 行有效变更),逻辑准确。核心思路清晰:将加热器的伤害来源从通用的 由 Hermes Agent 审查 |