Item Trophy Model

基本信息

属性 值
model ID item
父类 PedestalTrophyModelHandler
注册处 ClientHandler.registerTrophyModelHandlers()

配置字段

字段 类型 默认 含义
registryName 字符串 必填 物品注册名 modid:itemname
meta int 0 damage 值(范围 [0, 32767])
nbt SNBT 字符串 null NBT
xOffset double 0.0 X 轴偏移
yOffset double 自动(见下) Y 轴偏移——若未配置根据 item 类型自动计算
zOffset double 0.0 Z 轴偏移
yawOffset float 0.0 旋转偏移
scale float 自动(见下) 缩放——未配置时按 ItemBlock/物品自动设置

自动 scale/yOffset 计算

calculateScaleAndYOffset:

  • ItemBlock → scale = 1.375f(否则 0.6875f)。
  • yOffset = scale * 0.125 - 0.1875。

选择这个数值是为了抵消 RenderItem.doRender() 的 -0.5(方块)/-0.25(物品)默认 Y 平移,从而让物品正中落在底座顶面。

渲染细节

  1. super.render(...) 底座 + 文字。
  2. 用内置 static Render extends RenderItem 异步渲染 EntityItem——支持附魔光效 (renderDroppedItem 重写:getHasEffect(pass) → RES_ITEM_GLINT + 双层 ItemRenderer.renderItemIn2D)。
  3. 偏移 = (x + xOffset, y + yOffset, z + zOffset);旋转 = 22.5 * rotation + yawOffset。
  4. 缩放后再缩(GL11.glScalef(scale, scale, scale))。

getRenderBoundingBox

按 Math.abs(scale) 推算保守半径,叠加 xyz 偏移。

JSON 示例

展示任意方块作为奖杯:

{
  "id": "golden_apple",
  "condition": {...},
  "model": {
    "type": "item",
    "registryName": "minecraft:golden_apple",
    "meta": 1,
    "scale": 1.0,
    "yawOffset": 45.0
  }
}

相关条目

源码

src/main/java/glowredman/amazingtrophies/model/ItemTrophyModelHandler.java