数据访问器

基本信息

属性 值
数量 4 个访问器接口
源码目录 src/main/java/mcp/mobius/waila/api/
实现在 mcp.mobius.waila.api.impl.DataAccessorCommon

Waila 向 addon 回调注入的一组只读上下文接口,让 addon 无需直接持有游戏引擎引用即可取数。四个接口的 javadoc 均声明:它们返回的是未经覆盖系统修改的原始数据(例如不会被 getWailaStack 覆盖影响)(IWailaDataAccessor.java:14-17、IWailaEntityAccessor.java:11-14)。

四个接口对照

接口 源码行 方法数 适用回调
IWailaDataAccessor IWailaDataAccessor.java:23 14 方块 / TileEntity provider
IWailaEntityAccessor IWailaEntityAccessor.java:20 7 实体 provider
IWailaCommonAccessor IWailaCommonAccessor.java(53 行) 17 自定义 tooltip 渲染器
IWailaFMPAccessor IWailaFMPAccessor.java(41 行) 10 FMP provider / decorator

IWailaDataAccessor 字段

摘自 IWailaDataAccessor.java:25-51:

方法 返回类型 行
getWorld() World 25
getPlayer() EntityPlayer 27
getBlock() Block 29
getBlockID() int 31
getBlockQualifiedName() String 33
getMetadata() int 35
getTileEntity() TileEntity 37
getPosition() MovingObjectPosition 39
getRenderingPosition() Vec3 41
getNBTData() NBTTagCompound 43
getNBTInteger(NBTTagCompound,String) int 45
getPartialFrame() double 47
getSide() ForgeDirection 49
getStack() ItemStack 51

各接口差异

IWailaEntityAccessor

只有 7 个方法(IWailaEntityAccessor.java:22-36):getWorld、getPlayer、getEntity、getPosition、getRenderingPosition、getNBTData、getNBTInteger、getPartialFrame。没有 getBlock* / getMetadata / getSide / getStack。

IWailaCommonAccessor

供 Tooltip 渲染器 使用,是方块与实体的并集:含 IWailaDataAccessor 全部 14 个方法,另加 getEntity()(IWailaCommonAccessor.java)与 getStack(),共 17 个。渲染器因此能在同一份上下文里同时处理两类目标。

IWailaFMPAccessor

服务 ForgeMultipart,独有两个方法:

方法 返回类型 用途
getFullNBTData() NBTTagCompound 未经选择性裁剪的完整 NBT
getID() String FMP 部件标识串

其余 8 个(getWorld、getPlayer、getTileEntity、getPosition、getNBTData、getNBTInteger、getPartialFrame、getRenderingPosition)与方块版同名。FMP 通路仅在 LoadedMods.FORGE_MULTIPART 为真时启用(LoadedMods.java:7、ProxyServer.java:104-108)。

数值

项 值 来源
IWailaDataAccessor 方法数 14 IWailaDataAccessor.java:25-51
IWailaEntityAccessor 方法数 8 IWailaEntityAccessor.java:22-36
IWailaCommonAccessor 方法数 17 IWailaCommonAccessor.java
IWailaFMPAccessor 方法数 10 IWailaFMPAccessor.java

IWailaEntityAccessor 逐行清点为 8 个方法声明(getWorld、getPlayer、getEntity、getPosition、getRenderingPosition、getNBTData、getNBTInteger、getPartialFrame),与 IWailaDataAccessor 的 14 个形成对照。

交互

客户端世界卸载时 DataAccessorCommon.instance 会被重置(ProxyClient.java:76-84),因此 addon 不应长期持有 accessor 引用,只应在回调期间使用。

相关条目