跳到正文
烈焰甘蔗Wiki

南瓜与南瓜灯(Pumpkin / Jack-o’-Lantern)

Chisel 为 16 个南瓜图案各注册一个方块,再为同一批图案注册 16 个对应的南瓜灯方块,共 32 个注册方块。这是 Chisel 里方块数最多的单一家族。

基本信息

属性 值
注册名(南瓜) chisel:pumpkin1 … chisel:pumpkin16
注册名(南瓜灯) chisel:jackolantern1 … chisel:jackolantern16
类 team.chisel.block.BlockCarvablePumpkin extends BlockPumpkin
硬度 1.0F(两个家族都是)
声音 BlockCarvablePumpkin 构造里 setStepSound(Block.soundTypeWood)
创意标签 ChiselTabs.tabOtherChiselBlocks
南瓜灯亮度 ⚠️ 实际 1.0(见下)
雕刻组 pumpkin(17 成员)与 jackolantern(17 成员)两个互相独立的组
ItemBlock ItemCarvablePumpkin
数组字段 ChiselBlocks.pumpkin[16]、ChiselBlocks.jackolantern[16]

⚠️ 南瓜灯亮度被覆写成 1.0(源码行为,未修复) BlockCarvablePumpkin 的构造器对 isOn == true 会 setLightLevel(10.0F)(block/BlockCarvablePumpkin.java:27), 但 Features.JACKOLANTERN 在 new BlockCarvablePumpkin(true) 之后又链式调用了 .setLightLevel(1.0f), 后者覆盖前者。所以 chisel:jackolantern1–16 的实际发光等级是 1.0(原版南瓜灯是 15)。 这是上游行为,本条目如实记录,不做"修正"。

变体与雕刻组

两个组都以原版方块为 order 0:

Carving.chisel.addVariation("pumpkin", Blocks.pumpkin, 0, 0);      // PUMPKIN
Carving.chisel.addVariation("jackolantern", Blocks.lit_pumpkin, 0, 0); // JACKOLANTERN

随后循环把 16 个 Chisel 方块按 order metadata + 1 加进对应组:

方块 组内 order 材质信息
minecraft:pumpkin 0 —
chisel:pumpkin1 … pumpkin16 1 … 16 pumpkin/pumpkin_face_<N>_off
minecraft:lit_pumpkin 0 —
chisel:jackolantern1 … jackolantern16 1 … 16 pumpkin/pumpkin_face_<N>_on

⇒ 每组 17 个成员,pumpkin 与 jackolantern 互不转换。

两组的 ItemBlock 是同一个类 ItemCarvablePumpkin,方块名也不同:南瓜 setBlockName("pumpkin"),南瓜灯 setBlockName("litpumpkin")(与原版一致,便于替换原版南瓜而不打断已有建筑)。

数值

属性 值 来源
注册方块数 32(16 + 16) Features.java PUMPKIN / JACKOLANTERN 两个 for (metadata = 0; metadata < 16; metadata++) 循环
每组成员数 17 1 原版 + 16 Chisel
硬度 1.0 两常量的 setHardness(1.0F)
发光等级(南瓜) 0(不发光) 构造器 isOn = false 分支不设光
发光等级(南瓜灯) 1.0(被覆写) 见上
数组长度 pumpkin / jackolantern 各 16 init/ChiselBlocks.java

交互

触发 行为
左键雕刻刀点击原版南瓜 在 17 个南瓜图案间循环
左键雕刻刀点击原版南瓜灯 在 17 个南瓜灯图案间循环
在南瓜上下各放一层雪(y-1 和 y-2 都是 Blocks.snow) 南瓜被替换成 Chisel 雪人 EntityChiselSnowman,南瓜本身作为雪人的手持物(槽位 2),并撒 120 个 snowshovel 粒子
南瓜 + 铁块构成铁傀儡(横 2×竖 3 的铁块阵) 南瓜被移除,生成一个铁傀儡 EntityIronGolem(setPlayerCreated(true))
合成南瓜灯 无序配方:chisel:pumpkin<N> + 火把 ⇒ chisel:jackolantern<N>(Features.PUMPKIN.addRecipes(),needsMetaRecipes() 返回 true,对 16 个 meta 各跑一次)
雕刻工具 雕刻刀左键切换变体,右键开 GUI

机制一:雪人(BlockCarvablePumpkin.onBlockAdded 第一个分支)

  1. 条件:(x, y-1, z) 与 (x, y-2, z) 都是 Blocks.snow
  2. 客户端先跑;方块替换与刷怪包在 if (!world.isRemote) 里
  3. 先 new ItemStack(world.getBlock(x,y,z), world.getBlockMetadata(x,y,z)) 抓取南瓜
  4. 依次 setBlock(air, 0, 2) 清掉 y、y-1、y-2 三格
  5. EntityChiselSnowman.setCurrentItemOrArmor(2, pumpkin) → 雪人手持该南瓜
  6. setLocationAndAngles(x+0.5, y-1.95, z+0.5, 0, 0) → 生成在原位置略下方
  7. 三个格子各 notifyBlockChange
  8. 紧接着(仍在 if (!world.isRemote) 之外,所以双端都跑)在 y-2 到 y+0.5 范围内撒 120 个 snowshovel 粒子

机制二:铁傀儡(第二个分支,else if)

判定 条件
前置 (x, y-1, z) 或 (x, y-2, z) 是 Blocks.iron_block
flag(横向) (x-1, y-1, z) 与 (x+1, y-1, z) 都是铁块
flag1(纵向) (x, y-1, z-1) 与 (x, y-1, z+1) 都是铁块
触发 flag || flag1
结果 移除 y、y-1、y-2 三格 + 横向或纵向那两格铁块,生成 EntityIronGolem 并 setPlayerCreated(true),位置同为 (x+0.5, y-1.95, z+0.5),最后对被清的每格 notifyBlockChange

第二个分支没有 !world.isRemote 保护——这是上游代码原样,本条目如实记录。

朝向贴图

BlockCarvablePumpkin.getIcon(side, meta) 决定哪一面贴南瓜脸:

条件 贴图
side == 1(顶)或 side == 0(底) pumpkin/pumpkin_top
meta == 2 && side == 2 正面(pumpkin_face_<N>)
meta == 3 && side == 5 正面
meta == 0 && side == 3 正面
meta == 1 && side == 4 正面
其它 pumpkin/pumpkin_side

合成配方

Features.PUMPKIN.addRecipes()(无序,16 份):

chisel:pumpkin<N>  +  torch
      ↓
chisel:jackolantern<N>          (1 : 1)

南瓜灯本身没有其它获取途径(JACKOLANTERN 常量没有 addRecipes())。

相关条目

浏览全部模组