JourneyMap 配置文件
基本信息
| 属性 | 值 |
|---|---|
| 配置文件格式 | 客户端为 GSON 序列化的 JSON(UTF-8,带 // 注释头);服务端为 Forge Configuration 的 .cfg |
| 客户端配置目录 | <游戏目录>/config/journeymap/config/<主.次版本>/ |
| 客户端文件名规则 | journeymap.<name>.config(PropertiesBase.getFileName(),PropertiesBase.java:137) |
| 服务端配置目录 | <游戏目录>/config/JourneyMapServer/(Journeymap.java:107) |
| 服务端文件名规则 | <世界名>.cfg(ConfigHandler.java:155、:176) |
| 配置文件数量 | 客户端 6 个 + 服务端每世界 1 个 |
| 配置项总数 | 95 个 @Config 字段(92 个唯一字段名;fontScale / textureSmall / enabled 各在两个类中重复声明) |
| 配置分类页签 | Config.Category 声明 10 个常量,其中 8 个实际建页(见 Options Manager) |
功能
JourneyMap 的配置分为客户端与服务端两套,互不共享。
客户端每个配置对应一个 PropertiesBase 子类实例,由 JourneymapClient.loadConfigProperties()(JourneymapClient.java:568-575)通过 PropertiesBase.reload() 统一加载:
| 实例字段 | 类 | getName() |
配置文件 |
|---|---|---|---|
coreProperties |
CoreProperties |
"core"(CoreProperties.java:150) |
journeymap.core.config |
fullMapProperties |
FullMapProperties |
"fullmap"(FullMapProperties.java:20) |
journeymap.fullmap.config |
miniMapProperties1 |
MiniMapProperties |
"minimap"(MiniMapProperties.java:85) |
journeymap.minimap.config |
miniMapProperties2 |
MiniMapProperties2 |
"minimap2"(MiniMapProperties2.java:22) |
journeymap.minimap2.config |
webMapProperties |
WebMapProperties |
"webmap"(WebMapProperties.java:29) |
journeymap.webmap.config |
waypointProperties |
WaypointProperties |
"waypoint"(WaypointProperties.java:79) |
journeymap.waypoint.config |
MapProperties(MapProperties.java:22)与 InGameMapProperties(InGameMapProperties.java:21)声明为 abstract,不直接实例化,只作为上面 4 个具体类的父类提供共享字段。
存储与版本
PropertiesBase.getFile()(PropertiesBase.java:117-128)先找世界配置目录,读不到才回退到标准配置目录。- 每个配置文件记录一个
configVersion(PropertiesBase.java:58),与Journeymap.JM_VERSION比对(isCurrent(),:245-248)。版本不一致时加载后自动重写文件(save(),:273-277)。 - 文件解析失败时把坏文件重命名为
<原名>.bad并重新生成默认文件(load(),:345-355)。 - 只有世界配置允许被禁用;标准配置调用
setDisabled()会抛IllegalStateException(PropertiesBase.java:167-178)。 copyToWorldConfig()/copyToStandardConfig()(:186-238)互相转换世界配置与标准配置。
值域校验
每个 @Config 字段可通过注解声明 minValue / maxValue / defaultValue / defaultBoolean / defaultEnum / stringListProvider / master / sortOrder。加载后由 ConfigValidation.validateConfigs(this)(PropertiesBase.java:420-423)反射校验并夹取到合法范围。
CoreProperties.validate()(CoreProperties.java:178-206)额外做三项跨字段修正:
renderDistanceCaveMax小于renderDistanceCaveMin时抬升为 min 值renderDistanceSurfaceMax小于renderDistanceSurfaceMin时抬升为 min 值- 四个渲染距离中任何一项超过游戏自身的
renderDistanceChunks时,压回游戏渲染距离
数值
| 项目 | 值 |
|---|---|
| 客户端配置文件数 | 6 |
| 服务端配置文件数 | 每世界 1 个(<世界名>.cfg) |
@Config 字段总数 |
95 |
| 唯一字段名数 | 92 |
| 无任何外部引用的死配置项 | 0(逐字段核验:95 个字段在声明文件之外均有引用) |
| 服务端配置 schema 版本 | 1.12F(ConfigHandler.java:24)—— 注意这是配置结构版本号,与 Minecraft 1.12 无关 |
服务端 Configuration(server/oldservercode/config/Configuration.java)只有 3 组配置:
| 组 | 字段 | 默认值(ConfigHandler.java:76-86) |
|---|---|---|
| 全局 | WorldID |
UUID.randomUUID()(:77) |
| 全局 | UseWorldID |
Forge 环境下 false,否则 true(:85-92) |
| 全局 | SaveInWorldFolder |
由 Configuration 默认值决定(:19) |
Radar |
PlayerRadar / OpRadar / WhiteListRadar |
true / true / ""(:78-80) |
CaveMapping |
PlayerCaveMapping / OpCaveMapping / WhiteListCaveMapping |
true / true / ""(:81-83) |
交互
| 触发 | 行为 |
|---|---|
| 游戏启动 | JourneymapClient.loadConfigProperties() 读取全部 6 个客户端配置;缺失时按 newFileInit() 默认值生成 |
| 打开 Options Manager 并改动 | 对应配置 save() 落盘(OptionsManager → PropertiesBase.save()) |
| 切换世界 | 重新进入 loadConfigProperties(),若世界配置存在则优先使用(JourneymapClient.java:496) |
| 服务端世界首次访问 | ConfigHandler.getConfigByWorldName() 生成默认 <世界名>.cfg 并打印 World ID 日志(Journeymap.java:123) |
死代码
Config.Category.Radar(properties/config/Config.java:51)是声明后从未使用的枚举常量。OptionSlotFactory.getSlots()(ui/option/OptionSlotFactory.java:43-48)只为 MiniMap1 / MiniMap2 / FullMap / WebMap / Waypoint / Advanced 六个分类调用 addSlots(),Radar 分类下没有任何 @Config 字段,因此 Options Manager 中不存在雷达页签 —— 雷达相关选项(maxMobsData 等 4 项)实际归在 Advanced 页签下。核验:grep 'Category.Radar' src/main/java 仅命中服务端 Configuration.getRadar(),那是另一个同名内部类,与 Config.Category 无关。
相关条目
- 核心选项 -
journeymap.core.config的 38 项配置 - 小地图选项 -
minimap/minimap2两个预设的 17 项配置 - 地图显示选项 -
fullmap/webmap继承自MapProperties与InGameMapProperties的 20 项配置 - 路点选项 -
journeymap.waypoint.config的 19 项配置 - Web 地图选项 -
journeymap.webmap.config的 2 项配置 - Options Manager - 配置项的图形化编辑界面
- 聊天控制码 - 服务端按世界覆写客户端雷达/洞穴权限的协议