Variation Addition Type

基本信息

属性 值
配置文件 config/ChiselTones.cfg
分类 Misc
配置键 variationAdditionType
取值范围 0 ~ 1(整数)
默认值 0
实现类 tehnut.chiseltones.ConfigHandler#syncConfig

功能

控制 ChiselTones 将 Ztones 方块注册进 Chisel 雕刻组(variation group)时的两种不同策略。

读自 ConfigHandler.java 的描述原文:

There are 2 modes supported currently:

0 - Allow chiseling of the Ztones Tile into each of the different types Ztones adds at a meta of 0. Then you cycle through from there. This makes the crafting recipes useless.

1 - Allow chiseling between all the blocks within their type. This requires the user to still craft the type, but makes the cycling useless.

两种模式互斥:玩家在游戏启动后通过修改 ChiselTones.cfg 中的 variationAdditionType 切换。

数值

数值名 默认值 范围 含义
variationAdditionType 0 0–1 注册策略模式选择

两种模式对比

模式 0 — BaseTile 合并模式(默认)

核心差异:把 Ztones 的 33 个方块(含 stoneTile 和 32 个衍生块)以 meta = 0 的形式全部注册到同一个 Chisel 组 "BaseTile" 中,循环遍历时 meta 始终为 0。

实现路径:ChiselTones#addVariations 的 if (variationAdditionType == 0) 分支,调用 addVariationWithoutMeta(groupName, block, order, config) 共 33 次,每次仅注册 block.meta=0 的一种变体,order 从 1 至 33 依次排列。

实际效果:

  • 玩家在 BaseTile 组循环时,可以从任意 Ztones 方块直接雕刻成 agonBlock / bittBlock / crayBlock / … / ztylBlock 中的任何一个。
  • 由于所有变体都是 meta=0,Chisel 的 16 meta 循环不再有意义;玩家的切换实际是跨类型切换。
  • 使 Ztones 自带的合成配方变得无用(玩家用 Chisel 直接雕刻即可,无需配方)。

模式 1 — 类型内循环模式

核心差异:为每个 Ztones 方块单独建立一个独立的 Chisel 组(Agon / Bitt / Cray / … / Ztyl 共 27 个组),在每个组内把 meta = 0..15 共 16 个变体全部注册进去。

实现路径:ChiselTones#addVariations 的 else if (variationAdditionType == 1) 分支,调用 addVariationFast(groupName, block, maxMeta=15, config) 27 次。

实际效果:

  • 玩家只能在同一个 Ztones 类型内循环雕刻 16 种纹理变体。
  • 必须先用 Ztones 配方合成对应类型的方块才能雕刻(否则根本没有这个 Chisel 组的变体可循环)。
  • 使 Chisel 的 16-meta 循环变得无用(每个组都注册了所有 meta,但实际只是同类型的不同外观)。

两种模式对比表

属性 模式 0(默认) 模式 1
Chisel 组数量 1(BaseTile) 27(每个 Ztones 方块一个)
每组变体数 33(每个 Ztones 方块 1 个) 16(每个 meta 一个)
注册时使用的 meta 始终 0 0…15
是否还需要合成配方 否 是
16-meta 循环是否有意义 否 否
玩家使用方式 把任意 Ztones 方块雕刻成其他 Ztones 类型 雕刻同类型内的 16 种纹理

注册过程

无论模式,addVariations() 都在 FMLInitializationEvent 阶段调用(ChiselTones#init):

@Mod.EventHandler
public void init(FMLInitializationEvent event) {
    addVariations();
}

实际调用的是 Chisel 公开 API CarvingUtils.chisel.addVariation(groupName, block, meta, order),所以本 mod 仅作为适配层存在,不注册任何新 Block/Item/TileEntity。

相关条目