Floodgate: как пускать Bedrock-игроков на Java-сервер без Mojang-аккаунта (2026)

Floodgate: как пускать Bedrock-игроков на Java-сервер без Mojang-аккаунта (2026)

Друг с телефона, племянник на Switch, дядька на Xbox: каждого из них стандартный Java-сервер не пустит, потому что Java-лицензии у них нет. Покупать второй аккаунт ради общей игры никто не будет. Floodgate, официальный плагин-компаньон для Geyser, это легальный путь, на который Microsoft и команда GeyserMC согласовали. Он строит стабильную идентичность из Xbox Live аккаунта Bedrock-игрока и пускает его на ваш Paper или Velocity без всяких пиратских обходов.

Ниже разбираем что Floodgate делает на самом деле, как ставить его рядом с Geyser на Paper 1.21+, что значат ключевые опции конфига, почему перед каждым Bedrock-ником ставится точка, и как команда linking превращает Bedrock-сессию в полноценную сессию Java-аккаунта для игроков, у которых есть обе версии.

Что такое Floodgate и чем он не является

Geyser сам по себе занимается переводом RakNet-пакетов Bedrock в Java-протокол и обратно. Это техническая часть. Сложная часть это аутентификация: ванильный Java-сервер требует подписанный логин с auth-сервера Mojang, а Bedrock-клиент такой логин выдать не может. Bedrock умеет авторизоваться только в Xbox Live.

Floodgate стоит на Java-стороне диалога и говорит серверу "доверяй мне, этот Xbox Live-логин валиден, вот игрок". Сервер обрабатывает результат как обычную игровую сессию. Скин, UUID, ник, права, всё ведёт себя как для любого другого подключения, только UUID собран из Xbox User ID (XUID), а не из записи Mojang.

Что Floodgate не делает:

  • Не пускает игроков без Xbox Live аккаунта. Это не cracked-плагин.
  • Не заменяет Geyser. Geyser всё ещё нужен для перевода протокола. Floodgate занимается только обходом Java-аутентификации для Bedrock-клиентов.
  • Не открывает дорогу пиратству. Microsoft владеет Mojang и владеет Xbox Live. Валидный Xbox Live аккаунт это платная Microsoft-идентичность, та же самая, через которую Bedrock-клиент покупал игру.

Связка официальная. GeyserMC публикует оба проекта на одном сайте, и репозитории лежат в одной организации: github.com/GeyserMC/Geyser и github.com/GeyserMC/Floodgate.

Как Microsoft изменил расклад

Несколько лет назад Java-аккаунты и Microsoft-аккаунты были разными сущностями. У Mojang был свой auth-сервер, у Bedrock своя авторизация через Xbox. Миграция на Microsoft-аккаунты слила Java-логины в общий identity provider, но протоколы не сошлись. Java по-прежнему ходит своим логин-флоу, Bedrock авторизуется в Xbox Live, и Bedrock-клиент так и не научился выпускать Java session token, хотя Microsoft-аккаунт под капотом тот же.

Floodgate существует именно из-за этого разрыва. Официальная позиция GeyserMC: плагин подписывает Xbox Live-идентичность в Java-пайплайне через локальную ключевую пару, и сервер явно соглашается на это. Никакой проверки Mojang-лицензии не пропускается, никакой защищённый идентификатор не подделывается. Сервер доверяет ключу, который вы сами генерируете при первом старте, и Floodgate этим ключом подтверждает Bedrock-игрока.

Получается чистая граница: хотите чтобы каждый игрок шёл через auth-сервер Mojang, оставайтесь на ванильном Java с online-mode true и без Geyser. Хотите ещё и Bedrock, ставите Geyser плюс Floodgate и принимаете факт: Bedrock-идентичности приходят из Xbox Live, а не из Mojang.

Какой Geyser и Floodgate выбрать

У Geyser несколько сборок. У Floodgate тоже. Они должны соответствовать друг другу.

Тип сервераGeyser jarFloodgate jar
Один сервер Paper / PurpurGeyser-Spigotfloodgate-spigot
Сеть на VelocityGeyser-Velocityfloodgate-velocity (на прокси) + floodgate-spigot (на каждом backend)
Сеть на BungeeCordGeyser-BungeeCordfloodgate-bungee + floodgate-spigot
Standalone (managed-хост Minecraft)Geyser-Standalonefloodgate-standalone
Fabric / NeoForgeGeyser-Fabric / NeoForgefloodgate-fabric / floodgate-neoforge

