CreateAddition项目中Blaze Burner生物乙醇燃烧异常问题分析
问题现象
在CreateAddition模组1.19.2-1.2.1版本中,使用吸管(Straw)供给生物乙醇(bioethanol)的Blaze Burner出现了燃烧行为异常。具体表现为:
- 燃烧器在装满4000mB燃料的情况下,仅能维持2分钟的超热(Superheated)状态
- 燃烧停止后,需要等待几分钟才能重新进入超热状态
- 燃烧器燃料容量显示始终为满的4000mB
技术背景
Blaze Burner是Create模组中的一种热源设备,CreateAddition模组为其添加了使用生物乙醇作为燃料的功能。正常情况下:
- 生物乙醇作为特殊燃料(FuelType.SPECIAL)可使燃烧器进入超热状态
- 标准燃烧时间为20分钟(对应4000mB燃料)
- 通过Create的泵和管道系统可实现自动燃料供给
问题根源
通过代码分析发现,问题出在BlazeBurnerTileEntity类的燃烧逻辑处理上。关键问题点在于:
- 燃烧时间计算逻辑缺陷:在燃料即将耗尽时,燃烧逻辑提前终止了超热状态
- 状态转换时机不当:当剩余燃烧时间(remainingBurnTime)为1时,燃烧处理被跳过
- 燃料类型转换逻辑:特殊燃料耗尽后转为普通燃料而非无燃料状态的逻辑存在时序问题
解决方案
开发团队提出了两种不同的修复方案:
-
方案一:调整燃烧时间递减的执行顺序
- 将remainingBurnTime的递减操作移到burningTick调用之后
- 确保在燃料即将耗尽时仍能正确处理燃烧状态
-
方案二:修改燃料状态转换逻辑
- 移除特殊燃料转为普通燃料的条件判断
- 直接处理燃料耗尽状态
两种方案都经过测试验证,最终选择了方案一作为更符合设计意图的修复方式。方案一更好地保持了与原始Blaze Cake燃料行为的一致性,同时解决了燃烧中断的问题。
技术启示
这个案例展示了几个重要的模组开发经验:
- 状态机时序处理:对于有状态转换的设备,需要特别注意状态变化的时机和条件
- 燃料系统设计:燃料消耗与实际燃烧效果需要精确同步
- 向后兼容性:修复bug时需要兼顾原有设计意图和玩家预期行为
该问题的修复确保了CreateAddition模组中生物乙醇燃料系统的稳定运行,为自动化生产系统提供了可靠的热源支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考