配置系统(Configuration)

基本信息

属性 值
配置文件 <minecraft>/config/duradisplay.cfg
主配置类 com.caedis.duradisplay.config.DuraDisplayConfig
配置基类 com.caedis.duradisplay.config.Config
配置子类基类 com.caedis.duradisplay.config.ConfigDurabilityLike
配置 GUI 类 com.caedis.duradisplay.config.GuiConfigDuraDisplay
GUI Factory com.caedis.duradisplay.config.GuiFactory(@Mod.guiFactory)
热加载事件 ConfigChangedEvent.OnConfigChangedEvent(modid duradisplay)

顶层配置

分类 键 类型 默认 说明
general Enable boolean true 全局开关;关闭时调 ModSelfDrawnBar.restore() 还原 GT/EIO 自带条带

DuraDisplayConfig.Enable 在 reloadConfigObject 内被立即作用于 ModSelfDrawnBar:

  • Enable=true:change(false)(关掉 GT/EIO 自带条带)
  • Enable=false:restore()

子分类

每个 overlay 对应一个 ConfigDurabilityLike 子类,覆盖 category() 与 postLoadConfig(),分类由 category() 决定:

overlay category()
OverlayDurability durability
OverlayCharge charge
OverlayGadgets gadgets
OverlayContainer container
OverlayPotionBrew potion_brew

子分类下完整键见 配色与样式 的"配置路径"小节。

容器子分类独有键

分类 键 类型 默认 说明
container ShowFullness boolean false false 显示剩余格子,true 显示已占用格子

配置加载流程

  1. DuraDisplay.init(FMLInitializationEvent)(仅客户端)调 DuraDisplayConfig.loadConfig()
  2. loadConfig 检查 configLoaded 防止重复加载;定位 Launch.minecraftHome/config/duradisplay.cfg;实例化 Configuration;调 reloadConfigObject()
  3. reloadConfigObject 读 Enable、切换 ModSelfDrawnBar;遍历 OverlayInfo.getConfigs() 调每个 overlay config 的 loadConfig
  4. OverlayInfo 由编译期注解处理器从 @Overlay 类生成,因此新增 overlay 自动出现在配置里
  5. 任意 overlay 切 Enable 时由 postLoadConfig 钩子即时调 ModSelfDrawnBar.change/restore

热加载

@SubscribeEvent onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent) 监听 Forge 配置变化事件:当 event.modID == "duradisplay" 时调 DuraDisplayConfig.config.save() 与 reloadConfigObject()。

配置 GUI

GuiFactory(IModGuiFactory.mainConfigGuiClass)返回 GuiConfigDuraDisplay。GuiConfigDuraDisplay 继承 GuiConfig:

  • 第一项:Configuration.CATEGORY_GENERAL(含 Enable)
  • 后续每项:遍历 OverlayInfo.getConfigs() 添加 ConfigElement<>(config.getCategory(c.category()))

因此 mod 列表 → “Config” 按钮会显示 general + 五个 overlay 子分类的 GUI 页面。

相关条目