介绍
MapSyncer for Xaero’s World Map
一款支持多平台的 Minecraft 模组,可将服务端已探索区域同步到客户端的 Xaero’s World Map。
BiliBili
GitHub
请在 GitHub 上报告问题!!拜托了
V1.0.4 Beta 版本已发布在 GitHub 的 Releases 页面。请在 Issues 页面报告错误;如果有任何建议,也请在那里留言。谢谢。
平台支持
优先支持较新的版本。NeoForge 在 1.20.4 之前并不是独立的加载器。Forge 在 26.1 之后不再提供开发者文档。
| MC 版本 | Forge | NeoForge | Fabric |
|————|:—–:|:——–:|:——:|
| 1.20.1 | ✅ | — | ✅ |
| 1.21.1 | ✅ | ✅ | ✅ |
| 1.21.11 | ✅ | ✅ | ✅ |
| 26.1 | — | ✅ | ✅ |
客户端依赖
支持专用服务器和集成服务器(单人游戏开放局域网)。在集成服务器上,会重复使用主机的 Xaero’s World Map 存档目录作为地图缓存,无需重复转换。
| 依赖项 | 要求 |
|————|————-|
| Xaero’s World Map | 1.40.11+ |
服务器要求
- 服务器无需安装 Xaero’s World Map
- 建议使用 Chunky 或类似的预生成工具
功能
| 功能 | 说明 |
|———|————-|
| 增量同步 | 使用 CRC32 哈希值和时间戳进行比较——仅传输已更改的区域 |
| 流式加载 | 数据到达时即写入 Xaero 目录,并立即重新加载对应区域 |
| 带宽感知 | 动态调整发送速率,避免阻塞游戏网络 |
| 断点续传 | 重新连接后自动从中断处恢复同步(基于哈希值) |
| 视距优先 | 优先同步玩家视距范围内的区域 |
| 维度支持 | 主世界、下界、末地及模组维度(例如暮色森林) |
| 增量更新 | 支持在服务端定期或按计划重新生成地图缓存 |
| 洞穴模式 | 从可配置的高度向下扫描,并将结果输出到 caves 子目录 |
| 多线程哈希 | 可配置客户端并行计算 CRC32 |
| 自动同步 | 加入服务器时自动检查是否有更新的服务器地图,无需手动输入命令 |
命令
客户端命令
| 命令 | 说明 |
|———|————-|
| /mapsyncer | 显示帮助 |
| /mapsyncer sync | 同步当前维度 |
| /mapsyncer sync <dim> | 同步指定维度 |
| /mapsyncer sync all | 同步所有维度 |
维度参数: overworld, the_nether, the_end,或模组维度 ID,例如 twilightforest:twilight_forest
服务端命令(需要 OP 权限)
Forge/NeoForge 使用
/mapsyncer;Fabric 使用/mapsyncerserver,以避免与客户端的/mapsyncer冲突。
| 命令 | 说明 |
|———|————-|
| /mapsyncer generate | 为所有维度生成缓存 |
| /mapsyncer generate <dim> | 为指定维度生成缓存 |
| /mapsyncer generate <dim> <x> <z> | 生成单个区域的缓存 |
| /mapsyncer generate <dim> --force | 强制重建(清除现有缓存) |
| /mapsyncer status | 查看生成进度和缓存统计信息 |
| /mapsyncer incremental off | 禁用增量更新 |
| /mapsyncer incremental tick [interval] | 启用定期更新(20–72000 ticks) |
| /mapsyncer incremental scheduled [hour] [min] | 启用定时更新(默认 04:00) |
配置
客户端配置
| 选项 | 默认值 | 范围 | 说明 |
|——–|——–|——-|————-|
| hashThreads | CPU cores/2 | 1–cores | CRC32 计算使用的线程数 |
服务器配置
Forge 配置:world/serverconfig/mapsyncer-server.toml(每个地图单独配置)
NeoForge / Fabric 配置:config/ 目录(NeoForge 使用 .toml,Fabric 使用 .properties)
常规设置 [general]
| 选项 | 默认值 | 范围 | 说明 |
|——–|——–|——-|————-|
| enableDebugLogging | false | — | 启用调试日志 |
| maxConcurrentRegions | 4 | 1–16 | 并发区域转换线程数 |
| maxSyncPacketSize | 262144 (256KB) | 64KB–1MB | 最大数据包大小(字节) |
| syncSpeedLimitKBps | 1024 (1MiB/s) | 0–10240 | 同步速率限制(0 = 不限速) |
增量更新 [incremental_update]
| 选项 | 默认值 | 说明 |
|——–|———|————-|
| incrementalUpdateMode | DISABLED | DISABLED / TICK / SCHEDULED |
| incrementalUpdateIntervalTicks | 200 | TICK 模式的更新间隔(20 ticks = 1 秒) |
| scheduledUpdateHour | 4 | 计划更新的小时(0–23) |
| scheduledUpdateMinute | 0 | 计划更新的分钟(0–59) |
维度扫描 [dimension_scan]
| 选项 | 默认值 | 说明 |
|——–|———|————-|
| default_scan_mode | SURFACE | 未配置维度的默认扫描模式 |
| default_cave_start | 63 | CAVE 模式的起始高度 |
维度配置格式:
dimension_configs = [
"minecraft:overworld|SURFACE|63|true|false|-64|384|384",
"minecraft:the_nether|CAVE|63|false|true|0|256|256",
"minecraft:the_end|SURFACE|63|false|false|0|256|256"
]
格式:dimensionID|scanMode|caveStart|hasSkylight|hasCeiling|minY|height|logicalHeight
- SURFACE:从高度图向下扫描。适用于主世界和末地。
- CAVE:从固定高度向下扫描。适用于下界。
项目结构
libs/ Abstract library layer (platform-agnostic, compiled as independent JARs)
├── core/ Pure Java core: MCA/NBT parsing, utilities
└── platform-api/ Platform abstraction interfaces, network payload definitions
mc-1.20.1/ 1.20.1 version
├── shared/ Shared source (referenced by platform modules via sourceSet)
├── fabric/ Platform implementation (produces final mod JAR)
└── forge/
mc-1.21.1/ 1.21.1 version
├── shared/
├── fabric/
├── forge/
└── neoforge/
mc-26.1/ 26.1 version
├── shared/
├── fabric/
└── neoforge/
处理流程
Server MCA files (region/*.mca)
│
▼
MCA Parser (pure Java, no Xaero dependency)
Decompress → NBT parse → Extract chunk data
│
▼
Region Conversion (RegionConverter)
│
▼
Encode to Xaero format (region.zip)
│
▼
Timestamp + Hash Cache (GenerationCache)
│
▼
Incremental Update Processor (optional)
TICK mode / SCHEDULED mode
│
▼
Network Sync Protocol
Hash comparison → View-distance priority sort
Batched transfer + rate limiting
│
▼
Streaming Receive
Write to Xaero directory as data arrives
│
▼
Xaero Reload Trigger (reflection)
requestLoad → Map re-renders
文件存储
Server:
<server>/server_map_cache/
├── null/ # Overworld
├── DIM-1/ # Nether
├── DIM1/ # End
├── caves/<layer>/ # Cave mode output
└── generation_cache.properties # Timestamp + hash cache
Client:
<client>/xaero/world-map/Multiplayer_<IP>/ # Modern Xaero unified path (preferred)
<client>/XaeroWorldMap/Multiplayer_<IP>/ # Legacy Xaero path (compatibility fallback)
├── null/mw$<worldId>/ # Overworld
├── DIM-1/mw$<worldId>/ # Nether
└── DIM1/mw$<worldId>/ # End
维度映射
| 维度 | Minecraft ID | Xaero目录 |
|———–|————–|—————–|
| 主世界 | minecraft:overworld | null |
| 下界 | minecraft:the_nether | DIM-1 |
| 末地 | minecraft:the_end | DIM1 |
| 模组维度 | namespace:path | namespace$path |
已知问题
| 问题 | 详情 | 影响 |
|——-|———|——–|
| 洞穴渲染异常 | 部分洞穴内容显示不准确 | 主要影响下界;正在调查中 |
构建
# Build all active platforms (parallel)
./gradlew build -x test --parallel
# Build a single platform
./gradlew :mc-1.21.1:forge:build -x test
./gradlew :mc-1.21.1:fabric:build -x test
# Quick build scripts
scripts/fastbuild/build-all.bat # All active platforms
scripts/fastbuild/build-forge.bat # All Forge modules (Gradle 8.9 + JDK 17/21)
scripts/fastbuild/build-fabric-26.1.bat # Fabric 26.1 (isolated Gradle process)
scripts/fastbuild/build-26.1.bat # All 26.1 modules
构建产物位于各平台模块的 build/libs/ 目录中。
许可证: GPL-3.0
致谢: Xaero的世界地图和小地图
常见问题
MapSyncer-for-XaeroWorldmap 支持哪些 Minecraft 版本?
MapSyncer-for-XaeroWorldmap 支持 Minecraft Java 版 1.20–26.1.2,共 7 个版本,可用的加载器:Fabric / Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。
MapSyncer-for-XaeroWorldmap 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端 / 服务端。
评论
登录后评论和评分