Tags
Creators
Details
2.1.6
Compatibility
Changes
MC Data Bridge - Release Notes (v2.1.6)
Overview
Version 2.1.6 is a comprehensive feature and security update that introduces multi-server Companion & Pet Synchronization, implements dynamic Full Vanilla Player Statistics Synchronization, completes database schema normalization, adds compressed binary NBT serialization, embeds a Prometheus Metrics Exporter, and hardens overall network security with strict seed verification.
Key Features & Improvements
📊 Full Vanilla Player Statistics Synchronization
- Dynamic Statistics Sync: Replaced the legacy hardcoded list of 16 statistics with a dynamic, version-independent synchronization loop that covers all vanilla player statistics.
- Qualified/Typed Statistics Support: Fully syncs all typed statistics requiring qualifiers—including blocks mined, items crafted/used/broken/picked up/dropped, and entities killed or killed by (e.g.,
MINE_BLOCK:STONE,KILL_ENTITY:ZOMBIE,USE_ITEM:IRON_PICKAXE). - Intelligent State Application: Minimizes database updates and server overhead by only applying statistic changes when values differ from the server's current values.
- State Cleanup & Resets: Restores synchronization parity by resetting any non-zero stats on the destination server that are not present in the player's database snapshot (setting them back to zero).
- Graceful Version Resilience: Silently handles version-specific or custom blocks, items, and entity types, maintaining perfect compatibility across heterogeneous multi-server environments.
🐾 Companion & Pet Synchronization
- Multi-Mode Synchronization: Added
companions.mode(follow,return,untracked) to manage how pets are synced across the network. - Tamed Pet Persistence: Synchronizes tamed wolves, cats, parrots, and other pets across server switches.
- Shoulder-Perched Entity Serialization: Saves and restores parrot shoulder-riding states.
- State Preservation: Restores ownership, custom names, health/max health, and sitting status accurately.
- NBT-Level Preservation: Utilizes NBTAPI metadata merging to preserve custom pet attributes, items, and collars.
- Merge-on-Save Pattern: Adopts a robust relational state merging strategy to prevent NBT overrides and companion data loss across servers (critical for
returnmode). - Duplication Prevention: Despawns source entities synchronously upon snapshot generation to prevent duplication exploits.
🗄️ Relational Component Schema Normalization
- Companions Component Table: Introduced the
databridge_companionstable for row-level normalized storage. - Optimized SQL Transactions: Avoids write-amplification by target-updating specific components (inventories, statistics, metadata, companions) independently.
⚡ Binary NBT Serialization Option
- Compressed NBT Storage: Adds support for native binary compression (
serialization-format: binary) to dramatically reduce database footprint, storage I/O, and CPU serialization overhead.
🛡️ Production Security Hardening
- Fails-Strict Safe Mode: Prevents startup if the default cryptographic seed is detected and no secure seed is configured, mitigating identity hijacking risks.
- DDL Column Whitelists: Enforces SQL parameter and column sanitation to secure automated schema migration queries.
📊 Embedded Prometheus Metrics Exporter
- Live Server Metrics: Provides an optional HTTP
/metricsscrape endpoint for Grafana/Prometheus tracking, exposing cache efficiency, database connection pool statistics, active transaction counts, and synchronization latencies.
For installation instructions and configuration details, please refer to the README.md and config.yml.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:oYE8njDp:6aRuc5Lo"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:oYE8njDp:6aRuc5Lo"
}

