TileEntityBeamReflector(激光反射器)

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

注册信息

属性 值 来源
TileEntity 注册名 Beam Reflector planets/asteroids/AsteroidsModule.java:317
注册类 micdoodle8.mods.galacticraft.planets.asteroids.tile.TileEntityBeamReflector 同上
关联方块 AsteroidBlocks.beamReflector = new BlockBeamReflector("beamReflector") planets/asteroids/blocks/AsteroidBlocks.java:41
方块→TE 分派 不分 metadata,一律 new TileEntityBeamReflector() planets/asteroids/blocks/BlockBeamReflector.java:73-75
父类 TileEntityBeamOutput(抽象类) planets/asteroids/tile/TileEntityBeamReflector.java:9
实现接口 ILaserNode 同上
所属 modid GalacticraftMars(@Mod(modid = Constants.MOD_ID_PLANETS),常量值 GalacticraftMars) planets/GalacticraftPlanets.java:37-38、core/Constants.java:8
槽位数 无(不实现 IInventory,无 ItemStack[]) planets/asteroids/tile/TileEntityBeamReflector.java:9-101

⚠ 与 Beam Receiver 同属 GalacticraftMars modid—— 小行星带没有独立 modid,不要按目录名编一个 GalacticraftAsteroids。

槽位与字段

没有槽位。反射器字段极少:

字段 类型 语义 源码
color Vector3 = (0,1,0) 激光颜色,参与连线判定 planets/asteroids/tile/TileEntityBeamReflector.java:11
storage EnergyStorage 自身缓冲 planets/asteroids/tile/TileEntityBeamReflector.java:12
nodeList / targetVec / pitch / yaw 继承 父类的节点表与光束朝向 planets/asteroids/tile/TileEntityBeamOutput.java:20-26

⚠ color 与 storage 都没有 @NetworkedField 注解(:11-12), 父类里只有 targetVec 是同步字段(planets/asteroids/tile/TileEntityBeamOutput.java:22-23)。

tick / 能量 / 网络

能量(本篇核心常量)

planets/asteroids/tile/TileEntityBeamReflector.java:12:

private final EnergyStorage storage = new EnergyStorage(10, 1);
常量 值 含义
storage 容量 10 gJ 构造第 1 参(core/tile/TileEntityBeamReflector.java:12)
storage 最大收 / 最大发 2.5 gJ/t 收 / 1 gJ/t 发 两参构造 EnergyStorage(capacity, maxTransfer) 展开为 maxReceive = 2.5F * maxTransfer、maxExtract = maxTransfer(core/energy/tile/EnergyStorage.java:19-21)

⚠ 反射器是只收不发的:extractEnergyGC() 无条件返回 0 (planets/asteroids/tile/TileEntityBeamReflector.java:78-80)。

⚠ 有目标时缓冲直接被绕过:receiveEnergyGC() 在 getTarget() != null 时 把能量转手交给目标节点(:63-72),只有没有目标时才落进自己的 10 gJ 缓冲(:74)。

供能限制

项目 值 源码
允许的能源来源 仅 EnergySourceWireless planets/asteroids/tile/TileEntityBeamReflector.java:83-85
有目标时的额外校验 无线源必须已把本节点 nodes 收进来,否则返回 0 planets/asteroids/tile/TileEntityBeamReflector.java:64-67
连线条件 color 相等 planets/asteroids/tile/TileEntityBeamReflector.java:57-59

节点几何

项目 值 源码
输出点 (x+0.5, y+1.13228/2.0, z+0.5) planets/asteroids/tile/TileEntityBeamReflector.java:32-34
输入点 输出点按 yaw-180 偏移 0.15 格 planets/asteroids/tile/TileEntityBeamReflector.java:20-29
搜索半径 相对坐标差 < 16 planets/asteroids/tile/TileEntityBeamOutput.java:99、:84-87
无目标时 每 tick 调 initiateReflector() 重建节点表 planets/asteroids/tile/TileEntityBeamOutput.java:52-53

网络

项目 值 来源
封包距离 24.0 planets/asteroids/tile/TileEntityBeamReflector.java:37-39
封包冷却 3 tick planets/asteroids/tile/TileEntityBeamReflector.java:42-44
是否同步 true planets/asteroids/tile/TileEntityBeamReflector.java:47-49
自身同步字段 无(只有父类的 targetVec 同步) planets/asteroids/tile/TileEntityBeamReflector.java:9-101

GUI

无 GUI、无 Container,只有渲染器 TileEntityBeamReflectorRenderer (planets/asteroids/AsteroidsModuleClient.java:111 绑定)。 交互用扳手/右键轮换目标(planets/asteroids/blocks/BlockBeamReflector.java:84-95 → planets/asteroids/tile/TileEntityBeamOutput.java:218-244)。

相关条目