TileEssentiaCompressor 精华冷凝器方块实体

基本信息

属性 值
类 common/blocks/tiles/TileEssentiaCompressor.java
注册名 gadomancy:TileEssentiaCompressor
注册位置 common/registration/RegisteredBlocks.java:150
所属方块 精华冷凝器
实现接口 IAspectContainer + IEssentiaTransport + thaumicenergistics.api.storage.IAspectStorage

功能

把纵向直列中的多个冷凝器合并成一份共享存储,容量随台数增长。

容量公式

public static final int MAX_SIZE = 8;
public static final int MAX_ASPECT_STORAGE = 3000, STD_ASPECT_STORAGE = 200;

(TileEssentiaCompressor.java:67-68)

每并入一台冷凝器,各要素可用容量增加 (3000 - 200) / 8 = 350(:277-278):

* ((TileEssentiaCompressor.MAX_ASPECT_STORAGE - TileEssentiaCompressor.STD_ASPECT_STORAGE)
        / TileEssentiaCompressor.MAX_SIZE);

缩放系数 mult = incSize * (1D / MAX_SIZE)(:499)。

扩容节奏

扩容判定每 40 tick 做一次(:109):

&& ((this.incSize < TileEssentiaCompressor.MAX_SIZE && (this.ticksExisted % 40) == 0)

结构判定

冷凝器没有 RegisteredMultiblocks 模式,而是用纵向直列判定(:538、:549):

if (!down.equals(RegisteredBlocks.blockEssentiaCompressor)) return null;
...
if (!block.equals(RegisteredBlocks.blockEssentiaCompressor)) return false;

并维护 getMultiblockYIndex()(:605)。此外还能识别 Thaumcraft 基座(:220):

if (!at.equals(RegisteredBlocks.blockStoneMachine) || !(te instanceof TilePedestal)) return false;

Thaumic Energistics 兼容

IAspectStorage 通过 Forge 注解挂接,未安装 TE 时不会链接失败:

注解 位置
@Optional.Interface(iface = "thaumicenergistics.api.storage.IAspectStorage", modid = "thaumicenergistics") :63
@Optional.Method(modid = "thaumicenergistics") :135
@Optional.Method(modid = "thaumicenergistics") :147

编译期依赖为 compileOnly + transitive = false(dependencies.gradle)。

数值

数值名 值
MAX_SIZE 8 台
MAX_ASPECT_STORAGE 3000
STD_ASPECT_STORAGE 200
单台增量 350
满容量 200 + 8 × 350 = 3000
扩容检查间隔 40 tick
多区块 ID 生成 getAndIncrementNewMultiblockId()(:576)

相关条目