方块

pV=nRT 全部内容中只有 1 个方块,且当前无法被玩家获得。

风扇(Fan)

属性 值 来源
内部名 fan CommonProxy.preInit 的 GameRegistry.registerBlock(BlockFan.FAN, "fan")
类 pvnrt/block/BlockFan.java
材质 Material.iron BlockFan 构造器
朝向属性 FACING,用 GTNHLib 的 DirectionBlockProperty.facing() 通过 BlockPropertyRegistry.registerProperty 注册
体积 1000 getVolume() 硬编码
遮挡掩码 直接取 FACING 的 ForgeDirection.flag(即仅朝向面开放) getOcclusionMask()
是否参与气体 tick 是(processesGasTicks() 恒返回 true)
贴图 复用原版 furnace_side(侧面)与 furnace_front_on(正面) registerBlockIcons()

onBlockPlacedBy 复用原版 BlockPistonBase.determineOrientation 决定朝向。

气体行为

doGasTick() 每次把气体从自身位置朝 FACING 方向推一格:

manager.mixGasses(x, y, z, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, 100_000, true);

第二个数值 100_000 为字面量(未由任何配置 setter 赋值),表示单次 tick 的驱动量。若本次实际移动量 moved > 0.01,则向梯度缓冲写入 dir.offset * 1.75f 的梯度,供 梯度渲染 着色。

玩家可达性

🚨 风扇没有对应的 ItemBlock——全仓 grep -rn "ItemBlock" src/ 0 命中。GameRegistry.registerBlock 只注册了 Block 本身,因此:

  • 无法通过创造模式物品栏获得
  • 无法通过 /give 获得(无物品形式)
  • 无法被活塞、箱子等机制搬运

配合 源码缺陷 中提到的本地化缺失,tile.fan.name 键也不存在。

GasAwareBlock 接口

pvnrt/block/GasAwareBlock.java 是让任意方块接入气体系统的扩展点,共 3 个方法:

方法 默认值 用途
getVolume(world,x,y,z) 无默认 该方块占用的体积
getOcclusionMask(world,x,y,z) 无默认 哪些面可传导气体
processesGasTicks(...) false 是否每 tick 主动做气体运算
doGasTick(..., GradientBuffer) 空实现 主动运算逻辑

BlockFan 是全仓唯一实现该接口的方块。

相关条目