逐材料开关与倍率配置 materials.*

Config.onMaterial(key) = "materials." + key,因此本条目覆盖的键全部形如 materials.<key>.<材料名> (外加 Config.StoneboundLevel / Config.ReinforcedLevel 两个常量,值就是 materials.stoneboundlevel / materials.reinforcedlevel,拼法一致)。

每种材料一组,m.mName 是 GT Materials 枚举名(如 Iron / Osmiridium / SteelMagnetic)。 这些键不需要预先存在——它们由代码在遍历 Materials.values() 时按需创建, 所以配置文件里实际出现的材料集合取决于装了哪些 GregTech 模块。

1. 8 个数值倍率(double,默认 1.0,范围 0 – 10000)

TGregRegistry.getMultiplier(m, key):config.get("materials." + key, m.mName, 1.0, null, 0, 10000).getDouble(1.0)。 逐材料乘在 GT 的原始值上,再与同名的 global.* 全局倍率相乘。

键后缀 类型 作用于 公式(addToolMaterial / addBowMaterial / addArrowMaterial)
durability double 耐久 (int)(m.mDurability × global.durability × materials.durability.<材料>)
miningspeed double 挖掘速度 (int)(m.mToolSpeed × 100F × global.miningspeed × materials.miningspeed.<材料>)
attack double 攻击 (int)(m.mToolQuality × global.attack × materials.attack.<材料>)
handlemodifier double 手柄系数 (sanitize(m.mToolQuality) - 0.5F) × global.handlemodifier × materials.handlemodifier.<材料>
bowdrawspeed double 弓蓄力速度 (int)(sanitize(m.mToolQuality) × 10F × global.bowdrawspeed × …)
bowflightspeed double 弓飞行速度 (sanitize(m.mToolQuality) - 0.5F) × global.bowflightspeed × …
arrowmass double 箭质量 (float)(m.getMass() / 10F × global.arrowmass × …)
arrowfragility double 箭折断概率 global.arrowfragility × …(注意这一项没有逐材料全局区分的固定默认,见全局表)

sanitizeToolQuality(int) = Math.max(toolQuality, 1)——Materials.mToolQuality 允许是 0, 但 0 会让 handleModifier / bowFlightSpeed 变成负数,所以统一抬到 1。 源码注释写明:“Materials#mToolQuality may be 0, which can be problematic for some stats”。

arrowfragility 的计算式是 getGlobalMultiplier(Config.ArrowBreakChance, 0.9) —— 它的全局默认是 0.9 (其余 7 项全局默认都是 1.0),逐材料默认仍是 1.0。

2. stoneboundlevel(int,默认 -3 – 3)

TGregRegistry.getStoneboundLevel(m)。正数 = Stonebound,负数 = Jagged。

材料 默认值
Titanium、Tungsten +1
Uranium、Uranium235 -1
其余全部 0

这两张硬编码名单(stonebound1Mats / spiny1Mats)没有任何配置项可以增删,只能逐材料改数值。

⚠️ 源码的配置注释明确说明一个技术限制:“neither ‘Stonebound’ nor ‘Jagged’ will actually appear on the tool’s item tooltip, due to technical limitations” —— 工具提示里看不到这两个效果。

3. reinforcedlevel(int,默认 0 – 3)

TGregRegistry.getReinforcedLevel(m)。硬编码三档名单:

等级 材料
1 SteelMagnetic、BlackSteel、BlueSteel、Titanium、DamascusSteel、StainlessSteel、RedSteel、MeteoricSteel、TungstenSteel
2 Osmium、Iridium
3 Osmiridium
0 其余全部

4. material-id(int,默认 0,范围 0 – 100000 / 0 – 30000)

TGregRegistry.getMaterialID(m)。这是本 mod 自动生成并回写配置的键,不是手写项。

  • 值 > 0 → 直接使用该 ID;
  • 值 0(默认)→ 调 getLatestAvailableNumber() 现分配一个,然后 configProp.set(newID) 回写。

分配算法:从 materialIDRangeStart(见 general 段)起向上找第一个 不在 TConstructRegistry.toolMaterials、也不在本 mod configIDs 里的整数,上限 16383。

⚠️ 两处范围不一致:registerToolParts 里创建属性时用 0 – 100000, getMaterialID 的回退分支里用 0 – 30000。实际写入的 ID 不受 30000 限制(因为上限 16383 先到)。

配置注释的官方指引:“Setting an ID to 0 will regenerate it. When changing materialIDRangeStart, you might want to delete this category so the tool IDs can be regenerated.”

5. enable.<材料>(boolean,默认 true)

虽然不在 materials.* 段下,但同属逐材料门控:config.get("enable", m.mName, true).getBoolean(true)。 设为 false 可以单独把一种 GT 材料从 TGregworks 全部内容里摘掉(不注册材料, 因此也不生成该材料的任何配方、渲染映射、流体类型)。见 材料逐项开关。

相关条目