Практическое правило для 2026:

  • 1.21.x Paper SMP: Geyser-Spigot 2.x плюс floodgate-spigot 2.2.x.
  • Сеть на Velocity 3.3.x: Geyser-Velocity на прокси, floodgate-velocity на прокси, и floodgate-spigot на каждом Paper-backend.
  • Managed-хост, который не даёт класть jar рядом с сервером: Geyser-Standalone в отдельной VM плюс floodgate-standalone рядом, а Paper стоит с online-mode false (об этом ниже).

Качайте только из официальных источников. Hangar (hangar.papermc.io/GeyserMC) и страница релизов GeyserMC на GitHub, других мест не существует. Зеркала на форумах часто отстают на месяцы и подсовывают сборки, которые не парсят пакеты 1.21.4 правильно.

Установка на одиночный Paper 1.21

Самый короткий путь. Paper 1.21 на Java 21, обычный одиночный сервер, прокси нет.

  1. Останавливаем сервер.
  2. Кладём Geyser-Spigot.jar и floodgate-spigot.jar в plugins/.
  3. Запускаем сервер. Оба плагина создают свои каталоги: plugins/Geyser-Spigot/ и plugins/floodgate/.
  4. Смотрим лог. Floodgate напишет что-то вроде Generated key file for Floodgate. Keep this safe!. Этот файл это plugins/floodgate/key.pem.
  5. Останавливаем сервер ещё раз.
  6. Открываем plugins/Geyser-Spigot/config.yml и ставим auth-type: floodgate в блоке remote:.
  7. По желанию правим конфиг Floodgate (дефолты адекватные).
  8. Запускаем ещё раз.

Урезанный plugins/Geyser-Spigot/config.yml со строчками, которые реально важны:

bedrock:
  address: 0.0.0.0
  port: 19132
  clone-remote-port: false
  motd1: "SMP"
  motd2: "Java + Bedrock"
  server-name: "SMP"
  compression-level: 6
  enable-proxy-protocol: false

remote:
  address: auto
  port: auto
  auth-type: floodgate
  use-proxy-protocol: false

floodgate-key-file: key.pem
passthrough-motd: true
passthrough-player-counts: true
allow-third-party-capes: true
allow-third-party-ears: false
show-cooldown: title
show-coordinates: true
disable-bedrock-scaffolding: true
emote-offhand-workaround: disabled
default-locale: en_us

Две строки, которые решают всё, это auth-type: floodgate и floodgate-key-file: key.pem. Без них Geyser попытается спросить у Bedrock-клиента Java-логин, а это никогда не работает.

Урезанный plugins/floodgate/config.yml:

key-file-name: key.pem
username-prefix: "."
replace-spaces: true
default-locale: system
disable-firstjoin-message: false
disable-leave-message: false
metrics:
  enabled: true
  uuid: 00000000-0000-0000-0000-000000000000
player-link:
  enabled: true
  require-link: false
  allow-linking: true
  type: sqlite

Дефолты подходят большинству серверов. Что обычно правят первым делом, это username-prefix (про него ниже) и блок player-link, если хочется включить связку Bedrock и Java аккаунтов.

Установка на Velocity 3.3

Сетевая сборка чуть сложнее. Причина: Velocity терминирует Bedrock-подключение через Geyser-Velocity, но реальная игровая сессия живёт на Paper-backend. Floodgate должен стоять с обеих сторон, чтобы прокси и backend сошлись на одной идентичности игрока.

Раскладка jar:

  • Geyser-Velocity.jar и floodgate-velocity.jar идут в plugins/ прокси.
  • floodgate-spigot.jar идёт в plugins/ каждого Paper-backend.
  • Geyser-Spigot на backend не ставится. Geyser переводит пакеты в одной точке, на прокси.

После первого старта прокси сгенерирует plugins/floodgate/key.pem. Этот же самый файл копируется в plugins/floodgate/key.pem на каждом backend. Backend не доверяет прокси, пока ключи не совпадают.

В Velocity нужен forwarding-mode: modern в velocity.toml и совпадающий velocity-secret, прописанный в paper-global.yml каждого backend в блоке proxies.velocity. Floodgate работает поверх modern forwarding без дополнительной настройки, при условии что ключи совпадают.

