方块混合器与混合方块

基本信息

方块混合器 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)。

相关条目

  • 混合器 GUI - BlockMixerGui 的 3 槽容器与渲染切换开关
  • 模组配置 - enableMixedBlocks 与 enhancedMixedBlockPlacement