方块
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 是全仓唯一实现该接口的方块。