TileEntity Trophy
基本信息
| 属性 | 值 |
|---|---|
| TE 注册名 | amazingtrophies.trophy |
| 关联 Block | Block Trophy |
| 数据字段 | TrophyProperties props, long time, UUID uuid, String name, AxisAlignedBB renderBoundingBox |
| canUpdate | false(不触发 updateEntity) |
| 同步 | S35PacketUpdateTileEntity 自定义描述包 |
NBT 字段
通过 copyToNBT / copyFromNBT 暴露在 TE 与 ItemStack 的 NBT 互相同步:
| 键 | 类型 | 含义 |
|---|---|---|
trophyID |
字符串 | 关联到 AmazingTrophiesAPI.getTrophyProperties(id) 的奖杯配置 |
uuid |
字符串 | 玩家 UUID;空为占位符 |
name |
字符串 | 玩家显示名(拷贝备份,渲染时也会从 UsernameCache 反查刷新) |
time |
long | System.currentTimeMillis() 颁发时间戳 |
行为
getItemStack():new ItemStack(blockTrophy) + setTagCompound(this.getNBT()),把 TE 状态还原为 ItemStack(NBT =trophyID + uuid + name + time)。copyFromNBT:以trophyID为键查AmazingTrophiesAPI拿到TrophyProperties;如果 UUID 合法再用UsernameCache.getLastKnownUsername回填最新玩家名。getRenderBoundingBox:如果modelHandler != null,委托modelHandler.getRenderBoundingBox(centerX, centerY, centerZ);否则走4.5默认半径。getDescriptionPacket/onDataPacket:每次更新 TE 时向客户端发包,保证客户端与服务器 trophy props + time + name 同步。
校验容错
- NBT 中 UUID 字符串无法解析时记录 warn 日志(带坐标 + 维度)。
trophyID找不到对应 props 时props = null—— 渲染时回退到PedestalTrophyModelHandler静态实例。
相关条目
源码
src/main/java/glowredman/amazingtrophies/trophy/TileEntityTrophy.java