▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/MapSyncer-for-XaeroWorldmap
MapSyncer-for-XaeroWorldmap

MapSyncer-for-XaeroWorldmap

A multi-platform Minecraft mod that syncs server-side explored areas to clients' Xaero's World Map.

Оцените первым
6.4K
11

MapSyncer for Xaero's World Map

A multi-platform Minecraft mod that syncs server-side explored areas to clients' Xaero's World Map. BiliBili GitHub

#REPORT ISSUE ON GITHUB!!PLEASE

Platform Support

Prioritizing modern versions. NeoForge didn't exist as an independent loader before 1.20.4. Forge provides no developer documentation after 26.1.

MC VersionForgeNeoForgeFabric
1.20.1
1.21.1
1.21.11
26.1

Client Dependencies

Supports both dedicated servers and integrated servers (single-player LAN sharing). On integrated servers, the host's Xaero's World Map save directory is reused as the map cache, eliminating redundant conversion.

DependencyRequirement
Xaero's World Map1.40.11+

Server Requirements

  • Xaero's World Map is NOT required on the server
  • Chunky or similar pre-generation tools are recommended

Features

FeatureDescription
Incremental SyncCRC32 hash + timestamp comparison — only transfers changed regions
Streaming LoadWrites to Xaero directory as data arrives, triggers immediate reload per region
Bandwidth-AwareDynamic send rate adjustment to avoid blocking game network
Resumable SyncAuto-resumes from interruption after reconnect (hash-based)
View-Distance PriorityRegions within player's view distance are prioritized
Dimension SupportOverworld, Nether, End, and mod dimensions (e.g. Twilight Forest)
Incremental UpdateServer-side periodic/scheduled map cache regeneration
Cave ModeScans downward from a configurable height, outputs to caves subdirectory
Multi-Threaded HashConfigurable parallel CRC32 computation on the client
Auto SyncAutomatically checks for newer server maps on join, no manual command needed

Commands

Client Commands

CommandDescription
/mapsyncerShow help
/mapsyncer syncSync current dimension
/mapsyncer sync <dim>Sync a specific dimension
/mapsyncer sync allSync all dimensions

Dimension arguments: overworld, the_nether, the_end, or mod dimension IDs like twilightforest:twilight_forest

Server Commands (OP required)

Forge/NeoForge uses /mapsyncer; Fabric uses /mapsyncerserver to avoid conflicts with the client-side /mapsyncer.

CommandDescription
/mapsyncer generateGenerate cache for all dimensions
/mapsyncer generate <dim>Generate cache for a specific dimension
/mapsyncer generate <dim> <x> <z>Generate a single region
/mapsyncer generate <dim> --forceForce rebuild (clears existing cache)
/mapsyncer statusView generation progress and cache statistics
/mapsyncer incremental offDisable incremental updates
/mapsyncer incremental tick [interval]Enable periodic updates (20–72000 ticks)
/mapsyncer incremental scheduled [hour] [min]Enable scheduled updates (default 04:00)

Configuration

Client Config

OptionDefaultRangeDescription
hashThreadsCPU cores/21–coresNumber of threads for CRC32 computation

Server Config

Forge config: world/serverconfig/mapsyncer-server.toml (per-world) NeoForge / Fabric config: config/ directory (.toml for NeoForge, .properties for Fabric)

General [general]

OptionDefaultRangeDescription
enableDebugLoggingfalseEnable debug logging
maxConcurrentRegions41–16Concurrent region conversion threads
maxSyncPacketSize262144 (256KB)64KB–1MBMax packet size in bytes
syncSpeedLimitKBps1024 (1MiB/s)0–10240Sync rate limit (0 = unlimited)

Incremental Update [incremental_update]

OptionDefaultDescription
incrementalUpdateModeDISABLEDDISABLED / TICK / SCHEDULED
incrementalUpdateIntervalTicks200TICK mode interval (20 ticks = 1 second)
scheduledUpdateHour4Scheduled update hour (0–23)
scheduledUpdateMinute0Scheduled update minute (0–59)

Dimension Scan [dimension_scan]

OptionDefaultDescription
default_scan_modeSURFACEDefault scan mode for unconfigured dimensions
default_cave_start63Starting height for CAVE mode

Dimension config format:

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"
]

Format: dimensionID|scanMode|caveStart|hasSkylight|hasCeiling|minY|height|logicalHeight

  • SURFACE: Scans downward from heightmap. For Overworld and End.
  • CAVE: Scans downward from a fixed height. For Nether.

Project Structure

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/

Pipeline

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

File Storage

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

Dimension Mapping

DimensionMinecraft IDXaero Directory
Overworldminecraft:overworldnull
Netherminecraft:the_netherDIM-1
Endminecraft:the_endDIM1
Mod dimensionsnamespace:pathnamespace$path

Known Issues

IssueDetailsImpact
Cave rendering anomaliesSome cave content is inaccurateMostly affects Nether; under investigation

Build

# 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 artifacts are placed in each platform module's build/libs/ directory.


License: GPL-3.0

Acknowledgements: Xaero's World Map & Minimap

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

26.1.x1.21.x1.20.x

Платформы

Поддерживаемые окружения

Клиент и сервер

Ссылки

Создатели

Детали

Лицензия:
Опубликован:2 месяца назад
Обновлён:1 месяц назад
Главная