ModConfig

基本信息

属性 值
类名 squeek.applecore.ModConfig
类型 class,全静态
配置文件 applecore.cfg
配置项 7(server 1 + client 6)
启用版本 Minecraft 1.7.10

功能

集中声明并加载全部配置。分 3 个 category:server、client、general (general 分类被创建并设了语言 key,但没有任何配置项)。

server(1 项)

配置名 字段 类型 默认值
exhaustion.sync.threshold EXHAUSTION_SYNC_THRESHOLD double 0.01D

服务端与客户端消耗值差异超过该值才下发同步包;值越大包越少但客户端显示越跳。

client(6 项)

配置名 字段 类型 默认值
show.food.values.in.tooltip SHOW_FOOD_VALUES_IN_TOOLTIP boolean true
show.food.values.in.tooltip.always ALWAYS_SHOW_FOOD_VALUES_TOOLTIP boolean false
show.saturation.hud.overlay SHOW_SATURATION_OVERLAY boolean true
show.food.values.hud.overlay SHOW_FOOD_VALUES_OVERLAY boolean true
show.food.exhaustion.hud.underlay SHOW_FOOD_EXHAUSTION_UNDERLAY boolean true(迁移值)
show.food.stats.in.debug.overlay SHOW_FOOD_DEBUG_INFO boolean true

实现要点

  • 配置迁移:show.food.exhaustion.hud.overlay 是已废弃的旧键。 sync() 先用默认值 true 读出旧值,随即 config.getCategory(CATEGORY_CLIENT).remove(...) 删除旧键, 再把读到的值作为新键 show.food.exhaustion.hud.underlay 的默认值。 副作用:用户从未改过旧键时,首次生成的新键值来自迁移前的 true, 而非字段声明处的默认值,二者恰好相同故无可见差异。
  • LANG_PREFIX = "applecore.cfg." 供所有项拼接 setLanguageKey, 界面上显示为本地化文本而非原始键名。
  • sync() 结尾 if (config.hasChanged()) save();, 因此配置迁移会在首次运行后落盘。
  • EXHAUSTION_SYNC_THRESHOLD 的比较在 SyncHandler 中用 Math.abs(last - current) >= 阈值,因此恰好等于阈值时也会发包。

相关条目