alchemy_furnace(炉型)
一份 alchemy_furnace 是炉型规格,不是世界里的那一块方块。它说这座炉子能用几个主药格和辅药格、一炉最多放几件材料、炉温过高或停止供热后每 tick 回落多少,以及这款炉型自己的炉温上限(可选)。quality 是可选的:所有炉型共用同一个方块物品 mxt:alchemy_furnace,物品本身说不清是哪一档,只有堆上携带的这份规格报得出——按这份规格造出来的丹炉起始就在这一档。堆上写了自己的 mxt:quality 组件时以组件为准;这份规格没写 quality 时这一层不作答,继续落到注册表 default_quality。
丹炉核心用组件 mxt:alchemy_furnace 携带一份规格。没有这个组件、或它指向的定义不在注册表中时不能开炉,也不会悄悄换成一个内置炉型;放置、存档和正常拆回都保留这份组件。
文件位置
炉型文件放在数据包的 data/<namespace>/mxt/alchemy_furnace/。
用途:炉型规格。
文件名对应它的 ID。例如 data/example/mxt/alchemy_furnace/clay_kiln.json 的 ID 是 example:clay_kiln。
字段
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
quality | 品质 id | 无 | 可选。按这份规格造出来的丹炉起始的档位。 |
main_slots | Integer | 必填 | 主药格数,1..2。 |
auxiliary_slots | Integer | 0 | 辅药格数,0..2。 |
capacity | Integer | 必填 | 一炉材料件数上限,1..320;还要服从物品自己的堆叠上限。 |
cooling_per_tick | Double | 必填 | 炉温高于设定值或没有供热方块时每 tick 回落的量,有限正数,不越过设定值:供热格里有热源时炉温被推向设定值,那一格空着或放的是没有热量的方块时一路降到 0。 |
max_temperature | Double | 无 | 可选。这一款炉型自己能烧到的上限,有限且大于 0,写 0 或负数在加载期被拒。省略=这一层不设上限,炉温上限就只剩炉壁与供热两条。 |
药引固定在辅药仓的第三格,不用字段声明。物理库存是固定的:主药仓 2 格、辅药仓 3 格(2 格辅药加 1 格药引)、产物仓 4 格;规格没用到的主药或辅药格不能放入。开炉扣的是两侧投料仓已用格子的全部数量,不是每格只扣一件。
{
"main_slots": 2,
"auxiliary_slots": 2,
"quality": "example:common",
"capacity": 64,
"cooling_per_tick": 0.5,
"max_temperature": 120
}这款规格写了 max_temperature 时,丹炉核心物品的提示框会在格数与容量之外多印一行「炉型上限」,写的就是这个数。
炉型写下的 quality 就是这座炉子的档位,它落在展示与使用条件上;光改物品上的品质组件也不改变规格里的任何参数。丹方可以要求核心的档位(furnace_quality),也可以逐格要求投进丹炉的药材(input_quality)。更高级的炉子更快:批量时长在丹方 duration 之外还要除以核心那一档自己的 alchemy_modifier(与原料侧最低那一档的修正相乘),所以给高炉阶写 alchemy_modifier: 2 就够了,一行公式都不用写。核心那一档在它自己链上的位置只作为变量 furnace_rank 进丹方自己的公式字段,药力公式与任何 alchemy_modifier 公式都读不到它。档位本身不进炉温上限,进上限的是这份规格自己的 max_temperature:炉温上限是三者取最低——这份规格的 max_temperature(省略=不参与)、砌进炉体的炉壁材料里最低的那个耐温、供热方块给出的最高温,见下节。炉壁与多方块结构不看品质。
丹炉的结构
丹炉不是单方块:玩家手搭一个固定的 3×3×3,没有数据包结构 schema,形状也不能自定义。
| 位置 | 方块 | 作用 |
|---|---|---|
| 正面这一层的中格 | 丹炉核心 | 记这一炉并携带炉型规格;炉温读数与「设定 / 开炉 / 终止」在它的页面上。 |
| 核心后方的左格 | 主药投料仓 | 两个主药格。 |
| 核心后方的右格 | 辅药投料仓 | 两个辅药格加一个药引格。 |
| 中层中心格的上方(顶层正中) | 丹炉产物仓 | 四个产物格,只能取出。 |
| 其余 18 格 | 丹炉炉壁 | 每块携带一种炉壁材料,不打开界面。 |
朝向默认朝北,水平旋转时整座壳一起转,需要校验的格子一共 22 个(底层四角加上面两层)。底层只有四角算结构,其余五格完全不校验:放什么、放不放、区块有没有加载都不影响成型,也不会被认领;整块底面由四角的模型各画四分之一拼出来,所以那五格空着也照样完整。其中底层正中央那一格是供热格,放什么由玩家决定,有热源方块才供热,见 heat_source。壳不齐、炉壁材料缺失或无效、格子被别的炉占了,都不能成型,也不能开炉;界面用文字列出缺了什么。
炉温上限
可设的炉温上限是三者中最低的那个:
- 这份炉型规格自己写的
max_temperature。省略=这一条不参与。 - 18 块炉壁里最低的那个耐温(炉壁材料 的
max_temperature)。 - 供热方块给出的最高温(
mxt:heat_source的max_temperature;方块自己实现供热接口时以它自己的回答为准)。
炉壁能扛 200、供热方块给 150、这份规格写 60 时上限就是 60;这份规格改写 400,上限仍是 150。所以高炉阶规格写大 max_temperature 才抬得上上限,而且抬不过炉壁与供热的那两个数;反过来,一款低阶炉型可以把自己的上限压得很低,哪怕炉壁能扛 200。
设定温度必须有限、落在 0 到上限之间,运行中可以改,非法请求会被拒绝(玩家点温度条点不上去);第一次开炉时它还必须落在配方的温区容差内。炉壁或供热缺一(上限读到 0)时这台炉子根本不能开,温度设定也会被直接拒收。
供热方块放在底层正中央那一格(本地 index 4,上层炉体中心的正下方)。本体没有默认热源方块,也不内置岩浆、火这类数值。