SecurityCache(appeng.me.cache.SecurityCache)

基本信息

属性 值
源码 appeng/me/cache/SecurityCache.java
类声明行号 37
实现接口 appeng.api.networking.security.ISecurityGrid
注册 core/Registration.java:550(键 ISecurityGrid.class)
构造器 :47

职责

全网权限判定。回答两个问题:这网归谁(owner)、某玩家能不能做某操作。

判定入口

方法 行号
hasPermission(EntityPlayer, SecurityPermissions) 121
hasPermission(int playerID, SecurityPermissions) 131
getOwner() 153
getSecurityKey() 61
isAvailable() 115

SecurityPermissions 枚举定义在 appeng/api/networking/security/(不在本分片)。

事件订阅

updatePermissions(MENetworkSecurityChange)(:52)—— 带 @MENetworkEventSubscribe,由 NetworkEventBus 反射注册。

OP 白名单(静态,全局)

方法 行号 性质
registerOpPlayer(GameProfile) 164 static
unregisterOpPlayer(GameProfile) 168 static
isPlayerOP(GameProfile) 172 static

⚠️ 这三个是全局静态的,不随网走。OP 身份是玩家属性,不是网络属性。

刻意不实现 split / join

onSplit(:106)、onJoin(:109)、populateGridStorage(:112) 都是空 {}。

设计含义:权限跟着节点走(owner 由方块携带),不跟着 IGridStorage 走。 拆网时每半边各自重新从自己的节点收集 owner,而不是从共享存储复制。 见 GridStorage 的分裂契约。

与方块维度的关系

权限数据的存储在安全站方块里,读取方是 me/storage/SecurityInventory.java:36(构造器接收 TileSecurity)。

相关条目