В config.yml Geyser-Velocity ставим:

remote:
  auth-type: floodgate

address: auto и port: auto работают так же как на одиночном сервере, только прокси теперь резолвит их через server list Velocity, а не через server.properties.

Точка перед каждым Bedrock-ником

Откройте список игроков на Floodgate-сервере и увидите записи вроде .SteveBE, .MobileMaster, .PixelKing. Точка спереди это не косметика, это страховка.

У Java-ников жёсткий allow-list: латиница, цифры, подчёркивание, длина 3 до 16. Bedrock допускает гораздо больше, включая пробелы, точки и расширенный Unicode. Если Bedrock-игрок выбирает строку, которой уже владеет Java-игрок, получаем коллизию по UUID и правам. Точка спереди обходит это. Точка запрещена в Java-нике, поэтому Java-аккаунт .SteveBE не существует по определению. Это пространство Bedrock-игрока.

replace-spaces: true в конфиге Floodgate делает остальное: пробелы в отображаемом Bedrock-нике меняются на подчёркивания при заходе, чтобы парсеры команд и чата не падали.

Префикс можно поменять на пустой (username-prefix: ""), но тогда коллизии разруливаете сами. Видел админов, которые так делают на маленьких приватных SMP, где все игроки знакомы и пространство имён под контролем. Для публичного сервера точку лучше оставить.

UUID под этим ником это детерминированный UUID v3, посчитанный из Xbox User ID. Два важных следствия:

  • Один и тот же Bedrock-игрок получает один и тот же UUID навсегда, с любого Bedrock-устройства.
  • Плагины, которые хранят данные по UUID (LuckPerms, файлы пользователя EssentialsX, владение чанками в BlueMap), работают без специальной обработки. Для них Floodgate-игрок выглядит как обычный.

Скины

Скины через Floodgate распадаются на два случая.

Bedrock-игрок без привязанного Java-аккаунта. Geyser достаёт Bedrock-скин из самого клиента (Bedrock-скин уезжает в login-пакете) и отдаёт его через FloodgateAPI. Другие игроки видят Bedrock-скин в виде Java-текстуры. Кастомные Bedrock-скины, включая 4D и анимированную геометрию, схлопываются в статический Java-скин, потому что Java-клиент не умеет рендерить Bedrock-геометрии. Плащи поддерживаются частично: Bedrock-плащи показываются как Java-плащи на per-player основе, если в конфиге Geyser стоит allow-third-party-capes: true.

Bedrock-игрок с привязанным Java-аккаунтом. После успешного /linkaccount Floodgate может показывать привязанный Java-скин другим Java-игрокам. На Bedrock-стороне игрок всё равно видит свой Bedrock-скин из-за того, как Bedrock-клиент рендерит скины из собственного пака. Код обработки скинов лежит на github.com/GeyserMC/Floodgate в модулях core и bukkit под пакетом skin, если интересно почитать.

Если плагину нужен скин из Floodgate, точка входа это FloodgateAPI:

import org.geysermc.floodgate.api.FloodgateApi;

if (FloodgateApi.getInstance().isFloodgatePlayer(uuid)) {
    var fp = FloodgateApi.getInstance().getPlayer(uuid);
    String xuid = fp.getXuid();
    String javaUsername = fp.getJavaUsername();
}

Плагины обязаны проверять isFloodgatePlayer перед тем, как считать что у игрока есть Bedrock-возможности. У Java-игрока XUID отсутствует.

Связка Bedrock и Java через /linkaccount

Игрок, у которого есть обе версии, обычно хочет чтобы прогресс в Bedrock сливался с уже существующим Java-аккаунтом. Для этого и нужна система linking.

Если в конфиге player-link.enabled: true и allow-linking: true, появляются две команды:

  • /linkaccount <code> на Java-стороне, выполняет Java-аккаунт.
  • /linkaccount <java-username> <code> на Bedrock-стороне, выполняет Bedrock-аккаунт.

Первая команда на любой из сторон генерирует код, вторая на противоположной стороне его вводит. После успешной привязки Floodgate перестаёт штамповать новый Bedrock-UUID для этого игрока и перенаправляет его сессию на UUID привязанного Java-аккаунта. Плагины теперь видят одну идентичность вместо двух.

