跳到正文
烈焰甘蔗Wiki

Smeltery

熔炉——本 mod 的核心多方块结构。⚠️ 已订正:原文「Max size 7×7×7」对常量的语义理解有误,且未提及「必须至少有一个岩浆槽」这一硬性判定条件。

结构

角色 方块注册名 TileEntity
控制器 TConstruct:Smeltery SmelteryLogic(IMasterLogic)
从属(必需) TConstruct:LavaTank LavaTankLogic(IServantLogic)
从属 TConstruct:SearedBlock CastingTableLogic / FaucetLogic / CastingBasinLogic
从属 TConstruct:CastingChannel CastingChannelLogic
墙壁材料 TConstruct:SearedBrick 无
观察窗 TConstruct:GlassBlock 无

已订正 1:原文写「Controller: SmelteryLogic tile entity」——把逻辑类当成方块。控制器方块是 TConstruct:Smeltery(类 SmelteryBlock),SmelteryLogic 是它的 TileEntity。 已订正 2:原文称「Drains: SmelteryDrainLogic」并列为独立方块。SmelteryDrainLogic 确实存在(GameRegistry.registerTileEntity(SmelteryDrainLogic.class, "TConstruct.Smeltery_Drain")),但它是 TileEntity 而非已注册的独立方块,原文表述易误导。 已订正 3:原文遗漏下界变体 TConstruct:SmelteryNether(独立注册名,TinkerSmeltery.java:562)。 modid 实测为 TConstruct(TConstruct.java:129)。

尺寸与几何

已订正:原文写「Max size: 7×7×7(MAX_SMELTERY_SIZE = 7)」——对该常量的语义理解有误。

MAX_SMELTERY_SIZE = 7(SmelteryLogic.java:63)在源码中只用作向四周探测空气的循环上界,不是「立方体边长 7」:

for (int i = 1; i < MAX_SMELTERY_SIZE; i++) // don't check farther than needed

alignInitialPlacement()(SmelteryLogic.java:714-756)从控制器朝内那一格出发,分别向 ±X、±Z 交替探测空气格直到撞墙(记录 xd1/xd2/zd1/zd2),再把控制器平移并对齐到内腔中心。

因此真实行为是:

属性 正确描述
尺寸 可变、随已建墙体自动适配,非固定立方体
7 的含义 探测半径上界(源码注释「don’t check farther than needed」)
居中 探测器壁差 > 1 时自动微调 x/z 使四壁差平衡
精确最大外廓 无法核实 — 源码未硬编码最大边长;该值由玩家所砌墙体与 MAX_SMELTERY_SIZE 探测上界共同决定

形成机制

  • 自动检测:放置 TConstruct:Smeltery 控制器后自动沿墙面探测与校验
  • checkValidStructure → checkSameLevel → checkBricksOnLevel(SmelteryLogic.java:776-860)
  • ⚠️ 硬性条件:必须至少 1 个岩浆槽——return check && lavaTanks.size() > 0;(SmelteryLogic.java:859)。没有岩浆槽则整个结构判定失败,熔炉不成立
  • 朝向由 alignInitialPlacement 的 switch 决定(6 个朝向)

数值

数值 值 证据
MAX_SMELTERY_SIZE 7(探测上界,非边长) SmelteryLogic.java:63
MB_PER_BLOCK_CAPACITY ingotLiquidValue * 10 = 1440 mB/格 SmelteryLogic.java:64;ingotLiquidValue = 144
总容量公式 getBlocksPerLayer() * MB_PER_BLOCK_CAPACITY SmelteryLogic.java:115

原文「Capacity: MB_PER_BLOCK_CAPACITY = ingotLiquidValue × 10 per block」表述正确,此处仅补上具体数值 1440 mB。

功能

熔炼矿石、浇铸金属与合金。液体伤害来源为 SmelteryDamageSource(熔融金属伤害)。

熔融金属种类

28 个 molten*Fluid 标识符:alubrass、aluminum、alumite、ardite、bronze、cobalt、copper、electrum、emerald、ender、enderium、glass、gold、invar、iron、lead、lumium、manyullyn、mithril、nickel、obsidian、quartz、shiny、signalum、silver、steel、stone、tin(另有 pigIronFluid,共 29)。

原文称「20+ molten metal registrations」——方向正确(实测 29 个)。 ⚠️ 但其中 mithril、enderium、lumium、signalum、invar、electrum、nickel、silver、lead、shiny 等来自其它 mod 的整合(如 TinkerMechworks / EnderIO / Thaumcraft),并非 TConstruct 自有材料。

⚠️ 幻觉模式规避提示:TConstruct 是上游库,为大量其它 mod 提供 addToolMaterial / addMoltenFluid 等注册 API。审计时不可把这些整合方注册的材料当成 TConstruct 自家注册。TConstruct 自有材料仅 19 种,完整实测表见 ToolPart。 同类上游库条目:Tinkers-Defense、TinkersGregworks。 (另有一处上游库 ThaumicTinkerer 已登记在 relation.md,但 data/thaumictinkerer/ 目录与分类页均尚未建立,故此处不建链接。)

限制

  • 必须有 ≥1 个岩浆槽
  • 控制器必须贴墙成腔,否则探测失败
  • 液体容量随内腔格数线性增长,超出即溢出

接口

SmelteryLogic extends InventoryLogic implements IActiveLogic, IFacingLogic, IFluidTank, IMasterLogic(SmelteryLogic.java:61)

  • IMasterLogic — 主控方块
  • IServantLogic — 从属方块
  • IFacingLogic — 朝向
  • IFluidTank — 液体存储(maxLiquid / currentLiquid)
  • IActiveLogic — 激活状态

相关条目

浏览全部模组