能量分配器
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | 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。