跳到正文

MapSyncer-for-XaeroWorldmap

作者:RuoChennn

一款多平台 Minecraft 模组,可将服务器端已探索区域同步到客户端的 Xaero的世界地图。

收藏

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

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/版本名 下面。运行环境:客户端 / 服务端。

评论

登录后评论和评分