配置项(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 个默认值 |
相关条目
- JSON 地牢设置包 - 同一
config/roguelike_dungeons/目录下的settings/子目录 - 世界生成流程 -
doNaturalSpawn/spawnFrequency/upperLimit/lowerLimit在此生效 - 生成条件 -
dimensionWL/dimensionBL在此被读取 - 战利品表 -
looting在此被读取