数字格式化配置
基本信息
| 属性 | 值 |
|---|---|
| 类 | com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatConfig |
| 源码 | src/main/java/com/gtnewhorizon/gtnhlib/util/numberformatting/NumberFormatConfig.java |
| 注解 | @Config(modid = "gtnhlib", category = "number_formatting", filename = "gtnhlib-number-formatting") |
| 配置文件 | config/gtnhlib-number-formatting.cfg |
| 注册位置 | CommonProxy.java:97(preInit) |
| 格式化工具 | com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil |
与 GTNHLib 主配置 分离成独立文件,因为它面向所有下游 mod 共享:一个玩家改一次,全服 mod 的数字显示方式一致。
功能
控制 GTNHLib 全局数字格式化:是否用工程学记法、用 mB 还是 L、区域设置等。
数值
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
disableFormattedNotation |
boolean | false |
完全关闭所有格式化,数字原样显示(如 1000000) |
globalDisableExponentialNotation |
boolean | false |
禁用指数记法,不用科学/标准/工程记法 |
useForgeFluidMillibuckets |
boolean | true |
true 用 mB,false 用 GregTech 的 L |
formatPattern |
String | "SCIENTIFIC" |
大数字的呈现方式 |
numberFormatLocale |
LocaleOption |
SYSTEM_DEFAULT |
区域设置 |
EXPONENTIAL_FORMAT |
ExponentialFormat |
SCIENTIFIC |
带 @Config.Ignore,是解析后的运行期缓存 |
formatPattern 的三个合法值(NumberFormatConfig.java:23-25):
| 值 | 效果 | 示例 |
|---|---|---|
SCIENTIFIC |
标准科学记法 | 1.23e12 |
ENGINEERING |
指数为 3 的倍数 | 123e9 |
POWER_OF_TEN |
显式乘法 | 1.23*10^12 |
非法值不抛异常,而是记录错误并回退到 SCIENTIFIC(NumberFormatConfig.java:105-108):
} catch (IllegalStateException ignored) {
GTNHLib.error("Invalid exponential format pattern: '" + formatPattern + "', fell back to SCIENTIFIC");
EXPONENTIAL_FORMAT = ExponentialFormat.SCIENTIFIC;
}
注意 ignored 这个变量名 —— 该 catch 块吞掉异常(只转记为一条 error 日志),属有意设计。
区域设置
LocaleOption 枚举提供 17 个选项,每个带 displayName 与 java.util.Locale。SYSTEM_DEFAULT 的 locale 字段为 null,getLocale() 在此情形下回落:
if (this == SYSTEM_DEFAULT || locale == null) {
return Locale.getDefault(Locale.Category.FORMAT);
}
| 选项 | 格式示例 |
|---|---|
ENGLISH_US |
1,234.56 |
RUSSIAN |
1 234,56 |
GERMAN |
1.234,56 |
FRENCH |
1 234,56 |
SPANISH |
1.234,56 |
ITALIAN |
1.234,56 |
JAPANESE |
1,234.56 |
CHINESE |
1,234.56 |
POLISH |
1 234,56 |
PORTUGUESE_BR |
1.234,56 |
DUTCH |
1.234,56 |
SWEDISH |
1 234,56 |
NORWEGIAN |
1.234,56 |
FINNISH |
1 234,56 |
CZECH |
1 234,56 |
HUNGARIAN |
1.234,56 |
以上 16 项加 SYSTEM_DEFAULT 共 17 个枚举值,与配置文件注释中列出的行数一致(NumberFormatConfig.java:33-52)。
交互
CommonProxy.preInit 在注册配置后立刻调用 NumberFormatUtil.postConfiguration()(CommonProxy.java:103),把配置应用到全局格式化器。
NumberFormatConfig 提供 3 个静态方法供下游查询当前状态:
| 方法 | 返回 |
|---|---|
syncNumberFormatting() |
解析 formatPattern 为 EXPONENTIAL_FORMAT,记录生效的区域设置 |
getActiveLocale() |
当前生效的 Locale |
hasCustomLocale() |
是否选了非 SYSTEM_DEFAULT,供下游检测区域覆盖 |
注释(NumberFormatConfig.java:97)说明 syncNumberFormatting 在 mod 初始化时和配置变更时都会被调用。
配置 GUI 的语言键见 assets/gtnhlib/lang/en_US.lang:
gtnhlib.config.number_formatting.numberFormatLocale=Number Format Locale
gtnhlib.config.number_formatting.numberFormatLocale.tooltip=Select the locale used for number formatting. System Default uses the system language format.
相关条目
- GTNHLib 主配置 - 27 项主配置
- 配置系统 API -
@Config的category与filename成员用法