Diamond Tank Cart(实体)

基本信息

属性 值
注册名 irontankminecarts.minecart_tank_diamond
实体类 secondderivative.irontankminecarts.minecarts.types.EntityMinecartDiamondTank
对应 TankType TankType.DIAMOND
实体 ID 2(EntityRegistry.registerModEntity 传入 TankType.ordinal())
追踪范围 80
更新频率 3 tick
发送速度更新 是
getCapacity() 128,000 mB ≈ 128 桶(按下方公式,代入 Railcraft 罐车配置 32 桶)

[!NOTE] 本条目描述 实体。对应的可放置物品见 同名物品。

功能

由 EntityMinecartDiamondTank 实例化的流体罐车实体,继承自 Railcraft 罐车基类 mods.railcraft.common.carts.EntityCartTank(经 EntityMinecartTankAbstract 一层)。本 mod 只覆写两个方法:

  • tankType() —— 返回固定的 TankType.DIAMOND。
  • getCapacity() —— 返回 EntityMinecartTankAbstract.getCapacity(TankType.DIAMOND)。

速度、摩擦/滚动阻力、GUI 打开方式、装填/卸载、液体注入排出、NBT 持久化、比较器输出、破坏掉落物等行为本 mod 一律未覆写,全部沿用 Railcraft 罐车基类实现(源码中不存在这些方法的覆写)。本 mod 没有自定义 GUI、TileEntity 或 GUI 处理器。

容量公式

// EntityMinecartTankAbstract.getCapacity(TankType type)
RailcraftConfig.getTankCartCapacity() / (FluidContainerRegistry.BUCKET_VOLUME * 16) * 1000 * type.capacity

BUCKET_VOLUME = 1000,化简为(整数除法先算):

容量(mB) = floor(Railcraft 罐车配置桶数 / 16) * 1000 * TankType.capacity

TankType.capacity 是 Irontanks 中该罐类型的桶数系数,本变体为 64。

[!WARNING] 上述 128,000 mB 是代入「Railcraft 罐车容量配置 = 32 桶」的假设结果。本仓库可用的 Railcraft 镜像为 12.1.0-beta-8,而本 mod 在 dependencies.gradle 中声明编译依赖 Railcraft 9.16.33,故该配置项的默认值、以及基类是否真的调用被覆写的 getCapacity() 来决定罐体大小,均未在可用源码中核实。容量随该配置等比缩放,详见 罐车容量与填充速率(Railcraft 配置驱动)。

变体差异

变体 注册名后缀 TankType 实体 ID 容量系数 特有行为
铜 copper COPPER 3 27 无
铁 iron IRON 0 32 无
金 gold GOLD 1 48 无
钢 steel SILVER 4 43 无
钻石 diamond DIAMOND 2 64 无
黑曜石 obsidian OBSIDIAN 5 64 免疫爆炸伤害
铝 aluminium EMERALD 7 96 无
不锈钢 stainlesssteel STAINLESSSTEEL 8 128 无
钛 titanium TITANIUM 9 256 无
钨钢 tungstensteel TUNGSTENSTEEL 10 512 无

除「特有行为」一列外,10 种罐车在源码层面没有其他差异:类结构完全相同,仅 TankType 常量与容量系数不同。速度与摩擦阻力不随 TankType 变化。不存在升级(upgrade)槽位或升级模块机制。

交互

交互方 行为
玩家 继承 Railcraft 罐车基类交互(本 mod 未覆写 doInteract 等交互方法)
方块 未覆写;与轨道/方块的碰撞行为继承自基类

渲染

客户端(ClientProxy.postInit)为该类向 Railcraft 的 CartModelManager.modelsContents 注册一个 ModelSimpleCube 模型,贴图 irontankminecarts:textures/entities/carts/diamond.png,并关闭背面剔除(doBackFaceCulling(false))。

相关条目