储罐升级:玻璃>铜

基本信息

属性 值
注册名 irontank:glassCopperUpgrade
未本地化名 item.irontank:glassCopperUpgrade
本地化名 储罐升级:玻璃>铜(zh_CN.lang)
类 com.indemnity83.irontank.item.ItemTankChanger
绑定等级 TankChangerType.GLASSCOPPER(TankChangerType.java:32)
源等级 TankType.GLASS(BuildCraft 原版储罐)
目标等级 TankType.COPPER
最大堆叠 1(ItemTankChanger:29)
耐久 无(构造器未调 setMaxDamage,默认不可损坏)
附魔适用 是(继承 Item,未覆写附魔适用性)

功能

把已放置的 BuildCraft 原版储罐方块升级为 铜储罐。这是 13 个升级器里两个"玻璃"入口之一(另一个是 玻璃>铁)。

核心差异:13 个升级器中只有这 2 个在 onItemUseFirst 里走 else if (worldTile instanceof TileTank) 分支(ItemTankChanger:126-130),即直接作用在 BuildCraft 原版储罐上;其余 11 个只认 TileIronTank。

为什么枚举里要有 GLASS:TankType.GLASS 的 capacity = 0、name = ""、没有注册任何方块(ModBlocks 不含它),它纯粹是一个标记值,让 canUpgrade(GLASS) 这个判定能表达"BuildCraft 原版储罐"。

实际使用场景:开局只有 BuildCraft 储罐、还没做过任何 Irontanks 储罐时的两个入口之一。选它得到 27 桶(成本最低),选 玻璃>铁 得到 32 桶。

使用限制:只对 BuildCraft 原版储罐方块有效。对本 mod 的任何储罐方块右键完全无效且不消耗(canUpgrade(GLASS) 不匹配)。对其他 mod 的储罐也无效。

使用方式

使用方式 触发条件 使用效果 条件/限制
右键方块(onItemUseFirst) 目标 TileEntity 是 BuildCraft TileTank(原版储罐) 流体原样搬入新的铜储罐 TileEntity;方块替换为 irontank:copperTank;消耗 1 个 客户端不预测(world.isRemote 直接 return false),只有服务端生效
右键非储罐方块 — 无事发生,不消耗 ItemTankChanger:131-132 返回 false
右键本 mod 的储罐 — 无事发生,不消耗 canUpgrade(GLASS) 不匹配任何 TankType 储罐

不需要先倒空储罐 —— 代码直接搬运 tank.getFluid()(:136),空罐满罐都能用。

合成配方

TankChangerType.GLASSCOPPER.recipe = {"3c3", "zjz", "rcv"}:

[ 3  3  3 ]
[ z  j  z ]
[ r  c  v ]
字母 物品 矿石字典 / 来源
3 铜螺丝 screwCopper ×2(目标等级的材料)
c 铜双层板 plateDoubleCopper(目标等级)
j 玻璃板 plateGlass(源等级 = 玻璃的标记)
z 玻璃板 paneGlass ×2(两侧)
r 硬锤 craftingToolHardHammer(必消耗)
v 螺丝刀 craftingToolScrewdriver(必消耗)

结构:顶行 = 目标等级的双层板 + 目标等级螺丝,中行 = 源等级材料板,底行 = 硬锤 + 螺丝刀。13 个升级器配方结构完全一致。

⚠️ TankType.GLASS.materials 写的是 blockGlass(玻璃方块),但配方实际用 plateGlass(玻璃板)—— 两处不一致,但因 materials 是死字段(addRecipe 的 'x'/'y' 槽在 13 条配方串里从未出现),不影响合成结果。

另注:配方串不含 'x'/'y',所以 addRecipe() 里 source.materials × target.materials 的双重循环只跑 1 次。

数值

属性 值
源容量 0 桶(TankType.GLASS;BuildCraft 原版储罐自身容量由 BuildCraft 决定,不在本仓库内)
目标容量 27 桶 = 27000 mB
容量变化 +27 桶
目标硬度 / 抗爆 4.0 / 2.0
失败时是否消耗 否

相关条目