require-link: true переворачивает политику: пускают только Bedrock-игроков, которые уже привязали Java-аккаунт. Удобно для закрытых SMP, где админ хочет чтобы каждый Bedrock-игрок был связан с реальным Java-ником. Для публичного сервера это слишком агрессивно.

Бэкенд по умолчанию SQLite (plugins/floodgate/linked.db). Для сети с несколькими прокси или backend обычно нужно переключиться на MySQL, чтобы все ноды читали одну таблицу связок. Схема лежит на github.com/GeyserMC/Floodgate под database/, и Floodgate сам создаёт таблицы при первом запуске.

Защита от подделки: почему Floodgate не cracked-бэкдор

Эта тема всё время всплывает в админских чатах, давайте закроем.

Floodgate-UUID собран из XUID. XUID выдан Xbox Live для Microsoft-аккаунта, который купил Minecraft Bedrock Edition. Публичного способа подделать валидный XUID без прохождения через Microsoft-аутентификацию не существует. Bedrock-клиент, который хочет подключиться через Geyser, предъявляет свою login chain, подписанную Microsoft. Geyser и Floodgate проверяют эту цепочку до того как создать сессию игрока.

Сравнение с настоящей cracked-аутентификацией (online-mode: false, без сторонней авторизации):

СвойствоBedrock через FloodgateCracked Java (online-mode: false)
Источник идентичностиПодписанный Xbox Live логинЧто заявит клиент
Как подделать аккаунтНужен Microsoft-аккаунт с купленным BedrockЛюбой ник и любой клиент
Стабильность UUIDДетерминированный из XUID, без коллизийПо нику, легко конфликтует
Microsoft одобряетДа, официальный путь GeyserMC + MicrosoftНет, нарушение EULA на публичных серверах
Кто заходитРеальные платные Bedrock-клиентыКто угодно с jar-клиентом
Риск для игроковКак у Java-аккаунтаВысокий, угон и imp ersonation

Bedrock-игрок через Floodgate ближе к Java-игроку, чем к cracked. Считать Floodgate-UUID подозрительным по умолчанию неправильно. Считать cracked-Java на публичном сервере нормой неправильно.

Для серверов, где нужны и Bedrock и Java, правильный конфиг это online-mode: true на Paper-backend и auth-type: floodgate в Geyser. Java-сторона остаётся под Mojang-аутом, Bedrock под Xbox Live, а Floodgate сшивает их.

Если по какой-то причине нужен online-mode: false (некоторые хосты за BungeeCord-прокси этого требуют), убедитесь что прокси сам обеспечивает аутентификацию через что-то типа ViaProxy или специализированного auth-плагина, никогда не оставляйте дыру открытой.

Проверка установки через /geyser dump

Geyser ставит диагностическую команду, которая выкладывает санитизированный конфиг и список игроков на пастбин и отдаёт URL.

/geyser dump

В чате видно что-то такое:

A copy of the dump has been uploaded to https://dump.geysermc.org/abc123

Когда просите помощи в Discord GeyserMC, прикладывайте этот URL. Мейнтейнеры видят версию, список плагинов, состояние Floodgate и конфиг remote-аутентификации без копипасты yaml.

Что нужно проверить в дампе своими глазами:

  • auth-type должен быть floodgate.
  • В списке плагинов должны быть и Geyser, и Floodgate, с теми версиями, которые вы ожидаете.

Если в auth-type написано online или offline, Bedrock-игроки получат ошибку "failed to verify username" или случайные UUID, которые конфликтуют с Java-аккаунтами. Меняем на floodgate и рестартим.

Типичные ошибки

Floodgate could not find a player linker. Linking will not work. Неверные креды MySQL, или путь SQLite на read-only ФС. Проверяем player-link в конфиге Floodgate, или возвращаемся к type: sqlite.

The given key file does not match. На сетевой сборке key.pem на backend не совпадает с прокси. Копируем ключ прокси на каждый backend, рестартим.

Authentication is disabled, this is not safe. У Geyser в auth-type стоит offline. Ставим floodgate.

Bedrock player kicked: Floodgate handshake failed. Ловится на Velocity, где forwarding-mode это legacy или bungeeguard. Ставим Velocity в modern и копируем velocity-secret в paper-global.yml каждого backend.

Bedrock-игрок зашёл, но плагины не узнают его UUID. Bedrock-игрок зашёл раньше, чем Floodgate догрузился. Плагины, которые цепляют PlayerJoinEvent на низком приоритете и читают FloodgateAPI, обязаны прописать зависимость от Floodgate в plugin.yml, чтобы порядок загрузки был правильный.

