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