Block Trophy
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | amazingtrophies:trophy |
| TE 类 | glowredman.amazingtrophies.trophy.TileEntityTrophy |
| ItemBlock | glowredman.amazingtrophies.trophy.ItemBlockTrophy |
| Material | glowredman.amazingtrophies.trophy.MaterialTrophy(MapColor.woodColor,冒险模式豁免,不可移动) |
| 硬度 | 1.0f |
| 爆炸抗性 | 默认(继承自 Material 的 null,实际由 isOpaque=false 而失效) |
| 透光 | isOpaqueCube=false, renderAsNormalBlock=false, getRenderType=-1(交给 TESR) |
| 默认碰撞箱 | 上下两层——上层 (0.125, 0.0625, 0.125)–(0.875, 0.3125, 0.875)(基座),下层 (0.0625, 0, 0.0625)–(0.9375, 0.0625, 0.9375)(底板) |
| 物品渲染 | 完整 (0,0,0)–(1,1,1) |
| 贴图 | amazingtrophies:trophy_pedestal |
| unlocalizedName | amazingtrophies.trophy |
该方块是所有奖杯的同一份方块——
TileEntityTrophy的 NBT (trophyID) 决定具体奖杯模型。
功能
- 玩家放置 →
ItemBlockTrophy.placeBlockAt把 NBT 拷贝到 TE,并markBlockForUpdate。 - 玩家长按挖掘 →
BlockTrophy.harvestBlock清方块,removedByPlayer在玩家持精准采集时不复制 BlockTrophy 默认行为,避免碰撞箱爆炸。 getDrops返回 TE 持有的整份 ItemStack(含 NBT,使玩家拿回的是"绑定该奖杯的物品")。getPickBlock同样返回 TE 持有的整份 ItemStack——方便创造模式选择。getSubBlocks(创造栏):枚举AmazingTrophiesAPI.getTrophyIDs(),每个 ID 生成一份 NBT=已设置的 ItemStack。
摆放要求
- 无需特殊邻接/朝向。
placeBlockAt把Math.round(-player.rotationYaw / 22.5f) & 15写入 metadata ——0..15表示客户端绕 Y 旋转 0°…337.5°。- 必须是被
ItemBlockTrophy放置时才会有 NBT → TE 数据流的完整迁移;通过其它方式放置的 ItemTrophy 则 NBT 为空,TE 也只有默认状态。
交互
| 触发 | 行为 |
|---|---|
| 破坏 | TE 持有的 ItemStack 作为掉落物(包含 trophyID/uuid/name/time) |
| 创造栏 | 列出所有注册到 AmazingTrophiesAPI 的奖杯 ID |
所属多方块结构
无(独立方块)。
相关条目
源码
src/main/java/glowredman/amazingtrophies/trophy/BlockTrophy.javasrc/main/java/glowredman/amazingtrophies/trophy/MaterialTrophy.javasrc/main/java/glowredman/amazingtrophies/trophy/ItemBlockTrophy.java