燃料与合成

基本信息

属性 值
燃料实现 modernmarkings.init.ModFuelHandler
配方实现 modernmarkings.init.ModRecipes
燃料值 4 tick / 每个标线方块物品
配方数 2
注册时机 均在 FMLPreInitializationEvent

燃料:4 tick

public int getBurnTime(ItemStack fuel) {
    if (fuel == null) return 0;
    if (Block.getBlockFromItem(fuel.getItem()) instanceof BlockBase) {
        return 4;
    }
    return 0;
}

判定条件是「物品对应的方块是 BlockBase 的实例」,因此全部 170 个标线方块都能当燃料,每个值 4 tick。源码注释解释了推导:

Wood plank smelts for 300 ticks, 1 plank + 1 paper = 64 markings One marking smelts for floor(300/64)=4 ticks

即一个木板(300 tick)+ 一张纸产出 64 个标线,把 300 tick 均摊给 64 个即每个 4 tick。

[!WARNING] 这是单件的 4 tick。合成配方一次产出 64 个标线,整批烧完是 64 × 4 = 256 tick,已经超过 1 个木板的 300 tick 的 85%。作为燃料它更像是拆除标线时的顺手处理(避免掉落物无法清除),而不是有意的燃料设计——因为标线本身的主要用途是贴花装饰,掉落成物品堆在地上无法清理才是真问题。

[!NOTE] 粉笔 不受影响:getBlockFromItem 对普通 Item 返回 null,null instanceof BlockBase 为 false,因此粉笔的燃料值是 0。

仅有的 2 个配方

两个配方都只产出出口标线,且都产出 64 个:

地面出口标线

FLOOR_MARKING_EXIT × 64,纸条在上、木板在中:

 X 
 Y 
    
  • X = Items.paper(纸)
  • Y = Blocks.planks(木板)

墙面出口标线

WALL_MARKING_EXIT × 64,木板在左、纸在右(第二行,与地面版不同):

   
XY 
   
  • X = Items.paper
  • Y = Blocks.planks

[!NOTE] 两个配方刻意用了不同的行位置(地面版第 1 行放纸、墙面版第 2 行放纸),使两者在合成网格里不冲突——玩家无法一次做出地面版和墙面版,只能分开合成。

其余 168 个方块没有配方

除两个 exit 外,其余 168 个方块没有任何合成配方,只能通过 Chisel 雕刻台从 Floor blocks / Wall blocks 组循环切换得到。这是本 mod 的预期获取方式。

相关条目