全局倍率配置 global.*
TGregRegistry.getGlobalMultiplier(key) / getGlobalMultiplier(key, def):
TGregworks.config.get(Config.Category.Global, key, def, null, 0, 10000).getDouble(def)
Config.Category.Global = "global",所以键就是 global.<key>,没有第二段、没有逐材料后缀。
范围硬编码 0 – 10000,类型 double。读取结果缓存在
TGregRegistry.globalMultipliers 这个 HashMap<String, Float> 里,每个游戏会话只读一次。
8 个全局倍率
| 键 | 代码里的默认 | 影响 | 完整公式 |
|---|---|---|---|
global.durability |
1.0 | 耐久 | (int)(m.mDurability × 本值 × materials.durability.<材料>) |
global.miningspeed |
1.0 | 挖掘速度 | (int)(m.mToolSpeed × 100F × 本值 × materials.miningspeed.<材料>) |
global.attack |
1.0 | 攻击 | (int)(m.mToolQuality × 本值 × materials.attack.<材料>) |
global.handlemodifier |
1.0 | 手柄系数 | (sanitize(m.mToolQuality) - 0.5F) × 本值 × materials.handlemodifier.<材料> |
global.bowdrawspeed |
1.0 | 弓蓄力速度 | (int)(sanitize(m.mToolQuality) × 10F × 本值 × materials.bowdrawspeed.<材料>) |
global.bowflightspeed |
1.0 | 弓飞行速度 | (sanitize(m.mToolQuality) - 0.5F) × 本值 × materials.bowflightspeed.<材料> |
global.arrowmass |
1.0 | 箭质量 | (float)(m.getMass() / 10F × 本值 × materials.arrowmass.<材料>) |
global.arrowfragility |
0.9 | 箭折断概率 | 本值 × materials.arrowfragility.<材料> |
唯一默认不是 1.0 的一项
arrowfragility 的调用是 getGlobalMultiplier(Config.ArrowBreakChance, 0.9) ——
源码显式传了 0.9 作为默认值,其余 7 项走 getGlobalMultiplier(key) 即默认 1.0。
配置注释对这一段写的是 “Determines the break chance of arrows”。
其余 7 项的默认 1.0 让整个式子退化成"GT 原始值 × 逐材料倍率",
即 global.* 是服务器级整体缩放、materials.*.<材料> 是单材料微调——
两层相乘,源码注释也是这么描述的(“Will be directly multiplied with the internally calculated value”)。
与逐材料倍率的区别
| 维度 | global.* |
materials.<key>.<材料> |
|---|---|---|
| 段数 | 2 段 | 3 段 |
| 粒度 | 全局一次调 | 每种材料一个 |
| 读取次数 | 每会话 1 次(缓存) | 每次 getMultiplier 都读 Property |
| 键是否预存在配置里 | 需要手写 | 代码按需自动创建 |
8 个 setCategoryComment(Config.onMaterial(key), "Values between 0.0 and 10000.0 are allowed…")
只给逐材料那 8 项写了注释段;global 段只有一条总注释
(“Values between 0.0 and 10000.0 are allowed. Will be directly multiplied with the internally
calculated value. Applies to all materials.”)。