配置项(roguelike.cfg)

基本信息

属性 值
枚举 greymerk.roguelike.config.RogueConfig(config/RogueConfig.java:10)
枚举常量数 15
实际生效的键 14(MOBDROPS 是死常量,见下文)
配置文件 config/roguelike_dungeons/roguelike.cfg(config/RogueConfig.java:28-29)
解析器 INIParser + ConfigFile(自建,非 Forge Configuration)
重载方式 /roguelike config reload → RogueConfig.reload(true)

配置文件在枚举类的 static 块里就初始化(config/RogueConfig.java:33-35 调用 init()),init() 会建目录、建空文件、读入、填默认值并回写(:186-218)。

功能

每个配置项按「声明 → 命名 → 默认值 → 落盘 → 外部读取」五步走:getName() 给键名、getDefault() 给类型与默认值、setDefaults() 在键缺失时写入默认值,读取方用 getBoolean / getInt / getDouble / getIntList。

getInt / getIntList 用 def.getFirst() 取键名,而 getBoolean / getDouble 用 getName(option) —— 两者指向同一个字符串,行为一致。

配置项表

下表的「读取点」列是全树中除 config/ 包外对该常量的全部引用(grep -rn 'RogueConfig\.<KEY>' src/main/java | grep -v /config/):

键名 常量 类型 默认值 读取点
doNaturalSpawn DONATURALSPAWN boolean true dungeon/Dungeon.java:114
doNoveltySpawn DONOVELTYSPAWN boolean true dungeon/settings/SettingsResolver.java:213
levelRange LEVELRANGE int 80 dungeon/settings/LevelSettings.java:33,56,88
levelMaxRooms LEVELMAXROOMS int 30 dungeon/settings/LevelSettings.java:32,54,87、dungeon/base/DungeonFactory.java:61
levelScatter LEVELSCATTER int 10 dungeon/settings/LevelSettings.java:34,60,90
spawnFrequency SPAWNFREQUENCY int 10 dungeon/Dungeon.java:118
generous GENEROUS boolean true dungeon/rooms/DungeonLab.java:153、dungeon/rooms/DungeonBTeam.java:322、dungeon/rooms/DungeonsSmithy.java:434
dimensionWL DIMENSIONWL int list [0](仅主世界) dungeon/settings/SpawnCriteria.java:109
dimensionBL DIMENSIONBL int list [](空) dungeon/settings/SpawnCriteria.java:99
preciousBlocks PRECIOUSBLOCKS boolean true theme/ThemeNether.java:24,25
looting LOOTING double 0.085 treasure/loot/Loot.java:184
upperLimit UPPERLIMIT int 100 dungeon/Dungeon.java:176
lowerLimit LOWERLIMIT int 60 dungeon/Dungeon.java:177
rogueSpawners ROGUESPAWNERS boolean true worldgen/Spawner.java:61
—(无键名) MOBDROPS — — 无任何读取点

死常量 MOBDROPS

MOBDROPS 声明在 config/RogueConfig.java:18,但:

  • getName() 的 switch 没有它的分支 → getName(MOBDROPS) 落到 default: return null(:67-68)
  • getDefault() 的 switch 没有它的分支 → 同样返回 null(:104-105)
  • setDefaults() 没有为它写默认值

全树 grep -rn 'MOBDROPS' src/main/java 只有 1 处命中,就是它自己的声明行。因此它从不进入配置文件、也从不影响行为。

⚠️ 该仓库只有 1 个 commit(git rev-list --count HEAD = 1),无法从提交历史判断这是遗留代码还是待实现功能;源码中也没有对应的 TODO 注释。此处仅陈述事实,不判定为缺陷。

数值

数值名 值 来源
枚举常量数 15 config/RogueConfig.java:12-26
实际写入配置文件的键数 14 setDefaults() 14 次赋值(:110-137)
配置文件名 roguelike.cfg config/RogueConfig.java:29
目录名 config/roguelike_dungeons config/RogueConfig.java:28
默认最高 Y 100 getDefault(UPPERLIMIT)(:99)
默认最低 Y 60 getDefault(LOWERLIMIT)(:101)
默认战利品掉落率 0.085 getDefault(LOOTING)(:97)
默认房间数上限 30 getDefault(LEVELMAXROOMS)(:81)

交互

操作 效果
/roguelike config reload RogueConfig.reload(true) → 强制重新 init(),回显 “Success: Configurations Reloaded”(util/CommandSpawnDungeon.java:59-63)
手动编辑 roguelike.cfg 下次 reload 或重新 init() 时生效;每次 getXxx 都会调 reload(false),仅在 instance == null 时重读
删除配置文件 重建空文件并写入全部 14 个默认值

相关条目