气态光影方块

基本信息

属性 值
方块数量 3(gaseousLight、gaseousShadow、nitorGas)
抽象基类 thaumic.tinkerer.common.block.BlockGas(abstract,继承 BlockMod,实现 ITTinkererBlock)
注册位置 TTRegistry.java:42-43(光/影)、TTRegistry.java:48(尼托)
注册门槛 3 个均无条件注册 —— BlockGas.shouldRegister() 恒返回 true(BlockGas.java:140-142)

功能

BlockGas 是一组无实体、可自上而下消散的气体方块:

  • 材质 Material.air,setBlockBounds(0, 0, 0, 0, 0, 0) 把碰撞盒压成零体积(BlockGas.java:37-41)
  • setTickRandomly(true) 启用随机刻(BlockGas.java:40)
  • getRenderType() 返回 -1(BlockGas.java:54-56),isOpaqueCube() 返回 false(BlockGas.java:95)
  • 图标为空纹理:blockIcon = IconHelper.emptyTexture(...)(BlockGas.java:48-52)
  • updateTick() 读取 meta,meta != 0 时向 6 个正交相邻面传播 meta - 1 的递减层,并立即把自身 meta 置 0(BlockGas.java:59-76)。因此气体以「剩余层数」衰减,每格每 tick 减 1。
  • placeParticle() 在基类中是空实现,由子类覆写(BlockGas.java:78-81)

数值

物品 注册名 Java 类 注册名来源 源码
气态光 gaseousLight BlockGaseousLight BlockGaseousLight.java:45-46 TTRegistry.java:42
气态影 gaseousShadow BlockGaseousShadow BlockGaseousShadow.java:45-46 TTRegistry.java:43
尼托气体 nitorGas BlockNitorGas BlockNitorGas.java:103-104 TTRegistry.java:48
共享属性 值 来源
材质 Material.air BlockGas.java:38
碰撞盒 (0,0,0) → (0,0,0) BlockGas.java:39
随机刻 开启 BlockGas.java:40
渲染类型 -1 BlockGas.java:55
不透明 否 BlockGas.java:95
碰撞盒查询 getCollisionBoundingBoxFromPool(...) 覆写 BlockGas.java:125

对应物品形态

3 个方块各有一个可放置气体的物品形态,由 ItemGas 以单类多形态提供(TTRegistry.java:82,loadMetaItem):

物品形态 注册名 对应方块
本体(index 0) gaseousShadowItem BlockGaseousShadow
meta 1 gaseousLightItem BlockGaseousLight

ItemGas 的两个构造分支由 ItemGas() 与 getMetaItems() 决定(ItemGas.java:45-52):默认构造指向 BlockGaseousShadow,getMetaItems() 额外产出一个指向 BlockGaseousLight 的实例。nitorGas 没有对应的 ItemGas 形态。

另有 ItemGasRemover(gasRemover,TTRegistry.java:83)用于移除气体。

研究

对象 研究键 键值 要素 父研究
气态光 KEY_GASEOUS_LIGHT GASEOUS_LIGHT LIGHT 2 + AIR 1 NITOR
气态影 KEY_GASEOUS_SHADOW GASEOUS_SHADOW DARKNESS 2 + AIR 1 + MOTION 4 GASEOUS_LIGHT,且 setSecondary()
气体移除器 KEY_GAS_REMOVER GAS_REMOVER — —
尼托气体 无 LibResearch 中无对应键 — —

两个气体研究都由物品而非方块提供:ItemGas.getResearchItem() 按 setBlock 分支构造(气态影 ItemGas.java:61-72,气态光 ItemGas.java:73-80),因此由 TTRegistry.postInit() 在遍历 itemRegistry 时注册,而非在遍历 blockRegistry 时。气态光的父研究键 NITOR 是裸字符串字面量,不对应 LibResearch 中的任何常量。

相关条目