IronTankMinecarts
[!INFO] Git Commit:
b013486| Updated: 2025-09-20
IronTankMinecarts(Iron Tank Minecarts,modid irontankminecarts)是 GTNH / Minecraft 1.7.10 下一个极小的附属 mod,由 2ndDerivative 维护。它只做一件事:把 Irontanks 的每一种罐体做成一个可放在铁轨上的运输罐车。mod 本身不注册任何方块、不含 TileEntity、不含 GUI 处理器、不提供指令与配置项,全部内容是 10 个物品 + 10 个实体。
依赖声明为 @Mod(dependencies = "required-after:Forge@[10.10,);required-after:irontank");gradle.properties 目标为 Minecraft 1.7.10 / Forge 10.13.4.1614;dependencies.gradle 声明编译期依赖 Irontanks 1.4.2 与 Railcraft 9.16.33。源码直接继承 Railcraft 的罐车基类 mods.railcraft.common.carts.EntityCartTank,但 Railcraft 并未写入 @Mod 的 dependencies 字符串。
变体来源:由枚举穷举,不是配置项
变体集完全由 Irontanks 的 TankType 枚举决定,既不是本 mod 的配置项,也不是本 mod 自己定义的等级表:IronTankMinecarts.preInit 遍历 TankType.values(),跳过 GLASS 后为每个剩余值注册一个物品。TankType 共 11 个值,去掉 GLASS(capacity = 0)后恰好得到 10 个变体,与 minecarts/types/ 下的 10 个实体类一一对应。
命名有一处不一致:IronTankMinecarts.tankTypeName() 覆写了两个枚举值的注册名后缀 ——
TankType |
枚举 capacity | 注册名/贴图后缀 | 实体类 | 物品/实体英文名 |
|---|---|---|---|---|
COPPER |
27 | copper |
EntityMinecartCopperTank |
Copper Tank Cart |
IRON |
32 | iron |
EntityMinecartIronTank |
Iron Tank Cart |
GOLD |
48 | gold |
EntityMinecartGoldTank |
Gold Tank Cart |
SILVER |
43 | steel |
EntityMinecartSteelTank |
Steel Tank Cart |
DIAMOND |
64 | diamond |
EntityMinecartDiamondTank |
Diamond Tank Cart |
OBSIDIAN |
64 | obsidian |
EntityMinecartObsidianTank |
Obsidian Tank Cart |
GLASS |
0 | — | 不存在(continue 跳过) |
— |
EMERALD |
96 | aluminium |
EntityMinecartAluminiumTank |
Aluminium Tank Cart |
STAINLESSSTEEL |
128 | stainlesssteel |
EntityMinecartStainlessSteelTank |
Stainless Steel Tank Cart |
TITANIUM |
256 | titanium |
EntityMinecartTitaniumTank |
Titanium Tank Cart |
TUNGSTENSTEEL |
512 | tungstensteel |
EntityMinecartTungstensteelTank |
Tungstensteel Tank Cart |
即:枚举 SILVER 的罐车叫 钢罐车,枚举 EMERALD 的罐车叫 铝罐车。合成时这两者分别用 irontank:silverTank 与 irontank:emeraldTank。
各变体究竟差在哪
穷举 10 个实体类与 10 个物品类后,源码层面的差异只有三项:
TankType常量 —— 决定注册名后缀、贴图、合成用罐体方块、实体 ID。- 容量系数
TankType.capacity—— 27 ~ 512,见 容量设定 的公式与假设说明。 - 黑曜石的爆炸免疫 ——
EntityMinecartObsidianTank是唯一额外覆写方法的类。
其余全部相同,没有任何一项随变体改变:
| 关注点 | 结论 |
|---|---|
| 速度 / 摩擦 / 滚动阻力 | 本 mod 未覆写,10 种罐车完全一致(沿用 Railcraft 基类) |
| GUI 行为 | 本 mod 未覆写任何 doInteract/GUI 方法,10 种一致 |
| 升级(upgrade)支持 | 不存在升级槽位或升级模块机制 |
| 装填速率 | 本 mod 从未引用 getTankCartFillRate(),不由本 mod 决定 |
| 生命值 / 掉落 / 生成条件 | 本 mod 未覆写;罐车是纯运输实体,无生成条件 |
| 碰撞箱 | 继承自 Railcraft 基类,本 mod 未覆写 |
实体 ID 直接取 TankType.ordinal()(COPPER=3、IRON=0、GOLD=1、SILVER=4、DIAMOND=2、OBSIDIAN=5、EMERALD=7、STAINLESSSTEEL=8、TITANIUM=9、TUNGSTENSTEEL=10),追踪范围 80,更新频率 3 tick。实体注册不是硬编码列表,而是 EntityMinecartTankAbstract 的静态块用 Guava ClassPath 扫描 minecarts/types 包、反射调用 (World) 构造器读取 tankType() 后完成。
合成
全部 10 种都是同一种两格有形状配方,唯一差别是罐体方块:
T T = 对应的 Irontanks 罐体方块
M M = 矿车(Minecraft 原版)
渲染
ClientProxy.postInit 为每个物品注册 Railcraft 的 RenderCartItemFiltered(RendererType.Tank),并为每个实体类向 CartModelManager.modelsContents 放入一个 ModelSimpleCube,贴图取自 irontankminecarts:textures/entities/carts/<后缀>.png,关闭背面剔除。语言文件提供 en_US 与 de_DE 两套名称。
实体列表
- 铜罐车(实体) -
TankType.COPPER,系数 27,容量最低档 - 铁罐车(实体) -
TankType.IRON,系数 32 - 金罐车(实体) -
TankType.GOLD,系数 48 - 钢罐车(实体) -
TankType.SILVER(重命名为 steel),系数 43 - 钻石罐车(实体) -
TankType.DIAMOND,系数 64 - 黑曜石罐车(实体) -
TankType.OBSIDIAN,系数 64,唯一免疫爆炸伤害的变体 - 铝罐车(实体) -
TankType.EMERALD(重命名为 aluminium),系数 96 - 不锈钢罐车(实体) -
TankType.STAINLESSSTEEL,系数 128 - 钛罐车(实体) -
TankType.TITANIUM,系数 256 - 钨钢罐车(实体) -
TankType.TUNGSTENSTEEL,系数 512,容量最高档
物品列表
- 铜罐车(物品) - 矿车 +
irontank:copperTank - 铁罐车(物品) - 矿车 +
irontank:ironTank - 金罐车(物品) - 矿车 +
irontank:goldTank - 钢罐车(物品) - 矿车 +
irontank:silverTank - 钻石罐车(物品) - 矿车 +
irontank:diamondTank - 黑曜石罐车(物品) - 矿车 +
irontank:obsidianTank - 铝罐车(物品) - 矿车 +
irontank:emeraldTank - 不锈钢罐车(物品) - 矿车 +
irontank:stainlesssteelTank - 钛罐车(物品) - 矿车 +
irontank:titaniumTank - 钨钢罐车(物品) - 矿车 +
irontank:tungstensteelTank
游戏设定列表
- 罐车容量与填充速率(Railcraft 配置驱动) - 唯一影响本 mod 的外部配置,含容量公式与「哪些数值属假设」的说明