能量分配器

基本信息

属性 值
注册名 RandomThings:energyDistributor
类 lumien.randomthings.Blocks.EnergyDistributors.BlockEnergyDistributor
TileEntity TileEntityEnergyDistributor(ModTileEntities.java:22)
材质 Material.rock(BlockEnergyDistributor.java:31)
硬度 3.0F(:32)
贴图 前面 distributorBasic_Out、侧面 distributorBasic_In(:39-40)
GUI ID GuiIds.ENERGY_DISTRIBUTOR = 12(GuiIds.java:17)
能量 API CoFH cofh.api.energy.IEnergyReceiver
开关 Blocks.EnergyDistributor(RTConfiguration.java:209)

功能

能量分配器把自身缓冲区里的 RF 平均分给正前方一格的机器。它实现 IEnergyReceiver(TileEntityEnergyDistributor.java:19),因此本身也能被上游供能。

朝向

onBlockPlacedBy 用原版活塞的朝向判定写入 te.facing(BlockEnergyDistributor.java:49-54):

int l = BlockPistonBase.determineOrientation(worldObj, posX, posY, posZ, entityLiving);
te.facing = ForgeDirection.getOrientation(l);

默认值是 ForgeDirection.UP(TileEntityEnergyDistributor.java:35),并随方块 NBT 持久化(:45 写 ordinal,:66 读回)。

供能范围

updateEntity 周期性用 WorldUtils.getConnectedTEs(...) 重建接收方缓存,搜索坐标是自身 + facing 偏移一格(TileEntityEnergyDistributor.java:100-105)—— 即只连正前方一格,不做多方块或区域扫描。

缓存只收 IEnergyReceiver(:31),超出上限时裁剪到 ENERGY_DISTRIBUTOR_MAXMACHINES(:107)。

分电公式

int consumed = er.receiveEnergy(Facing.oppositeSide[facing.ordinal()],
        Math.min(limit, Math.min(buffer.getEnergyStored(), Settings.ENERGY_DISTRIBUTOR_PERMACHINE)),
        false);

(TileEntityEnergyDistributor.java:84-87)—— 单机上限 ENERGY_DISTRIBUTOR_PERMACHINE,总量上限 ENERGY_DISTRIBUTOR_PERTICK,且不超过缓冲区实际存量。

GUI 同步

打开 GUI 时通过 MessageContainerProperty 一次性推送 3 个数值(ContainerEnergyDistributor.java:38-43):

下标 含义 GUI 标签
0 缓冲区存量 text.miscellaneous.mc = MC: %s/%s
1 上 tick 分发电量 text.miscellaneous.edlt = Edlt: %s/%s RF
2 已连接机器数 text.miscellaneous.radiusX/Y/Z

容器实现了 IContainerWithProperties(ContainerEnergyDistributor.java:14)。

数值

数值名 值 来源
缓冲区容量 1 000 000 RF Settings.java:53
每 tick 总输出 400 RF Settings.java:50
每台机器上限 60 RF/tick Settings.java:51
最大连接机器数 15 Settings.java:52
供能方向 仅正前方 1 格 TileEntityEnergyDistributor.java:100-105
默认朝向 ForgeDirection.UP TileEntityEnergyDistributor.java:35

以上四个数值均为硬编码常量,RTConfiguration 中没有对应的配置键(Settings.java:50-53 无 config.get 调用)。

交互

触发 行为
右键 打开 GUI ID 12(:57-60)
朝向 放置时由活塞算法决定
比较器 无
上游供能 实现 IEnergyReceiver,可被 RF 网络充能

合成配方

iri
beb
iri
字符 物品
i 铁块(blockIron)
b 红石块(blockRedstone)
r 红石中继器(Items.repeater)
e 充能水(RandomThings:ingredient meta 7)

来源:Library/Recipes.java:278-291。

相关条目