AENetworkProxy(appeng.me.helpers.AENetworkProxy)

基本信息

属性 值
源码 appeng/me/helpers/AENetworkProxy.java
类声明行号 48
实现接口 appeng.api.networking.IGridBlock
构造器 :63,四参数 (IGridProxyable te, String nbtName, ItemStack visual, boolean inWorld)
子类 AENetworkProxyMultiblock.java:25

职责

IGridBlock 的唯一内置实现,是方块类机器接入 ME 网络的门面。

me/ 不认识 TileEntity。GridNode 只认识 IGridBlock。 AENetworkProxy 就是这两者之间那层适配。

宿主契约

宿主 tile 实现 IGridProxyable(me/helpers/IGridProxyable.java:16):

方法 行号
getProxy() 18
getLocation() 20 → DimensionalCoord
gridChanged() 22

gridChanged() 的调用方是 Grid.add()(me/Grid.java:183)—— 节点接入网格后立刻回调宿主,让 tile 缓存自己的网引用。

内部状态

字段 行号 含义
gp 50 宿主
worldNode 51 是否在世界中(inWorld 参数)
nbtName 52 存档分段名,注释原文 // name
myColor 53 AEColor.Transparent 起始
data 54 反序列化暂存,注释原文 // input
myRepInstance 55 视觉表示(ItemStack)
isReady 56
node 57 IGridNode —— 与网格的真正连接点
validSides 58 初始 EnumSet.allOf(ForgeDirection.class)(:69)
flags 59 EnumSet.noneOf(GridFlags.class)
idleDraw 60 默认 1.0
owner 61 EntityPlayer

对外方法

方法 行号 说明
setVisualRepresentation(ItemStack) 72
writeToNBT(NBTTagCompound) 76
setValidSides(EnumSet<ForgeDirection>) 82
validate() 89 重新校验连接
onChunkUnload() 95 区块卸载
invalidate() 100 永久失效
onReady() 108
getNode() 121
readFromNBT(NBTTagCompound) 131

三个「快捷」方法与 GridAccessException

方法 行号 返回 失败条件
getPath() 145 IPathingGrid 网为 null 或 IPathingGrid cache 为 null
getGrid() 163 IGrid node 为 null 或 node.getGrid() 为 null
getTick() 174 ITickManager 同上,外加 ITickManager cache 为 null

三个都 throws GridAccessException(me/GridAccessException.java:15), 源码里带注释 short cut!(:158)。

⚠️ getGrid() 的两个 null 语义不同 —— 节点没建 vs 节点建了但没连上网 —— 却抛同一个异常,调用方无法区分。getPath() / getTick() 更进一步, 还把「cache 没注册」也折叠进同一异常。

nbtName 与 GridNode 的 NBT 约定

本类与 GridNode 的 NBT 方法都接受 String name:

侧 方法 行号
本类 readFromNBT / writeToNBT 131 / 76
GridNode loadFromNBT / saveToNBT me/GridNode.java:307 / :322

说明网格数据按「宿主给的名字」分段存取,而不是固定布局。

子类

AENetworkProxyMultiblock(AENetworkProxyMultiblock.java:25) 额外 implements IGridMultiblock,暴露 getMultiblockNodes()(:33)→ Iterator<IGridNode>。 供多方块宿主方块使用(多方块几何见 me/cluster 总览)。

与既有维度的关系

关系 说明
→ tile 维度 上网方块几乎都经本类
→ cable-part 维度 part 走自己的 proxy 体系,本类是方块侧门面
→ me/grid-core 内部 IGridNode(字段 :57)是接入点
→ P2P 接口 part 经 AENetworkProxyMultiblock 上报多方块节点

相关条目