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 jar | Floodgate jar |
|---|---|---|
| Один сервер Paper / Purpur | Geyser-Spigot | floodgate-spigot |
| Сеть на Velocity | Geyser-Velocity | floodgate-velocity (на прокси) + floodgate-spigot (на каждом backend) |
| Сеть на BungeeCord | Geyser-BungeeCord | floodgate-bungee + floodgate-spigot |
| Standalone (managed-хост Minecraft) | Geyser-Standalone | floodgate-standalone |
| Fabric / NeoForge | Geyser-Fabric / NeoForge | floodgate-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, обычный одиночный сервер, прокси нет.
- Останавливаем сервер.
- Кладём
Geyser-Spigot.jarиfloodgate-spigot.jarвplugins/. - Запускаем сервер. Оба плагина создают свои каталоги:
plugins/Geyser-Spigot/иplugins/floodgate/. - Смотрим лог. Floodgate напишет что-то вроде
Generated key file for Floodgate. Keep this safe!. Этот файл этоplugins/floodgate/key.pem. - Останавливаем сервер ещё раз.
- Открываем
plugins/Geyser-Spigot/config.ymlи ставимauth-type: floodgateв блокеremote:. - По желанию правим конфиг Floodgate (дефолты адекватные).
- Запускаем ещё раз.
Урезанный 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 через Floodgate | Cracked 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. Поднимаете, отдаёте адрес друзьям с телефонами, и список игроков начинает заполняться никами с точкой впереди.
Protégez votre serveur contre les attaques DDoS
Protection gratuite avec configuration en 5 minutes. 1 To de bande passante inclus.
Essayer gratuitementArticles connexes
Slimefun: полный гайд по плагину для Minecraft сервера в 2026
Slimefun4 на Paper 1.21: установка, гайдбук, исследования, cargo-сеть, энергия, аддоны (ExoticGarden, InfinityExpansion) и как не убить TPS.
Lifesteal SMP сервер: как создать и настроить с нуля (2026)
Lifesteal SMP - самый хайповый режим на Minecraft YouTube. Убил игрока - забрал его сердце. 0 сердец - перманентный бан. Разбираем плагины, конфиги и правила для своего сервера.
Как читать и анализировать логи Minecraft сервера
Где хранятся логи Minecraft сервера, что означают уровни INFO, WARN, ERROR, FATAL, как находить ошибки плагинов, читать краш-репорты, искать следы взлома и использовать grep для анализа. Практический гайд для администраторов.