Databack 配置项

基本信息

属性 值
配置类 databack.DatabackConfig
注解 @Config(modid = Databack.MODID),即 modid databack(DatabackConfig.java:5)
注册方式 GTNHLib ConfigurationManager.registerConfig(DatabackConfig.class)(CommonProxy.java:60-64,抛 ConfigException 时包装为 RuntimeException)
声明式配置项数 3
额外 JSON 配置文件 1(客户端 debug_overlay.json)

功能

Databack 的全部可调项。它不含方块 / 物品 / 实体属性类配置 —— 因为本模组不注册任何游戏内容(见分类页)。三个声明式配置项中,两个服务于密度函数字节码调试,一个控制标签测试注册。

配置项列表

配置字段 类型与默认值 源码行 实际作用
dumpCompiledDensityFunctions @Config.DefaultBoolean(false) DatabackConfig.java:9-10 布尔,默认 false。注释:「Dump .class files generated by the density function bytecode compiler. Useful for inspecting generated bytecode.」即把密度函数编译产出的 .class 落盘
compiledDensityFunctionDumpDir @Config.DefaultString("compiled-df") DatabackConfig.java:13-14 字符串,默认 compiled-df。注释:「Directory to write compiled density function .class files into. Relative to the Minecraft run directory.」相对 Minecraft 运行目录解析
enableTagDebugMode @Config.DefaultBoolean(true) DatabackConfig.java:17-18 布尔,默认 true。注释:「Enable block/item/biome/entity tag debug mode」。控制 databack.common.tags.TestTags 的四个事件处理器是否执行

enableTagDebugMode 的副作用(默认开启)

TestTags 标注了 @EventBusSubscriber(TestTags.java:20,GTNHLib 事件总线自动注册),并订阅四个事件。enableTagDebugMode 为 true 时它会向原版命名空间写入标签内容(TestTags.java:24-72):

事件 写入的标签 内容(源码)
RegisterBlockTagsEvent minecraft:test、minecraft:test2 test 包含 test2、Blocks.grass(meta 0)、Blocks.dirt(meta 0)经 BlockIdentityRegistry 取得的身份(TestTags.java:26-34)
RegisterItemTagsEvent minecraft:test、minecraft:test2 test 包含 test2 与橡木板(Blocks.planks meta 0)、test2 包含云杉木板(meta 1),均经 ItemIdentityRegistry 取得且带 null 判空(TestTags.java:38-50)
RegisterEntityTagsEvent minecraft:test、minecraft:test2 test 包含 EntityPig.class、test2 包含 EntitySheep.class(TestTags.java:54-62)
RegisterBiomeTagsEvent minecraft:forest、minecraft:temperate temperate 包含 forest;forest 包含 BiomeGenBase.forest、forestHills、birchForest、birchForestHills、roofedForest(TestTags.java:66-77)

这四个事件由 BuiltinTagRegistries(BuiltinTagRegistries.java:84、111、138)与 EntityTagRegistry(EntityTagRegistry.java:74)在 MinecraftForge.EVENT_BUS 上发出,属于活代码而非死代码。类名虽为 TestTags,但因 enableTagDebugMode 默认为 true,这些标签在开箱状态下就会注册。

额外配置文件:debug_overlay.json

属性 值
路径 <config>/databack/debug_overlay.json(CommonProxy.java:111-112)
仅客户端 是(if (FMLLaunchHandler.side().isClient()) 守卫,CommonProxy.java:110)
读写方 databack.common.debug.DebugOverlayRegistry.setConfigFile / load / save
存储内容 各调试读数的显示模式与显式排序顺序(DebugOverlayRegistry.java:46-49:defaultModes、savedOrder)

已声明但无读取方的状态(死代码)

CommonProxy 中的 isEFRLoaded 是一个声明并在 preInit 赋值、但全仓无任何读取方的字段:

  • 声明:private static boolean isEFRLoaded;(CommonProxy.java:66,带 @Getter)
  • 赋值:isEFRLoaded = Loader.isModLoaded("etfuturum");(CommonProxy.java:75)
  • 读取:全仓 grep -rn 'isEFRLoaded\|etfuturum' src/main/java/ 仅命中上述两行,无第三处

因此 Databack 加载时会检测一次 Et Futurum,但没有任何 Et Futurum 集成代码消费该结果。本分类不将其计为集成项。

相关条目