Игроки не видят Bedrock-скин на Java-стороне. Опции allow-third-party-capes и загрузка скинов требуют исходящего интернета. Если хост блокирует исходящий HTTPS на textures.minecraft.net или сервис скинов GeyserMC, скины откатываются на Steve. Открываем egress на эти домены.

Username already taken / UUID conflict. Почти всегда вызвано username-prefix: "" плюс Bedrock и Java-игрок с одинаковым ником. Возвращаем точечный префикс, проблемный игрок переподключается.

Что важно в проде в 2026

Несколько моментов, на которых регулярно горят.

Floodgate не замедляет логин. Криптографическая проверка идёт на стороне Geyser, не Floodgate, и это одна Ed25519-проверка на заход. Узким местом при заходе обычно становится загрузка мира или ресурс-пака, не auth.

Bedrock и Java должны сидеть за одним DDoS-фильтром. RakNet это UDP, и популярная цель амплификационных атак из-за маленького unconnected ping пакета. Если открыли 19132/udp в большой мир, трафик придёт. Фильтры типа MineGuard ловят это на сетевом крае и пропускают только верифицированные RakNet-сессии. Crossplay-серверы в среднем привлекают больше бот-трафика чем чистые Java, потому что Bedrock-точка входа легче фингерпринтится, так что DDoS-защиту лучше настроить заранее.

Бэкап обязан включать plugins/floodgate/key.pem и plugins/floodgate/linked.db. Потеряли ключ, все привязанные аккаунты сломались. Потеряли линк-базу, все игроки заново привязываются. Папка plugins/floodgate/ маленькая, меньше мегабайта даже на нагруженном сервере.

При апгрейде Paper проверяйте, что текущий Geyser и Floodgate поддерживают новую версию Minecraft, до того как переключаете jar. Плагины отстают от протокола на день-два на минорных и на неделю на мажорных. Следите за страницей релизов GeyserMC на GitHub.

FAQ

Q: Bedrock-игрокам нужно покупать Java, чтобы зайти? Нет. В этом и весь смысл Floodgate. Их Xbox Live идентичность, та самая, через которую они купили Bedrock, этого хватает. Java-лицензия остаётся опциональной.

Q: Игрок без Microsoft-аккаунта может зайти через Floodgate? Нет. Floodgate требует подписанную Xbox Live login chain. Способа для оффлайн или неаутентифицированного Bedrock-клиента не существует.

Q: Стоит ли ставить online-mode false на Paper-backend? Только если у вас прокси-сеть с правильной обработкой авторизации на прокси. Для одиночного SMP правильный вариант это online-mode true плюс Floodgate: Java-игроки идут через Mojang, Bedrock через Floodgate.

Q: Античит видит странные движения у Bedrock-игроков, что делать? Физика Bedrock отличается от Java в мелочах, и Geyser старается это перевести. Большинство современных античитов имеют режим "Floodgate-aware", который ослабляет проверки для Floodgate-UUID. Vulcan, Matrix и Grim это поддерживают. Включайте этот режим, а не отключайте проверки глобально.

Q: Команда linking безопасна? Может ли злоумышленник украсть мой Java-аккаунт? Linking это двустороннее рукопожатие. Код, сгенерированный с одной стороны, должен ввести тот же игрок с другой стороны из своей сессии. Привязать Java-аккаунт извне нельзя. Коды живут короткое время.

Q: Куда обращаться, если Floodgate ведёт себя странно? Discord GeyserMC и трекер на github.com/GeyserMC/Floodgate. Всегда прикладывайте вывод /geyser dump. Мейнтейнеры разбирают этот канал ежедневно.

Crossplay-сервер с Floodgate это маленькое усложнение в плагинах и большое расширение аудитории. Плагин зрелый, компания, которая владеет Minecraft, путь одобряет, и единственный сюрприз для админа это аккуратность с key.pem и свежий Geyser. Поднимаете, отдаёте адрес друзьям с телефонами, и список игроков начинает заполняться никами с точкой впереди.


Sunucunuzu DDoS Saldırılarından Koruyun

5 dakikada kurulumla ücretsiz koruma. 1 TB bant genişliği dahil.

Ücretsiz Deneyin


İlgili Makaleler