配置项(ModularUIConfig)

基本信息

属性 值
类 com.cleanroommc.modularui.ModularUIConfig(ModularUIConfig.java:8)
注解 @Config(modid = ModularUI.ID)(:7)→ 配置文件 config/modularui2.cfg
注册 ConfigurationManager.registerConfig(ModularUIConfig.class)(CommonProxy.java:34),捕获 ConfigException 后于 :36 抛 RuntimeException
生效配置项 11(另有 1 个死配置)
语言文件 src/main/resources/assets/modularui2/lang/en_US.lang:42-63
GUI 配置界面 guiFactory = "com.cleanroommc.modularui.config.ModularUIGuiConfigFactory"(ModularUI.java:18)

功能

12 个配置字段,其中 11 个有实际读取方

全部为 public static 字段,由 GTNHLib 的 @Config 注解反射生成配置文件。

⚠️ defaultScrollSpeed 是死配置(详见下节),因此:

统计 值
声明的配置字段 12
有实际读取方的配置项 11
死配置(有 lang 键与范围约束,但 0 读取方) 1(defaultScrollSpeed)
# 字段 行 类型 默认值 约束 读取方数
1 defaultScrollSpeed :13 int 30 @Config.RangeInt(min = 1, max = 100) 0(死配置)
2 smoothProgressBar :17 boolean false —— 1
3 tooltipPos :22 RichTooltip.Pos NEXT_TO_MOUSE 8 个枚举值 1
4 escRestoreLastText :26 boolean false —— 1
5 showSlotOverlay :30 boolean true —— 2
6 guiDebugMode :34 boolean false —— 6
7 useDarkThemeByDefault :38 boolean false —— 1(ThemeAPI.java:69)
8 debugTextColor :42 String "#FFAAAAAA" 支持颜色名与 # 前缀 Hex 1
9 debugOutlineColor :46 String "#DCB42873" 同上 1
10 enableTestGuis :51 boolean ModularUI.isDevEnv @Config.RequiresMcRestart 3,见下
11 enableTestOverlays :56 boolean false @Config.RequiresMcRestart 1

「读取方数」= grep -rn 'ModularUIConfig\.<字段名>' --include=*.java src/ 的命中数。

死配置:defaultScrollSpeed

ModularUIConfig.java:13 声明了 public static int defaultScrollSpeed = 30;, 配了范围约束(:12)和语言键(:10、en_US.lang:42-43), 但全仓没有任何代码读取它。三种独立验证:

# A. 全仓搜标识符(排除 .git):仅声明处 1 处命中
grep -rn 'defaultScrollSpeed' . --exclude-dir=.git
  → ./src/main/java/com/cleanroommc/modularui/ModularUIConfig.java:13

# B. 搜所有命名变体
grep -rniE 'default_scroll|scrollSpeed|scroll_speed|defaultScroll' . --exclude-dir=.git

# C. 搜真正消费滚动距离的代码
grep -rniE 'scroll' --include=*.java src/main/java | grep -iE 'amount|distance|pixels|speed'
  → ScrollArea.java:117  int scrollAmount = (int) Math.copySign(data.getScrollSpeed(), scroll);

实际生效的滚动速度是每个滚动区自己的字段:

位置 内容
widget/scroll/ScrollData.java:60 private int scrollSpeed = 30;
widget/scroll/ScrollData.java:92-94 getScrollSpeed()
widget/scroll/ScrollData.java:96-98 setScrollSpeed(int)
widget/scroll/ScrollArea.java:117 消费点:data.getScrollSpeed()

即 ModularUIConfig.defaultScrollSpeed 是 ScrollData.scrollSpeed 默认值 30 的硬编码重复,改配置文件不会改变任何行为。

enableTestGuis 是唯一的「环境相关」项

默认值不是字面量,而是 ModularUI.isDevEnv(ModularUIConfig.java:51):

// ModularUI.java:43-44
public static final boolean isTestEnv = Launch.blackboard == null;
public static final boolean isDevEnv  = isTestEnv || (boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment");

即:开发/反混淆环境下默认 true,生产环境默认 false。 它控制 3 处逻辑(grep -rn 'enableTestGuis' src/main/java):

读取方 行 后果
CommonProxy.java:45 :45-48 注册 TestEventHandler 并调 TestEventHandler.preInit()
ClientProxy.java:75 :75-78 注册测试热键(小键盘 4)
ClientProxy.java:185 :185 监听该热键打开 Baubles 测试界面

TestEventHandler.preInit()(test/TestEventHandler.java:184-189)是全仓唯一的 方块 / 物品 / TileEntity 注册点:

TestBlock.testBlock.setBlockName("test_block").setBlockTextureName("stone");
GameRegistry.registerBlock(TestBlock.testBlock, "test_block");     // :185
GameRegistry.registerTileEntity(TestTile.class, "test_block");     // :186
TestItem.testItem.setUnlocalizedName("test_item").setTextureName("diamond");
GameRegistry.registerItem(TestItem.testItem, "test_item");         // :188

⚠️ 这 3 个注册是整模组唯一的方块/物品/TileEntity 注册,且默认关闭 (生产环境 enableTestGuis = false)。

一个被注释掉的配置项(死代码)

ModularUIConfig.java:58-60 有 3 行被注释:

//@Config.LangKey("modularui2.config.use_rich_tooltips")
//@Config.Comment("If true, vanilla tooltip will be replaced with MUI's RichTooltip")
//public static boolean replaceVanillaTooltips = false;

对应的语言键也被注释掉(en_US.lang:64-65)。按死代码处理,不计入 11 个生效项。

数值

数值名 值 来源
生效配置项数 11(另有 1 个死配置 defaultScrollSpeed) 本表
默认开启的配置项 2(showSlotOverlay、enableTestGuis〔仅开发环境〕) :30、:51
需要重启生效的配置项 2(enableTestGuis、enableTestOverlays) :49、:54
defaultScrollSpeed 的声明范围 1–100(约束存在但无效) :12
实际生效的滚动速度 30(ScrollData.scrollSpeed,逐滚动区) widget/scroll/ScrollData.java:60

交互

触发 行为
模组 preInit ConfigurationManager.registerConfig 读 config/modularui2.cfg(CommonProxy.java:34)
游戏内设置界面 ModularUIGuiConfigFactory 提供 MUI2 风格配置 GUI(ModularUI.java:18 的 guiFactory)
改 enableTestGuis / enableTestOverlays 需重启(@Config.RequiresMcRestart)
客户端连服务器 SyncConfig 封包(network/packets/SyncConfig.java)同步配置

config/ 包共 8 个文件提供配置 GUI 的自绘实现: ModularUIGuiConfig.java、ModularUIGuiConfigFactory.java、Config.java、 ConfigPanel.java、Value.java、ValueBoolean.java、ValueInt.java、ValueDrawable.java。

相关条目