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) |
相关条目
- 精华冷凝器 - 所属方块
- Thaumic Energistics 集成 -
IAspectStorage钩子