RedisPluginMessages: Удобный API для обмена данными между серверами Minecraft

RedisPluginMessages: Удобный API для обмена данными между серверами Minecraft В мире многопользовательского Minecraft часто возникает задача связать несколько серверов в единую сеть. Будь то прокси-сервер BungeeCord, объединяющий десятки игровых миров, или необходимость передать состояние игровог...

Скачать RedisPluginMessages для Minecraft 1.18.1

Оригинальное название: RedisPluginMessages

Версии Minecraft: 1.18.1

Загрузчик: Forge

ФайлMCЗагрузчикРазмер
RedisPluginMessages-1.0.0.jar1.18.1Forge1.2 МБСкачать

RedisPluginMessages: Удобный API для обмена данными между серверами Minecraft

В мире многопользовательского Minecraft часто возникает задача связать несколько серверов в единую сеть. Будь то прокси-сервер BungeeCord, объединяющий десятки игровых миров, или необходимость передать состояние игрового мира с одного Spigot-сервера на другой — стандартные Plugin Messages требуют обязательного участия игрока в канале. Это создаёт неудобства, когда нужно отправить служебную информацию между серверами без привязки к конкретному пользователю. Решение — RedisPluginMessages, плагин, использующий легковесную in-memory базу данных Redis для быстрого и надёжного обмена сообщениями.

Почему Redis и как это работает

Redis — это высокопроизводительное хранилище данных в оперативной памяти, которое идеально подходит для систем обмена сообщениями в реальном времени. Плагин RedisPluginMessages превращает Redis в шину данных: каждый сервер (Spigot или BungeeCord) подключается к общему Redis-серверу и может публиковать сообщения в именованные каналы или подписываться на них. В отличие от встроенного Plugin Messaging, здесь не требуется, чтобы игрок находился на сервере и инициировал соединение. Сообщения передаются напрямую между экземплярами серверов, что открывает широкие возможности для синхронизации данных, управления событиями и построения распределённых систем.

API плагина максимально приближен к привычному Bukkit/Bungee API: вы регистрируете входящие и исходящие каналы, создаёте подписчиков и обрабатываете полученные данные через знакомый интерфейс ByteArrayDataInput. Это снижает порог вхождения для разработчиков, уже знакомых с классическим Plugin Messaging.

Установка и настройка за несколько шагов

Чтобы начать использовать RedisPluginMessages, потребуется сам Redis-сервер. Его можно развернуть локально или на выделенной машине. После установки Redis следуйте простой инструкции:

  • Создайте папку RedisPluginMessages в директории plugins каждого сервера (BungeeCord и всех Spigot).
  • Внутри этой папки создайте файл config.yml со следующим содержимым: уникальное имя экземпляра (unique-name-of-instance), хост Redis (обычно localhost), порт (по умолчанию 6379) и пароль, если он задан. Для прокси-сервера имя можно выбрать произвольно, а для Spigot-сервера нужно указать имя, совпадающее с конфигурацией прокси.
  • Поместите JAR-файл плагина RedisPluginMessages.jar в папку plugins каждого сервера.
  • Запустите Redis-сервер, а затем все игровые серверы и прокси.

Если вы предпочитаете автоматизировать рутину, обратите внимание на современные лаунчеры. Например, через лаунчер foxygame.net можно не только собрать клиентскую сборку, но и быстро добавить серверные плагины прямо из меню — это экономит время и избавляет от ручного копирования файлов по папкам. Такой подход особенно удобен, когда вы экспериментируете с несколькими плагинами одновременно.

После запуска плагин автоматически подключится к Redis и будет готов принимать и отправлять сообщения. Никаких дополнительных действий не требуется — система начинает работать сразу после загрузки конфигурации.

Регистрация каналов и подписчиков в коде

Разработчикам плагинов достаточно добавить зависимость в plugin.yml (для Spigot) или bungee.yml (для BungeeCord): depend: [RedisPluginMessages]. Это гарантирует, что ваш плагин загрузится только при наличии RedisPluginMessages. Затем в методе onEnable вы регистрируете каналы и подписчиков:

  • api.registerIncomingChannels("канал") — объявляет канал, на который сервер будет принимать сообщения.
  • api.registerOutgoingChannels("канал") — объявляет канал для отправки сообщений.
  • api.registerSubscriber("канал", new ВашПодписчик()) — связывает канал с обработчиком, реализующим интерфейс RedisSubscriber.

В методе onDisable рекомендуется отменять регистрацию каналов, особенно если ваш плагин может быть выгружен менеджерами вроде PlugMan. Это предотвращает утечки ресурсов и сохраняет чистоту системы.

Пример отправки и получения данных

Представьте, что вам нужно передать состояние основного мира (время и погоду) с одного Spigot-сервера на BungeeCord. На стороне Spigot вы создаёте подписчика для канала req:main-world-state. Когда приходит запрос, обработчик читает данные, формирует ответ с помощью ByteArrayDataOutput, записывает время и флаг погоды, и отправляет сообщение в канал res:main-world-state через api.sendRedisMessage.

На стороне BungeeCord регистрируется входящий канал res:main-world-state и подписчик, который извлекает long-значение времени и boolean-погоду, после чего выводит информацию в консоль. Вся магия происходит без участия игроков — серверы общаются напрямую через Redis, а вы получаете чистый, асинхронный поток данных.

Ключевые преимущества RedisPluginMessages

  • Отсутствие привязки к игроку. Сообщения передаются между серверами даже при нулевом онлайне, что идеально для служебных задач и автоматизации.
  • Поддержка Spigot-to-Spigot. Вы можете связать несколько игровых серверов напрямую, минуя прокси, и организовать сложные цепочки взаимодействия.
  • Простота миграции. Если вы уже использовали стандартный Plugin Messaging, переход на RedisPluginMessages потребует минимальных изменений в коде благодаря схожему API.
  • Высокая скорость. Redis работает в оперативной памяти, что гарантирует минимальные задержки при передаче сообщений.
  • Гибкая конфигурация. Один Redis-сервер может обслуживать десятки экземпляров Minecraft, а уникальные имена в config.yml позволяют чётко идентифицировать отправителя.

Заключение

RedisPluginMessages решает давнюю проблему обмена данными между серверами Minecraft без костылей и лишних зависимостей. Плагин легко встраивается в существующую инфраструктуру, не требует глубоких знаний Redis и предоставляет разработчикам интуитивно понятный API. Будь то синхронизация экономики, глобальные события или мониторинг состояния миров — этот инструмент станет надёжным фундаментом для вашей серверной сети. Попробуйте его в действии, и вы оцените, насколько проще становится архитектура распределённых проектов в кубическом мире.