注水火焰(Imbued Fire)
基本信息
| 属性 | 值 |
|---|---|
| 方块数量 | 6 |
| 抽象基类 | thaumic.tinkerer.common.block.fire.BlockFireBase(继承原版 BlockFire,实现 ITTinkererBlock) |
| 注册位置 | TTRegistry.java:56-61(6 次 loadSimpleBlock) |
| 注册门槛 | 6 个全部无条件注册 —— BlockFireBase.shouldRegister() 恒返回 true(BlockFireBase.java:392-394) |
6 种注水火焰是同一基类下的 6 个并列分支,没有各自的属性覆写,差异只在注册名、研究键、以及各自类中引用的 Aspect 上。因此按「同基类 + 变体表」合为一页。
数值
| 火焰 | 注册名 | Java 类 | 研究键 | 键值 | 该类引用的 Aspect | 注册行 |
|---|---|---|---|---|---|---|
| 疾风 | fireAir |
BlockFireAir |
KEY_FIRE_AER |
FIRE_AER |
FIRE、AIR、MAGIC | TTRegistry.java:56 |
| 混沌 | fireChaos |
BlockFireChaos |
KEY_FIRE_PERDITIO |
FIRE_PERDITIO |
FIRE、ENTROPY、MAGIC | TTRegistry.java:57 |
| 大地 | fireEarth |
BlockFireEarth |
KEY_FIRE_TERRA |
FIRE_TERRA |
FIRE、EARTH、MAGIC | TTRegistry.java:58 |
| 炽炎 | fireFire |
BlockFireIgnis |
KEY_FIRE_IGNIS |
FIRE_IGNIS |
FIRE、AIR | TTRegistry.java:59 |
| 秩序 | fireOrder |
BlockFireOrder |
KEY_FIRE_ORDO |
FIRE_ORDO |
FIRE、ORDER、MAGIC | TTRegistry.java:60 |
| 流水 | fireWater |
BlockFireWater |
KEY_FIRE_AQUA |
FIRE_AQUA |
FIRE、WATER、MAGIC | TTRegistry.java:61 |
getBlockName() 来源:各子类 getBlockName() 分别返回 LibBlockNames.BLOCK_FIRE_FIRE / _WATER / _EARTH / _AIR / _ORDER / _CHAOS。
功能
BlockFireBase 在原版火焰之上叠加 3 层可独立开关的机制:
| 机制 | 配置键 | 默认值 | 关闭后行为 | 源码 |
|---|---|---|---|---|
| 火焰本身 | imbuedFire.enabled |
true |
updateTick() 首行直接 return,火焰完全不工作 |
BlockFireBase.java:88-90 |
| 蔓延机制 | imbuedFireSpread.enabled |
true |
tickRate() 返回 0x7ffffff0(约 68 年),实际停止更新 |
BlockFireBase.java:71-73 |
| 蛋糕 | imbuedFire.cake.enabled |
true |
由 BlockFireAir.java:63 读取,关闭后不产生蛋糕 |
BlockFireAir.java:63 |
updateTick() 的完整生效条件是 游戏规则 doFireTick 为真 且 enableFire 为真 且 enableFireMechanics 为真,三者缺一即返回(BlockFireBase.java:88-91)。
蔓延与点燃
- meta 为 0 的方块视为源头,不会自行烧尽;meta ≠ 0 且周边无可燃目标时立即被清除(
BlockFireBase.java:104-109) - meta 在 1–14 之间按
Math.min(blockMeta + rand.nextInt(3) / 2, 15)随机增长;达到 15 后停止蔓延(BlockFireBase.java:126-136) - 下雨且方块上或其四邻可被闪电击中时,火焰被雨水熄灭(
BlockFireBase.java:93-100) rand.nextInt(20) == 0时对 6 个ForgeDirection.VALID_DIRECTIONS邻面做嬗变(BlockFireBase.java:113-122)- 高湿度格令蔓延强度
strMod = -50(BlockFireBase.java:140-145)
合成配方
BlockFireBase 图标按层加载:IconHelper.forName(iconRegister, getBlockName() + "_layer_0") 与 "_layer_1"(BlockFireBase.java:414-415),即每种火焰有 2 层贴图。