示例配置
基本信息
| 属性 | 值 |
|---|---|
| 类 | com.gtnewhorizon.gtnhlib.ExampleConfig |
| 源码 | src/main/java/com/gtnewhorizon/gtnhlib/ExampleConfig.java(228 行) |
| 注解 | @Config(modid = GTNHLib.MODID, category = "example", filename = "gtnhlib-example") |
| 类级附加注解 | @Config.Order(0)、@Config.Entry(ExampleConfig.SortedCategory.class) |
| 注册条件 | if (!isObf()) —— 仅开发环境 |
| 注册位置 | CommonProxy.java:99 |
这不是给玩家用的配置,而是 GTNHLib 附带的一份配置系统参考实现:下游 mod 照抄它即可知道 @Config 全部能力怎么用。
功能
isObf()(GTNHLibCore.isObf())返回 runtimeDeobfuscationEnabled,生产环境为 true,即混淆运行。因此 ExampleConfig 只会出现在开发环境(CommonProxy.java:98-99):
ConfigurationManager.registerConfig(NumberFormatConfig.class);
// only register in dev
if (!isObf()) ConfigurationManager.registerConfig(ExampleConfig.class);
普通安装不会生成 gtnhlib-example.cfg。
覆盖的配置特性
| 特性 | 演示位置 |
|---|---|
| 带颜色的字符串条目 | GreenString extends GuiConfigEntries.StringEntry(:140) |
| 排序分类 | @Config.Order(0) + SortedCategory extends GuiConfigEntries.CategoryEntry(:98) |
| 下拉选择 | ModIDEntry extends GuiConfigEntries.SelectValueEntry(:122) |
| 开关按钮 | YellowBoolean extends GuiConfigEntries.ButtonEntry(:157) |
| 嵌套分类 | TestCategory(:44)内再嵌 testCategory2(:50) |
| 可重载字段 | reloadableField(:36) |
| 按 mod 条件显示 | hodgepodgeIntegration(:77)、itemSearchIntegration(:81) |
| 外部 mod 集成示例 | ThaumcraftCategory(:88) |
默认字段值刻意写反以示区别(ExampleConfig.java:29、:36):
public static String greenField = "I should be Green";
public static String reloadableField = "I should be Reloadable";
hodgepodgeIntegration 默认 true 而 itemSearchIntegration 默认 false,用于演示 @Config.RequiresMod 一类注解按已加载 mod 切换默认值的效果。
数值
| 数值名 | 值 |
|---|---|
| 顶层配置字段 | 7(greenField、selectionList、reloadableField、redCategory、hodgepodgeIntegration、itemSearchIntegration、thaumcraft) |
| 嵌套类总数 | 8(TestCategory、testCategory2、ThaumcraftCategory + 5 个 GuiConfigEntries 子类) |
自定义 GuiConfigEntries 子类 |
5(SortedCategory、ModIDEntry、GreenString、RedCategory、YellowBoolean) |
| 生产环境是否注册 | 否 |
ExampleConfig 引用 ThaumcraftCategory(:86),因此该类会触碰 Thaumcraft 相关类型 —— 这也是它只跑在开发环境的原因之一。
交互
玩家在 Forge 配置 GUI 中打开 GTNHLib 条目时,会看到 example 分类下这套演示界面;@Config.Order(0) 把它排在最前。开发者在 IDE 中改本文件即可验证自己新增的 @Config 注解行为。
由于生产环境不注册,ExampleConfig 在正式 jar 中只贡献 1 个未被读取的配置文件类,无运行时副作用。
相关条目
- 配置系统 API - 本页演示的注解全部出自该页
- GTNHLib 主配置 - 生产环境实际生效的 27 项配置