# Alloy Smelter Js **Repository Path**: cloudyplayer/alloy-smelter-js ## Basic Information - **Project Name**: Alloy Smelter Js - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-17 - **Last Updated**: 2026-10-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Alloy Smelter Js #### 请到具体的版本分支中查看模组代码、依赖模组 Alloy Smelter 的附属模组,为 KubeJS 提供自定义合金炉的注册入口。客户端与服务端都需安装。 ### 核心能力 - **自定义合金炉**:通过 `StartupEvents.registry("alloy_smelter", ...)` 注册任意层级的炉子,支持 `tier`、`recipeType`、`brickTag`、`coreBlock`、`normalFuel` 等配置。高 tier 自动继承低 tier 的原版配方,与原版层级查找一致。 - **自定义控制器方块**:`forge_controller` 方块类型,可独立设置四面/顶部/侧面/点亮态纹理,并可用 `.fluidCapacity(mB)` 覆盖默认流体容量。 - **数据驱动配方**:`alloy_smelter_js:smelting` 配方类型,`requiredTier` 与 `recipeType` 按 OR 匹配,`otherRecipeType` 可复用原版烹饪配方。 - **独立 JEI 类别**:每个自定义控制器在 JEI 中有独立分类页,包含该炉可接受的全部配方(附属配方 + 继承的原版配方 + `otherRecipeType` 烹饪配方)。 ### 1.1 新增 - **`AlloySmelterEvent.workingTick`**:服务端事件,控制器 `lit=true` 时每 tick 触发一次(含"已点亮但无活跃配方"),升级加速不会重复触发。可读取朝向、tier、进度、配方时长、燃料余量、速度/燃料倍率、储存流体等。 - **四个玩家专属强化槽**:位于主界面右侧,每槽单物品。按 item tag 匹配(不查 NBT),`fuel_upgrade_tier1~5` 每级 +50% 燃烧时长,`effect_upgrade_tier1~5` 每级 +50% 处理速度,四槽加算。速度采用"额外方块实体 tick"实现,1.5× 表现为交替补 tick。**自动化(管道/漏斗)无法访问强化槽**,拆除控制器会掉落强化物品。 - **流体燃料**:`$AlloySmelterApi.fluidFuel(fluid, ticksPer100mB)` 注册通用燃料,或 `.specialFluidFuel(...)` 注册单机专属燃料(优先于通用、绕过 `normalFuel`)。**只有被识别为燃料的流体可入罐,不能混装**;Forge 流体能力只暴露在**四个水平面**,上下不暴露。燃料槽可自动倒入 Forge 流体容器(桶需至少 1000 mB 空间),不足 100 mB 时保留并转而尝试固体燃料。 ### 对原版 Alloy Smelter 的修复 - **数量匹配 Mixin**:原版配方要求每个占用输入槽达到所需数量才能开始/继续,消耗顺序与数量匹配一致(此bug在1.21.1被模组本体修复,固1.21.1本模组没有这项功能);tag 所有备选项在 JEI 页面与配方同步中携带相同数量;所需数量与 Forge ingredient 缓存分离,避免 tag 失效时被重置。 - **Capability 初始化修复**:原版 Forge 控制器在收到 `onLoad` 前被 Refined Storage 导入器查询输出能力时会 NPE 崩服。附属模组改为在构造期初始化四个原版物品能力,跨 `onLoad` 保留并处理失效/复活,原版顶/底/侧库存规则不变。