Chisel
Minecraft 装饰性模组,提供大量可雕刻方块、多种纹理变体和自动化雕刻工具。
[!NOTE] 变体组机制:一个变体组内的方块可以互相雕刻替换,但组与组之间互相隔离。 例如
chisel:marble(组marble)与chisel:marble_slab(组marble_slab) 是两个独立组,不能互相转换。
方块
机器与功能方块
- Auto Chisel - 自动化雕刻机,8 槽位 + 4 种升级;不属于任何变体组
- Carvable Beacon - 可雕刻信标,亮度 5.0F,组
beacon(17 成员);有 TileEntity,无法左键雕刻 - Carvable Powered -
BlockCarvablePowered,硬度 5.0F,输出强度 15,组redstone_block(16 成员) - Carvable Lamp - ⚠️ 类存在但从未注册,游戏内不可获得
装饰方块
- Waterstone - 多层水流外观方块,组
waterstone(7 成员,全为 Chisel 自身) - Snakestone - 蛇面装饰;3 个方块分别并入
stonebricksmooth/sandstone/obsidian组 - Present - 节日礼物盒,可开箱双箱,16 变体,组
present - Carvable Glow - ⚠️ 非独立方块,是被复用的基类(
futuraCircuit/hexPlating/hexLargePlating) - Carvable Glowstone - 亮度 1.0F,组
glowstone(16 成员)
透明方块
- Carvable Glass - CTM 连接玻璃,组
glass(18 成员,含glass2) - Carvable Pane - 玻璃板,组
glass_pane(9 成员,metas 5-11 缺号)
建筑方块
- Carvable Slab - 半砖,4 个独立组;两半填满变回满方块
- Carvable Stairs - 楼梯,6 个独立组(
marble_stairs等),与满方块组隔离 - 木板方块 - 22 块可雕刻木板(原版 6 / BOP 14 / TC 2),每块 15 个变体
- 南瓜与南瓜灯 - 32 块(
pumpkin1-16+jackolantern1-16),两个独立组
金属与照明
- 金属储方块 - 20 块
BlockBeaconBase金属方块(可当信标基座)+ 8 块原版金属/宝石雕刻版 - 火把变体 -
chisel:torch1–torch10,组torch(11 成员)
物品
雕刻工具
- Chisel - 4 种材质(IRON/DIAMOND/OBSIDIAN/NETHERSTAR),右键开 GUI、左键切换变体
功能物品
- Upgrade - Auto Chisel 升级(SPEED/AUTOMATION/STACK/REVERSION),最大堆叠 1
- Ball of Moss - 投掷物,把方块转化为苔藓(固定 5 条映射)
- Cloud in a Bottle - 投掷物,生成 40 个
chisel:cloud方块 - Smashing Rock - 投掷物,把石头类方块逐级风化为沙(不破坏方块)
实体
- Chisel Snowman - 无覆写的 EntitySnowman 子类,仅为绕过硬编码
- Ball O’ Moss Entity - 苔藓球投掷实体
- Cloud in a Bottle Entity - 云瓶投掷实体
- Smashing Rock Entity - 粉碎石投掷实体
世界生成
- Marble & Limestone - 脉大小 32,Y 41-128,amount 7 / 8,chance 1
- Granite, Diorite, Andesite - 脉大小 32,Y 41-100,amount 8,chance 0.5
源码
Git commit: 3d3260cd7(tag 2.17.33-GTNH),modid chisel,Minecraft 1.7.10(gradle.properties:24 minecraftVersion = 1.7.10)。纯 Java(155 个 .java,无 .scala / .kt)。
真实注册面(对照 census)
tools/coverage_census.py对本 mod 报 52 个注册点,比值 0.46。这个数字严重低估:Chisel 的方块几乎全部走carverHelper.registerAll(block, name)→CarvableHelper.registerBlock(api/carving/CarvableHelper.java:172-175), 字面量是registerAll/registerBlock(小写 h)而不是registerBlock(大写 B),census 的 grep 看不见。
Features.java 的枚举共有 122 个常量,逐常量用花括号配对解析的真实情况:
| 注册方式 | 字面量数 | 展开后实际方块数 | census 能否看见 |
|---|---|---|---|
carverHelper.registerAll(x, "字面量") |
113 | 113 | ❌ 否 |
carverHelper.registerBlock(x, "字面量") |
19 | 19 | ❌ 否 |
registerAll(x, 变量) 木板循环 |
4 | 22 | ❌ 否 |
CarvableStairsMaker.create() 楼梯 |
6 | 41 | ❌ 否 |
GameRegistry.registerBlock 直接注册 |
9 | 42(含 16 南瓜 + 16 南瓜灯 + 10 火把) | 部分 |
GameRegistry.registerItem |
7 | 7 | ✅ 是 |
EntityRegistry.registerModEntity |
4 | 4 | ✅ 是 |
GameRegistry.registerTileEntity |
3 | 3 | ✅ 是 |
GameRegistry.registerWorldGenerator |
1 | 1 | ❌ 否 |
合计 ≈ 252 个注册方块(carverHelper 路径 113 + 19,木板 22,楼梯 41,直接注册 42,stained_glass_forestry 等零散项另计),方块条目 13(+4 = 17)覆盖的是其中最常用的一批。原版/整合方块并入组的部分(如 Carving.chisel.addVariation("iron_block", Blocks.iron_block, 0, 0))不产生新方块,未计入。
6 个楼梯组的方块数(init/ChiselBlocks.java 数组长度)
| 数组 | 长度 |
|---|---|
marbleStairs / limestoneStairs / iceStairs / packediceStairs |
各 8 |
concreteStairs |
6 |
aluminumStairs |
3 |
| 合计 | 41 |
数组型注册(init/ChiselBlocks.java)
| 数组 | 声明长度 | 实际填充 | 说明 |
|---|---|---|---|
torches |
16 | 10 | torches[10]–[15] 恒为 null |
pumpkin |
16 | 16 | pumpkin1–pumpkin16 |
jackolantern |
16 | 16 | jackolantern1–jackolantern16 |
planks / planks_bop / planks_tc |
6 / 14 / 2 | 全部 | 原版 / BOP / TC 木板 |
stainedGlass / stainedGlassPane |
4 / 8 | 由 1.7+ 兼容分支填充 | stained_glass_forestry 走这里 |
源码中已确认的怪癖(逐条核对)
| 现象 | 涉及对象 | 说明 |
|---|---|---|
| 变体 order 撞车 | 7 个新式金属方块的 metadata 7 | castironblock / titaniumblock / stainlesssteelblock / tungstensteelblock / rppblock / iridiumblock / osmiumblock 的 meta 7 的 order 都是 6,与 meta 6 相同 ⇒ 第 7 号贴图无法用左键循环到,只能从 GUI 选 |
| 变体写了两遍 | chisel:aluminumblock |
metals/aluminum/* 的 6 条 addVariation 出现两次:一次带 order 20–25,一次用三参重载(order 默认 0)⇒ 12 个变体、循环长度翻倍 |
| 数组声明大于填充 | ChiselBlocks.torches[16] |
TORCH 只填 10 个,torches[10]–[15] 恒为 null,源码无任何代码读这 6 个空位 |
| 方块名被覆写 | chisel:jackolantern1–16 |
BlockCarvablePumpkin 构造器对 isOn 设 setLightLevel(10.0F),Features.JACKOLANTERN 随后链式 .setLightLevel(1.0f) 覆盖 ⇒ 实际亮度 1.0(原版南瓜灯 15) |
⚠️ 核对方式:
Features.java的枚举常量用花括号配对切分,变体计数用换行容忍正则carverHelper\s*\.\s*addVariation\s*\(。 单行正则carverHelper\.addVariation会把换行写法的调用漏掉——本轮最初据此误判stainlesssteelblock/tungstensteelblock为 0 变体,实际各 8 个。
软依赖分支(hasRequiredMod())
未装对应 mod 时整个枚举常量被 enabled() 跳过,方块不注册:
| 枚举常量 | 依赖 modid | 产生的方块 |
|---|---|---|
AMBER、ARCANE、TALLOW、THAUMIUM、WOOD_THAUMCRAFT |
Thaumcraft |
amber / arcane / tallow / thaumium / greatwood_planks+silverwood_planks |
WOOD_BOP |
BiomesOPlenty |
14 块 BOP 木板 |
BLOOD_RUNE、BLOOD_BLOCK |
AWWayofTime |
bloodRune / bloodBrick |
AE_CERTUS_QUARTZ、AE_SKY_STONE |
appliedenergistics2 |
0 个方块(只往 AE2 的方块组里加变体) |
GLASS_STAINED |
Forestry(stained_glass_forestry) |
1 |
AE_CERTUS_QUARTZ/AE_SKY_STONE是典型的 census 误报源:carverHelper计数为 0,只调Carving.chisel.addVariation,看起来"有活干"但一个方块都不注册。