逐材料开关与倍率配置 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 全部内容里摘掉(不注册材料,
因此也不生成该材料的任何配方、渲染映射、流体类型)。见 材料逐项开关。
相关条目
- 材料逐项开关 —
enable.<材料>与材料入选的完整判定 - 全局倍率配置 — 与本页 8 个逐材料倍率相乘的另一半
- general 段配置 —
materialIDRangeStart(本页 material-id 的分配起点) - 材料注册 — 这些倍率最终被喂给 TiC 的哪几个 API
- 部件材料 NBT — 材料 ID 如何变成物品 metadata