
MC-Data-Bridge - синхронизация данных игроков между серверами
MC-Data-Bridge - плагин для сетей BungeeCord и Velocity, который синхронизирует инвентарь, здоровье, опыт и эффекты игроков между серверами Майнкрафт. Защита от дюпа, поддержка Folia и Paper.
MC-Data-Bridge - плагин для сетей серверов Майнкрафт на BungeeCord и Velocity, который решает главную головную боль любого владельца мультисервера: синхронизацию данных игрока между серверами. Скачать плагин стоит каждому, кто держит связку из нескольких серверов и хочет, чтобы игрок, перейдя с выживания на мини-игры или обратно, не терял инвентарь, здоровье и уровень опыта.
Если вы когда-нибудь настраивали сеть из лобби, выживания и анархии, то знаете проблему: каждый сервер хранит данные игрока в своих файлах playerdata, и при переходе между серверами человек по факту становится "другим" игроком. Ванильный Minecraft из коробки такого не умеет в принципе. Обычно это решают костылями вроде MySQL Player Data Bridge или ручными скриптами, но MC Data Bridge делает это на уровне полноценного enterprise-решения: с распределёнными блокировками, атомарными транзакциями и мгновенной событийной моделью доставки данных.
И да, такой плагин отлично заработает на BungeeHost (https://bungee.host) - там же можно развернуть всю сеть и поставить плагин буквально в один клик, что для мультисерверных проектов очень удобно.
Совместимость и платформы
Тут всё необычно хорошо. Плагин собран как гибридный единый JAR-файл - один и тот же файл работает и на бэкенд-серверах, и на прокси. Не нужно искать отдельные сборки под каждую платформу.
- Версии Minecraft:
1.21.xи26.3.x - Серверные платформы: PaperMC, Purpur, Spigot, Bukkit и Folia (полноценная поддержка региональных планировщиков)
- Прокси: BungeeCord, Waterfall и Velocity
- Java: 25+
Отдельно отмечу поддержку Folia - её мало кто делает нормально, потому что регионализированная многопоточность ломает половину старых плагинов. Здесь используются GlobalRegionScheduler и EntityScheduler, так что потокобезопасность гарантирована.
Быстрый старт: как установить MC-Data-Bridge
Установка простая, но есть нюанс с базой данных - она обязательна для мультисерверных сетей.
- Закиньте JAR везде. Положите файл
mc-data-bridge-*.jarв папкуplugins/каждого сервера (Paper, Folia, Spigot) и прокси (Velocity или BungeeCord). - Настройте конфиг. Откройте
plugins/mc-data-bridge/config.ymlна каждом бэкенд-сервере:- Задайте уникальный
server-id, напримерserver-id: "survival-1". Это важно - без уникальных ID плагин не поймёт, кто есть кто в сети. - Пропишите доступы к MySQL или MariaDB. Без базы синхронизация между серверами работать не будет.
- Установите
security.seed- секретную случайную строку. Она используется для контрольных сумм целостности данных.
- Задайте уникальный
- Перезапустите всё. Рестартуете прокси и бэкенды - синхронизация поднимется автоматически.
Важный нюанс из практики: security.seed должен быть одинаковым на всех серверах сети, но при этом действительно случайным и секретным. Если сиды различаются, проверки целостности SHA-256 начнут фейлиться, и данные не будут загружаться. Это классическая ошибка при первой настройке.
Что именно синхронизирует плагин
Список впечатляет - по факту это полный слепок состояния игрока:
- Здоровье, голод, насыщение и истощение
- Опыт и уровни
- Инвентарь, броня и отдельные профили инвентаря для разных режимов игры (креатив/выживание не перемешаются)
- Эффекты зелий
- Эндер-сундуки
- Достижения (advancements) и открытые рецепты
- Ванильная статистика
- Метаданные Persistent Data Container (PDC) - это важно для серверов с кастомными плагинами, которые хранят данные в PDC
- Состояние полёта и игровой режим
- Питомцы-компаньоны
- Карты, которые работают между серверами
По сути, игрок вообще не замечает перехода между серверами. Зашёл в портал на спавне, оказался на сервере выживания - и у тебя те же сердечки, тот же голод, та же кирка в третьем слоте.
Защита от дюпа и блокировки: почему это важно
Вот тут начинается самое интересное. Главная причина, по которой самописные решения для синхронизации ломаются - дюпы. Игрок выходит с сервера А, данные ещё не сохранились, а он уже зашёл на сервер Б и выкинул вещи. Классика.
MC Data Bridge решает это на нескольких уровнях:
- Блокировка взаимодействий при переносе. Пока идёт переход, плагин автоматически закрывает открытые инвентари и отменяет клики по контейнерам, перетаскивания, дропы, подбор предметов и любые взаимодействия. Окно для дюпа просто исчезает.
- Распределённые блокировки с fencing-токенами (
lock_version). Используются монотонные счётчики поколений, которые отсекают "просроченные" записи. Если сервер завис на GC-паузе или отвис после сетевого лага, он физически не сможет перезаписать активную сессию игрока старыми данными. - Событийное снятие блокировок. Исходный сервер после сохранения состояния шлёт мгновенный сигнал
LockReleased, который будит pre-login поток на целевом сервере. Задержка ожидания лока при переключении падает примерно до 50 мс, а если сообщение не дошло - есть автоматический фолбэк на опрос базы. - Атомарная персистентность одной транзакцией. Обновление инвентарей, статистики, метаданных, питомцев и карт плюс снятие блокировки идут в одном соединении и одной транзакции (
setAutoCommit(false)...commit()). Либо сохранилось всё, либо ничего - промежуточных состояний нет. - Контрольные суммы целостности. Перед загрузкой данных считается канонический SHA-256 хэш по всем компонентам состояния с солью из
security.seed. Подмена данных в базе вручную будет замечена.
По факту это уровень надёжности, которого от Майнкрафт-плагинов обычно не ждёшь. Если вы строите серьёзный проект с экономикой, где дюп инвентаря обвалит рынок - это именно тот случай, где такая паранойя оправдана.
Инспектор инвентарей: invsee и endersee
Отдельная киллер-фича для админов - интерактивный просмотр инвентарей и эндер-сундуков. Причём работает даже с офлайн-игроками и игроками на других серверах сети, в реальном времени.
По умолчанию открывается безопасный режим "только просмотр". Админ с нужным правом может включить режим редактирования (флаг --edit или просто правый клик) - и после закрытия GUI изменения автоматически сохранятся в базу. Удобно, когда нужно вернуть игроку утерянную вещь или, наоборот, изъять задюпанное.
Режимы идентификации и миграция с пиратки на лицензию
Редкая и очень полезная штука для русскоязычных проектов, где половина игроков сидит с неофициальных лаунчеров:
- Режим
PREMIUM- строгая привязка к лицензионным UUID. - Режим
HYBRID- гибкая смена идентичности. Плагин автоматически мигрирует данные игрока с офлайн-UUID на премиум-UUID после подтверждения через FastLogin (PreLogin) или AuthMe (Login, включая нативную TOTP/2FA от AuthMe).
То есть игрок купил лицензию - и его прогресс с пиратского аккаунта переехал сам, без тикетов в админку.
Плюс ведётся история идентичности: last_known_name и защищённый identity_hash (HMAC-SHA256 с ключом). Это позволяет ловить угон аккаунта, коллизии UUID и ручное вмешательство в базу.
Команды и права
| Команда | Описание | Право |
|---|---|---|
/databridge inspect <player> [inv|ender] [--edit] | Открыть GUI просмотра или редактирования данных игрока | databridge.inspect (.edit для --edit) |
/databridge invsee <player> [--edit] | Сразу открыть инвентарь игрока | databridge.inspect (.edit для --edit) |
/databridge endersee <player> [--edit] | Сразу открыть эндер-сундук игрока | databridge.inspect (.edit для --edit) |
/databridge unlock <player> | Снять зависшую блокировку данных (Spigot, Folia, Bungee, Velocity) | databridge.admin |
/databridge forceunlock <player> | Прокси-команда: принудительный сигнал сброса лока | databridge.admin |
/databridge migrate <target> | Перенос данных между UUID или никами | databridge.admin |
/databridge reload | Перезагрузка конфига и переподключение пула БД | databridge.admin |
Права (permissions):
databridge.inspect- просмотр данных, инвентарей и эндер-сундуков в безопасном режиме только для чтения.databridge.inspect.edit- повышенное право на интерактивное редактирование через--editили правый клик.databridge.admin- полный административный доступ ко всем командам.
Совет: право databridge.inspect.edit выдавайте только старшей администрации. Обычным модераторам хватит просмотра - случайный клик в режиме редактирования сохранится в базу автоматически при закрытии GUI, и откатить это будет непросто.
Мониторинг и тонкая настройка
Для тех, кто любит наблюдать за продакшеном, в плагин встроен экспортер метрик Prometheus: поднимается HTTP-сервер, который отдаёт задержки синхронизации, hit-ratio кэша и состояние пула HikariCP. Цепляете Grafana - и у вас полноценный дашборд по здоровью синхронизации всей сети.
А в config.yml можно гранулярно включать и выключать синхронизацию для любого типа данных, а также исключать конкретные серверы и миры через чёрный список. Например, на сервере мини-игр синхронизировать инвентарь не нужно - просто добавляете его в исключения, и никаких лишних записей в базу.
Стоит ли ставить MC-Data-Bridge
Если у вас одиночный сервер - плагин вам не нужен вообще, это инструмент строго для сетей. Но если вы держите связку из двух и более серверов за прокси, это must-have. По совокупности - поддержка Folia, защита от дюпа на уровне fencing-токенов, миграция пиратских аккаунтов на лицензию через AuthMe и FastLogin, инспектор офлайн-инвентарей - MC Data Bridge выглядит одним из самых продуманных решений для синхронизации данных игроков в Minecraft на текущий момент. Скачайте MC-Data-Bridge, настройте MySQL и забудьте про жалобы игроков на потерянные при переходе вещи.
Сервер для плагина MC-Data-Bridge - синхронизация данных игроков между серверами - как у профи
Плагин MC-Data-Bridge - синхронизация данных игроков между серверами создан для серверов: на своём сервере вы настраиваете его под себя и решаете, кому играть. Создать сервер с плагином MC-Data-Bridge - синхронизация данных игроков между серверами для друзей можно за пару минут - BungeeHost всё уже подготовил.
