Entity Trophy Model
基本信息
| 属性 | 值 |
|---|---|
| model ID | entity |
| 父类 | PedestalTrophyModelHandler |
| 注册处 | ClientHandler.registerTrophyModelHandlers() |
配置字段
| 字段 | 类型 | 默认 | 含义 |
|---|---|---|---|
entity |
字符串 | 必填 | 实体名或全限定类名(EntityList.stringToClassMapping 优先,回退 Class.forName) |
yOffset |
double | -0.1875 |
模型上下偏移(沿 Y,相对底座顶面) |
yawOffset |
float | 180.0 |
模型初始偏航 |
scale |
float | 0.34375 |
整体缩放(11/32,约 0.34 倍) |
nbt |
SNBT 字符串 | "{}" |
渲染前应用到实体的 NBT(用于伪造特殊属性) |
实体实例化:
clazz.getConstructor(World.class).newInstance((World) null),再调用entity.readFromNBT(compound)应用 NBT。无 World 多用于渲染,但若实体依赖 World 内部状态可能出现 NPE。
渲染细节
先 super.render(...) 渲染底座,然后:
- 复制
BossStatus当前状态(bossName,hasColorModifier,healthScale,statusBarTime)——若 entity 实现IBossDisplayData,渲染结束后还原这些字段,避免影响实际 boss bar。 - 旋转 =
yawOffset - 22.5f * rotation。 - 通过
RenderManager.instance.getEntityRenderObject(entity)获取Render<? extends Entity>并doRender(...)。 finally块中entity.setWorld(null),断开实例与世界的关联。
对
EntityLivingBase与EntityDragon还会联动renderYawOffset / prevRenderYawOffset / rotationYawHead / prevRotationYawHead(及龙身ringBuffer),保证完整跟随旋转。
getRenderBoundingBox
按 scale * max(width, height) 推算体积——实体比底座大很多,必须扩 Box 避免被视锥剔除。
JSON 示例
在底座上展示钻石剑当作奖杯:
{
"id": "creeper_head",
"condition": {...},
"model": {
"type": "entity",
"entity": "Creeper",
"scale": 0.5,
"yOffset": -0.2
}
}
相关条目
源码
src/main/java/glowredman/amazingtrophies/model/EntityTrophyModelHandler.java