Плагин для серверов Майнкрафт, который синхронизирует данные игроков между серверами одной сети. Он переносит инвентарь и прогресс при переходе игрока, защищая данные от устаревших записей, дюпов и потери изменений.
Возможности
- Синхронизирует основной инвентарь, броню, вторую руку и эндер-сундук.
- Переносит здоровье, голод, насыщение, воздух, опыт, уровень, счёт, эффекты зелий и характеристики персонажа.
- Сохраняет местоположение, точку возрождения, режим игры, состояние полёта и скорости ходьбы и полёта.
- Синхронизирует достижения, рецепты, статистику и данные других плагинов из
PersistentDataContainer/ NBT. - Для каждой категории данных можно отдельно включить или отключить передачу; отдельные миры, например творческие или миры мини-игр, можно исключить.
- Создаёт историю снимков данных игрока: их можно сравнивать, закреплять и восстанавливать полностью либо только выбранные категории.
- Даёт внутриигровой просмотр игроков и снимков через
/ds view, а также редактор инвентаря, эндер-сундука и характеристик через/ds edit. - Поддерживает базы H2, MariaDB, MySQL, PostgreSQL и MongoDB, а для обмена между серверами — Redis, RabbitMQ или сообщения плагинов.
- Включает проверку хранилища и настроек, просмотр ошибок, журнал действий, поиск по журналу, экспорт и импорт данных.
- Другие плагины могут добавлять синхронизацию собственных данных через API и
SyncModule. В комплекте есть модули для экономики Vault и достижений.
Команды
Основная команда — /datasync; короткий вариант — /ds.
- Просмотр состояния и диагностика:
/ds status,/ds doctor,/ds metrics,/ds debug <pipeline|session|sharding> [player] [--watch],/ds stats. - Работа с данными игрока:
/ds lookup <player>,/ds forcesync <player>,/ds saveall,/ds saveandkick <player|*>,/ds view [player],/ds edit <player> inventory|enderchest|stats. - Снимки и восстановление:
/ds snapshot <player> [--note ...],/ds history <player>,/ds diff <player> <#1> <#2>,/ds restore <player> <#> [--only|--except types] [--preview] [confirm]. - Сравнение игроков:
/ds compare <p1> <p2> [--section <a,b>] [page]. - Временная остановка синхронизации:
/ds pause <player|--list|--all> [--duration <Nm|Nh|Nd>] [reason]и/ds resume <player|--all> [confirm]. - Обслуживание:
/ds purge,/ds reset,/ds move,/ds export <file>,/ds import <file>,/ds reshard <new-shard-count>. - Кэш:
/ds cache info,/ds cache clear [player|confirm],/ds cache refresh [player]. - Журнал и проверка:
/ds audit,/ds errors,/ds watch <player|off>,/ds benchmark,/ds test <player>,/ds whoami,/ds whois <player>,/ds search <query>. - Модули:
/ds module list,/ds module info <id>,/ds module enable <id>,/ds module disable <id>,/ds module reload [<id>]. - Переводы:
/ds translations info,/ds translations reload,/ds translations set <lang>.
Перед восстановлением, очисткой, сбросом и импортом можно использовать предпросмотр или подтверждение команды. Для частичного восстановления применяйте --only, например /ds restore <player> <#> --only inventory,enderchest; чтобы исключить категорию — --except, например --except statistics.
Права
datasync.admin— доступ администратора; по умолчанию выдаётся только операторам.datasync.command.whoami— позволяет игроку использовать/ds whoami; выдано по умолчанию.- Права на отдельные группы команд:
datasync.command.status,datasync.command.reload,datasync.command.saveall,datasync.command.lookup,datasync.command.forcesync,datasync.command.history,datasync.command.restore,datasync.command.snapshot,datasync.command.view,datasync.command.edit,datasync.command.pause,datasync.command.resume,datasync.command.export,datasync.command.import,datasync.command.audit,datasync.command.module,datasync.command.translationsи другие права с префиксомdatasync.command.. datasync.command.view.copy— разрешает копирование предметов сочетанием Shift+клик в/ds view; выдавать его следует только доверенным администраторам, так как оно может создавать дюпы.
Настройка
Для одиночного сервера можно использовать H2, кэш в памяти и значение messaging-service: none.
Для сети серверов каждому серверу задают свой server-name, а общими делают базу данных и Redis. Redis рекомендуется для сетей серверов: он отвечает за владение сессией игрока, общий кэш и быстрый обмен сообщениями. Для SQL-сети подойдут MariaDB или PostgreSQL, для документного хранилища — MongoDB.
В конфигурации можно отключить синхронизацию отдельных категорий. На серверах с давними аккаунтами полезно отключать statistics, если статистика не нужна: её объём может сильно вырасти. Если другие плагины не используют передаваемые NBT-данные, можно отключить persistentDataContainer.
Плагин содержит переводы на английский, немецкий, испанский, бразильский португальский, французский и польский языки. Дополнительный язык добавляется YAML-файлом в translations/; после сохранения файл перечитывается без перезапуска.
Требования
- Серверное ядро Paper, Purpur или Folia.
- Java 21 или новее.
- Одно из хранилищ: H2, MariaDB, MySQL, PostgreSQL или MongoDB.
- Для сети серверов рекомендуется Redis; RabbitMQ, Vault и PlaceholderAPI подключаются при необходимости.
- Bukkit и Spigot не поддерживаются, поскольку плагин использует возможности Paper.
Плагин рассчитан на Folia и использует его планировщик регионов сущностей. При недоступности базы данных он временно останавливает обращения к ней и автоматически возобновляет работу после восстановления соединения.
