Trim Custom(自定义材质装饰条)
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | StorageDrawers:trimCustom |
| TileEntity | TileEntityTrim |
| 硬度 | 5.0 |
| 爆炸抗性 | BlockTrimCustom 未定义构造器属性,全部继承 BlockTrim(只 setHardness(5f));从未调用 setResistance,也未覆写 getExplosionResistance,具体数值取父类默认值(本仓库源码中无此数值) |
| 透明性 | 否 |
| 声音 | 木质(BlockTrim 构造器固定 setStepSound(Block.soundTypeWood),不随材质变化) |
功能
自定义材质装饰条(Trim Custom)是独立合成的装饰条方块,材质信息存储在 TileEntityTrim 的 NBT 中。
与 Trim 的关系
- 不是从标准
trim转换来的。⚠️ 原文"通过 Framing Table 将标准 trim 转换而来"是错误的:trimCustom由工作台直接合成(ModRecipes.java:480-...,图案"yxy" / "xyx" / "yxy",'x' = "stickWood"、'y' = ?) - 注册也受
enableFramedDrawers开关控制(默认true),与trim本身是否启用无关:ModBlocks.java:116-117只判断config.isBlockEnabled("trim")后注册trimCustom - 两者功能一致(都是 1/16 格宽的窄条、都是
INetworked连通节点、都不贡献槽位),差别只在外观与材质存储
材质来源
- ⚠️ 原文"任意原木/木板方块(BlockWood 类型)"错误。
TileEntityFramingTable.isItemValidMaterial的判定是block.isOpaqueCube(),即任意不透明方块(黑曜石、石头、金属块……),与BlockWood无关 - 材质数据写入
ItemCustomTrim.makeItemStack(block, 1, matSide, matTrim),落地后由TileEntityTrim存入 NBT
配色方式
- 先用工作台合成一个
trimCustom物品 - 放置 Framing Table,左键或右键打开配方面板
- 槽 0 放入
trimCustom物品,槽 1 放入侧面材质,槽 2 放入装饰条材质(两者都必须是isOpaqueCube() == true的方块) - 槽 4 输出新的
trimCustom物品
重新着色
- 因为是物品级配方,可以反复送进 Framing Table 换不同材质,不存在"只能改一次"的限制
- ⚠️ 不存在"手持木板右键点击已放置的 trimCustom"这条路径:
BlockTrimCustom未覆写onBlockActivated
摆放要求
- 与标准 trim 相同(继承
BlockTrim的放置逻辑) - 可放置于抽屉间的缝隙
BlockTrimCustom覆写isOpaqueCube()返回false(BlockTrimCustom.java:51-53),标准trim则为默认truegetRenderType()走独立渲染器trimCustomRenderID(BlockTrimCustom.java:36-38),getRenderBlockPass()= 1
交互
BlockTrimCustom 没有覆写 onBlockActivated。原文"右键(手持木板时进行材质转换)"是虚构的。
| 触发 | 行为 |
|---|---|
| 左键(挖掘) | 破坏方块,掉落 1 个带材质 NBT 的 trimCustom(getMainDrop → ItemCustomTrim.makeItemStack(this, 1, tile.getMaterialSide(), tile.getMaterialTrim())),材质不丢失 |
| 右键 | 无任何自定义行为,走 Block 默认逻辑 |
| 手持 trimCustom 右键放置 | 在 tile.getMaterialSide() == null 时 onBlockActivated 直接 return false,该方块不可交互 |
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 挖掘难度 | 5.0(继承 BlockTrim) |
BlockTrim.java:34 |
| 声音 | Block.soundTypeWood(固定,不随材质变) |
BlockTrim.java:35 |
| TileEntity | TileEntityTrim(implements ITileEntityProvider,isBlockContainer = true) |
BlockTrimCustom.java:23,33,96-97 |
| 材质槽位数 | 2(side / trim) | ContainerFramingTable.java:100-103 |
| 材质合法条件 | block.isOpaqueCube() |
TileEntityFramingTable.java:115-122 |
材质存储
材质信息通过 TileEntity 存储,包含:
- 使用的木板方块类型
- 材质名称显示
这使得模组可以添加自定义木材种类,并通过 Framing Table 使用。
所属多方块结构
- Drawer Network - 网络成员方块,支持网络计数
相关条目
- Trim - 标准木质装饰条
- Framing Table - 用于材质转换的工具
- Drawer Network - 抽屉网络的整体架构说明
第三方集成
| 集成 Mod | 集成类型 | 功能 |
|---|---|---|
| Waila | 工具提示 | 显示装饰条材质 |
| NEI | 配方/隐藏 | 物品显示和隐藏 |
| Chisel | 变体注册 | 所有装饰条变体的 Chisel 变体注册 |
| MineTweaker | 脚本集成 | OreDictionary 黑/白名单 |
| GTNH | 配方注册 | GTNH/dreamcraft 配方系统 |
| Backhand | 副手兼容 | 副手交互兼容性 |