方块混合器与混合方块
基本信息
方块混合器 Block Mixer
| 属性 | 值 |
|---|---|
| 注册名 | malisisdoors:block_mixer |
| 显示名(en_US) | Block Mixer |
| 类 | net.malisis.doors.block.BlockMixer(继承 Block,实现 ITileEntityProvider) |
| TileEntity | net.malisis.doors.entity.BlockMixerTileEntity(注册名 blockMixerTileEntity,Registers.java:353) |
| 材质 | Material.iron(BlockMixer.java:41) |
| 硬度 | 3.0(BlockMixer.java:44) |
| 创造标签 | Malisis' Doors(BlockMixer.java:43) |
| 槽位数 | 3(BlockMixerTileEntity.java:23-32) |
混合方块 Mixed Block
| 属性 | 值 |
|---|---|
| 注册名 | malisisdoors:mixed_block |
| 显示名(en_US) | Mixed Block |
| 类 | net.malisis.doors.block.MixedBlock(继承 Block,实现 ITileEntityProvider) |
| 物品类 | net.malisis.doors.item.MixedBlockBlockItem(Registers.java:345) |
| TileEntity | net.malisis.doors.entity.MixedBlockTileEntity(注册名 mixedBlockTileEntity,Registers.java:354) |
| 材质 | Material.rock(MixedBlock.java:47) |
| 硬度 | 0.7(MixedBlock.java:49) |
| 注册方式 | GameRegistry.registerBlock(mixedBlock, MixedBlockBlockItem.class, ...)(Registers.java:343-347) |
| 注册条件 | 需 enableMixedBlocks = true(Registers.java:105) |
功能
两件套设备:混合器负责把两个方块"混合"成一份配方数据,产出混合方块物品;混合方块放置后同时显示所选两个方块的贴图——用于自定义涂装方块(如渐变墙、图案地板)。
混合器槽位
BlockMixerTileEntity 定义 3 个槽(BlockMixerTileEntity.java:23-32):
| 槽位 | 字段 | 类型 |
|---|---|---|
| 0 | firstInput |
MixerSlot(内部类,BlockMixerTileEntity.java:103-105) |
| 1 | secondInput |
MixerSlot |
| 2 | output |
MalisisSlot,setOutputSlot() 标记为输出槽 |
混合方块放置
onBlockPlacedBy要求手持物品是MixedBlockBlockItem,否则直接返回不写入任何数据(MixedBlock.java:62-64)- 通过
te.set(itemStack)从物品 NBT 还原所选的两个方块(MixedBlock.java:67) - 增强放置判定(
enhancedMixedBlockPlacement,默认true):用EntityUtils.getEntityFacing(player, true)取得玩家视线方向,不潜行时取反方向,使方块朝向"你看着的那一面"而非"你贴着的那一面";结果写入 meta(MixedBlock.java:70-73) - 关闭增强判定时退化为
world.notifyBlockChange(MixedBlock.java:74) - 取回原方块:
getPickBlock用MixedBlockBlockItem.fromTileEntity(te)重建原物品,因此可无损取回(MixedBlock.java:78-85) - 光照透传:
getLightValue返回两个来源方块光值的较大者(MixedBlock.java:87-94)
数值
| 数值名 | 混合器 | 混合方块 | 出处 |
|---|---|---|---|
| 硬度 | 3.0 | 0.7 | BlockMixer.java:44、MixedBlock.java:49 |
| 材质 | Material.iron |
Material.rock |
BlockMixer.java:41、MixedBlock.java:47 |
| 槽位数 | 3 | 不适用 | BlockMixerTileEntity.java:23-32 |
| 光照值 | 不适用 | max(block1, block2) |
MixedBlock.java:87-94 |
合成配方
方块混合器(Registers.java:350-351):
AAA
B B
AAA
| 字符 | 物品 |
|---|---|
A |
铁锭 Items.iron_ingot ×8 |
B |
活塞 Blocks.piston ×2 |
混合方块无合成配方——它只能由混合器产出(grep -n 'mixedBlock' src/main/java/net/malisis/doors/Registers.java 中仅命中 336-347 的构造与注册行,无 addRecipe)。