TileLaser

事实基准:/Users/evlos/a/mirror/BuildCraft(master,minecraftVersion = 1.7.10)逐行读源码。

注册信息

属性 值 来源
TileEntity 注册名 net.minecraft.src.buildcraft.factory.TileLaser BuildCraftSilicon.java:145
注册类 buildcraft.silicon.TileLaser 同上
所属 modid BuildCraft|Silicon BuildCraftSilicon.java:63
关联方块 Laser 方块(注册变量 laserBlock,方块类 BlockLaser) BuildCraftSilicon.java:76、:100-102
父类 TileBuildCraft silicon/TileLaser.java:31
实现接口 IHasWork / IControllable 同上
是否配置门控 否(无条件注册) BuildCraftSilicon.java:145

槽位数量与布局

没有物品槽位(不实现 IInventory)。 Laser 是能量发射器,本身不存物品。

能量(回源码读常量)

silicon/TileLaser.java:49:

this.setBattery(new RFBattery(10000, 250, 0));
参数 值
容量 10000
每 tick 接收上限 250
最小接收量 0

⚠️ 注意这与它供给的机器用的不是同一套单位: Laser 容量 10000 与 TileRefinery 相同(10000), 但每 tick 接收上限只有 250(Refinery 是 1500)—— Laser 是「大容量、小进料」,因为它的能量要分给下游多台机器。

处理速率 / 耗时

silicon/TileLaser.java:33-34:

常量 值 含义
LASER_OFFSET 2.0F / 16.0F = 0.125 渲染偏移(像素→方块比例),2/16 格
POWER_AVERAGING 100(short) 功率平均窗口:出力用滑动平均平滑,避免抖动

⚠️ LASER_OFFSET = 2.0F/16.0F 是渲染用的亚像素偏移,不是任何速率或尺寸。 把它说成「激光长度 0.125 格」即为量纲写反。

⚠️ POWER_AVERAGING = 100 是平滑窗口的样本数, 不是「每 100 tick 发射一次」。实际输出速率由下游 ILaserTarget.getRequiredEnergy() 决定。

与下游机器的契约

Laser 实现 IHasWork / IControllable,向 ILaserTarget 接口的机器 (TileAdvancedCraftingTable 等)供能。 [TileAdvancedCraftingTable](tile-advanced-crafting-table) 的 REQUIRED_POWER = 5000(silicon/TileAdvancedCraftingTable.java:59) 就是由这套契约传入的需求值。

⚠ 多方块提示:Laser 不是多方块结构。它是一个单方块, 通过能量网络向 [BlockLaserTable](block-laser-table-meta-map) 家族供能。 没有面板、没有控制器、不可旋转。

GUI / Container

没有 GUI,也没有 Container—— silicon/gui/ 目录下不存在 ContainerLaser / GuiLaser, SiliconGuiHandler 的 7 个分支(:44–:86)全部对应 6 种 BlockLaserTable 机器 + Packager, 不含 Laser 本身。

蓝图 / 转向

Laser 放置后由玩家用红石板 / 路径标记定义朝向与作用范围, 状态存在 TileConstructionMarker 的 laser(LaserData)字段里。

网络封包

走 TileEntity 默认 NBT 同步。无独立的 Silicon 专用封包 ID。

相关条目