Floodgate: jak wpuszczać graczy Bedrock na serwer Java bez konta Mojang (2026)
Kolega z telefonu, siostrzeniec na Switchu, wujek na Xboxie: kazdy z nich odbija sie od standardowego serwera Java, bo nikt z nich nie ma licencji Java. Kupowanie drugiego konta tylko po to, zeby pograc razem, nikomu sie nie chce. Floodgate, oficjalny plugin towarzyszacy Geyserowi, to legalna sciezka, na ktora zgodzili sie Microsoft i ekipa GeyserMC. Buduje stabilna tozsamosc z istniejacego konta Xbox Live gracza i wpuszcza go na twoj serwer Paper albo Velocity bez zadnych pirackich obejsc.
Tutaj rozkladamy na czynniki pierwsze, co Floodgate robi naprawde, jak postawic go obok Geysera na Paper 1.21+, co znacza opcje w configu, dlaczego przed kazda nazwa Bedrock pojawia sie kropka i jak komenda linking zamienia sesje Bedrock w pelnoprawna sesje konta Java dla graczy, ktorzy maja obie edycje.
Czym Floodgate jest, a czym nie
Geyser sam w sobie tlumaczy pakiety RakNet z Bedrock na protokol Java i z powrotem. To latwiejsza polowa. Trudniejsza polowa to autoryzacja: vanillowy serwer Java wymaga podpisanego loginu z serwera autoryzacji Mojang, a klient Bedrock takiego loginu nie wytworzy. Bedrock potrafi sie autoryzowac tylko w Xbox Live.
Floodgate stoi po stronie Java tej rozmowy i mowi serwerowi "zaufaj mi, ten login Xbox Live jest wazny, oto gracz". Serwer traktuje wynik jak normalna sesje. Skin, UUID, nick, uprawnienia, wszystko zachowuje sie jak przy zwyklym polaczeniu, tylko UUID jest zbudowany z Xbox User ID (XUID), a nie z rekordu Mojang.
Czego Floodgate nie robi:
- Nie wpuszcza graczy bez konta Xbox Live. To nie jest plugin pod cracki.
- Nie zastepuje Geysera. Geyser nadal tlumaczy protokol. Floodgate zajmuje sie tylko obejsciem autoryzacji Java dla klientow Bedrock.
- Nie otwiera drogi piractwu. Microsoft posiada Mojang i posiada Xbox Live. Wazne konto Xbox Live to platna tozsamosc Microsoft, ta sama, ktora klient Bedrock kupil gre.
Zestawienie jest oficjalne. GeyserMC publikuje oba projekty na tej samej stronie, repozytoria leza w jednej organizacji: github.com/GeyserMC/Geyser i github.com/GeyserMC/Floodgate.
Jak Microsoft zmienil uklad
Kilka lat temu konta Java i konta Microsoft byly osobnymi swiatami. Mojang mialo wlasny serwer autoryzacji, Bedrock mialo wlasna autoryzacje przez Xbox. Migracja na konta Microsoft scalila loginy Java w jeden identity provider, ale protokoly nie zlaly sie razem. Java nadal chodzi swoim flow loginu, Bedrock autoryzuje sie w Xbox Live i klient Bedrock dalej nie umie wystawic tokenu sesji Java, mimo ze konto Microsoft pod spodem jest to samo.
Floodgate istnieje wlasnie z powodu tej luki. Oficjalne stanowisko GeyserMC: plugin podpisuje tozsamosc Xbox Live w pipeline Java za pomoca lokalnej pary kluczy, a serwer wprost sie na to godzi. Zadna kontrola licencji Mojang nie jest pomijana, zaden chroniony identyfikator nie jest podrabiany. Serwer ufa plikowi klucza, ktory sam generujesz przy pierwszym starcie, a Floodgate poreczza nim za gracza Bedrock.
Linia jest czysta: jesli chcesz, zeby kazdy gracz przychodzil z autoryzacji Mojang, postaw vanillowa Jave z online-mode true i bez Geysera. Jesli chcesz tez Bedrock, instalujesz Geysera plus Floodgate i akceptujesz fakt, ze tozsamosci Bedrock pochodza z Xbox Live, nie z Mojang.
Wybor wlasciwego Geysera i Floodgate
Geyser ma kilka wariantow. Floodgate tez. Musza do siebie pasowac.
| Typ serwera | Geyser jar | Floodgate jar |
|---|---|---|
| Pojedynczy Paper / Purpur | Geyser-Spigot | floodgate-spigot |
| Siec na Velocity | Geyser-Velocity | floodgate-velocity (proxy) + floodgate-spigot (kazdy backend) |
| Siec na BungeeCord | Geyser-BungeeCord | floodgate-bungee + floodgate-spigot |
| Standalone (managed-host Minecraft) | Geyser-Standalone | floodgate-standalone |
| Fabric / NeoForge | Geyser-Fabric / NeoForge | floodgate-fabric / floodgate-neoforge |
Praktyczna regula na 2026:
- 1.21.x Paper SMP: Geyser-Spigot 2.x plus floodgate-spigot 2.2.x.
- Siec na Velocity 3.3.x: Geyser-Velocity na proxy, floodgate-velocity na proxy i floodgate-spigot na kazdym Paper backendzie.
- Managed-host, ktory nie pozwala wrzucic jara obok serwera: Geyser-Standalone w osobnej VM i floodgate-standalone obok, a Paper z online-mode false (o tym dalej).
Pobieraj tylko z oficjalnych zrodel. Hangar (hangar.papermc.io/GeyserMC) i strona releases GeyserMC na GitHub, innych miejsc nie ma. Forumowe lustra czesto sa o miesiace do tylu i konczysz z buildem, ktory nie parsuje pakietow 1.21.4 poprawnie.
Instalacja na pojedynczym Paper 1.21
Najkrotsza droga. Paper 1.21 na Java 21, zwykly pojedynczy serwer, bez proxy.
- Zatrzymujesz serwer.
- Wrzucasz
Geyser-Spigot.jarifloodgate-spigot.jardoplugins/. - Startujesz serwer. Oba pluginy tworza katalogi:
plugins/Geyser-Spigot/iplugins/floodgate/. - Patrzysz w log. Floodgate napisze cos w stylu
Generated key file for Floodgate. Keep this safe!. Ten plik toplugins/floodgate/key.pem. - Zatrzymujesz serwer ponownie.
- Edytujesz
plugins/Geyser-Spigot/config.ymli ustawiaszauth-type: floodgatew blokuremote:. - Opcjonalnie korygujesz config Floodgate (domyslki sa rozsadne).
- Startujesz jeszcze raz.
Skrocony plugins/Geyser-Spigot/config.yml z liniami, ktore faktycznie sie licza:
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
Dwie linie, na ktorych wszystko stoi, to auth-type: floodgate i floodgate-key-file: key.pem. Bez nich Geyser sprobuje zazadac od klienta Bedrock loginu Java, co nigdy nie dziala.
Skrocony 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
Domyslki pasuja wiekszosci serwerow. To, co operatorzy zmieniaja jako pierwsze, to username-prefix (o tym za chwile) i blok player-link, jesli chcesz wlaczyc laczenie kont Bedrock i Java.
Instalacja na Velocity 3.3
Konfiguracja sieciowa jest troche bardziej zlozona. Powod: Velocity konczy polaczenie Bedrock przez Geyser-Velocity, ale faktyczna sesja gry zyje na Paper backendzie. Floodgate musi stac po obu stronach, zeby proxy i backend uzgodnily ta sama tozsamosc gracza.
Uklad jarow:
Geyser-Velocity.jarifloodgate-velocity.jarida doplugins/proxy.floodgate-spigot.jarida doplugins/kazdego Paper backendu.- Geyser-Spigot nie ladujesz na backendach. Geyser tlumaczy pakiety w jednym punkcie, na proxy.
Po pierwszym starcie proxy generuje plugins/floodgate/key.pem. Ten sam plik kopiujesz do plugins/floodgate/key.pem na kazdym backendzie. Dopoki klucze sie nie zgadzaja, backend nie ufa proxy.
Velocity wymaga forwarding-mode: modern w velocity.toml i pasujacego velocity-secret, wpisanego w paper-global.yml kazdego backendu w bloku proxies.velocity. Floodgate dziala na modern forwardingu bez dodatkowych przewodow, pod warunkiem ze plik klucza jest taki sam po obu stronach.
W config.yml Geyser-Velocity ustawiasz:
remote:
auth-type: floodgate
address: auto i port: auto dzialaja tak samo jak na pojedynczym serwerze, tylko proxy rozwiazuje je teraz przez liste serwerow Velocity, a nie przez server.properties.
Kropka przed kazdym Bedrock-nickiem
Otwierasz liste graczy na serwerze z Floodgate i widzisz wpisy w stylu .SteveBE, .MobileMaster, .PixelKing. Ta wiodaca kropka to nie kosmetyka, to zabezpieczenie.
Java-nicki maja waska liste dozwolonych znakow: alfanumeryczne i podkreslnik, dlugosc 3 do 16. Bedrock dopuszcza znacznie wiecej, w tym spacje, kropki i szerszy zakres Unicode. Jesli gracz Bedrock wybierze ciag, ktory juz nalezy do gracza Java, dostajesz kolizje UUID i uprawnien. Kropka z przodu obchodzi to. Kropka jest niedozwolona w Java-nicku, wiec konto Java o nazwie .SteveBE z definicji nie istnieje. Ta przestrzen nazw nalezy do gracza Bedrock.
replace-spaces: true w configu Floodgate robi reszte: spacje w wyswietlanym Bedrock-nicku przy wejsciu zamieniaja sie na podkreslniki, zeby parsery komend i czatu sie nie wykrzaczaly.
Prefix mozesz ustawic na pusty (username-prefix: ""), ale wtedy bierzesz na siebie kazda kolizje. Widzialem operatorow, ktorzy tak robia na malych prywatnych SMP, gdzie kazdy gracz jest znany i przestrzen nazw jest pilnowana. Na publicznym serwerze kropke zostawiasz.
UUID pod ta nazwa to deterministyczny UUID v3 wyliczony z Xbox User ID. Dwie wazne konsekwencje:
- Ten sam gracz Bedrock dostaje na zawsze ten sam UUID, niezaleznie z jakiego urzadzenia Bedrock sie zaloguje.
- Pluginy, ktore trzymaja dane po UUID (LuckPerms, pliki uzytkownika EssentialsX, wlasnosc chunkow w BlueMap), dzialaja bez zadnej specjalnej obslugi. Dla nich Floodgate-gracz wyglada jak zwykly.
Skiny
Skiny przez Floodgate dziela sie na dwa przypadki.
Gracz Bedrock bez podlaczonego konta Java. Geyser bierze skin Bedrock z samego klienta (Bedrock skin jest wysylany w pakiecie loginu) i udostepnia go przez FloodgateAPI. Inni gracze widza skin Bedrock jako teksture Java. Customowe skiny Bedrock, w tym 4D i animowana geometria, splaszczaja sie do statycznego skinu Java, bo klient Java nie umie renderowac geometrii Bedrock. Peleryny sa wspierane czesciowo: peleryny Bedrock pokazuja sie jako peleryny Java per gracz, jesli w configu Geysera stoi allow-third-party-capes: true.
Gracz Bedrock z podlaczonym kontem Java. Po udanym /linkaccount Floodgate moze pokazywac podlaczony skin Java innym graczom Java. Po stronie Bedrock gracz nadal widzi swoj skin Bedrock z powodu tego, jak klient Bedrock renderuje skiny z wlasnego paczka. Kod obslugi skinow lezy na github.com/GeyserMC/Floodgate w modulach core i bukkit w pakiecie skin, jesli chcesz zajrzec.
Jesli plugin potrzebuje skinu z Floodgate, punktem wejscia jest 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();
}
Pluginy musza sprawdzac isFloodgatePlayer, zanim zaloza, ze gracz ma mozliwosci Bedrock. Gracz Java nie ma XUID.
Linkowanie Bedrock i Java przez /linkaccount
Gracz, ktory ma obie edycje, zwykle chce, zeby jego postep z Bedrock zlal sie z istniejacym kontem Java. Wlasnie po to jest system linkowania.
Z player-link.enabled: true i allow-linking: true pojawiaja sie dwie komendy:
/linkaccount <code>po stronie Java, wykonywane przez konto Java./linkaccount <java-username> <code>po stronie Bedrock, wykonywane przez konto Bedrock.
Pierwsza komenda po dowolnej ze stron generuje kod, druga po przeciwnej stronie go wpisuje. Po udanym powiazaniu Floodgate przestaje generowac nowy UUID Bedrock dla tego gracza i przekierowuje jego sesje na UUID powiazanego konta Java. Pluginy widza teraz jedna tozsamosc zamiast dwoch.
require-link: true odwraca polityke: wpuszczani sa tylko gracze Bedrock, ktorzy juz powiazali konto. Przydatne na zamknietych SMP, gdzie admin chce, zeby kazde konto Bedrock bylo zwiazane z realna tozsamoscia Java. Na publicznym serwerze za ostre.
Domyslny backend to SQLite (plugins/floodgate/linked.db). Dla sieci z kilkoma proxy lub backendami zwykle przelaczasz na MySQL, zeby kazdy node czytal te sama tabele powiazan. Schemat lezy na github.com/GeyserMC/Floodgate pod database/, a Floodgate tworzy tabele przy pierwszym starcie.
Anti-abuse: dlaczego Floodgate to nie cracked-backdoor
Ten temat regularnie wraca w admin-czatach, wiec zamykamy go.
UUID Floodgate jest zbudowany z XUID. XUID jest wystawiany przez Xbox Live dla konta Microsoft, ktore kupilo Minecraft Bedrock Edition. Nie ma publicznego sposobu na podrobienie waznego XUID bez przejscia przez auth flow Microsoftu. Klient Bedrock, ktory chce sie polaczyc przez Geysera, prezentuje swoja login chain podpisana przez Microsoft. Geyser i Floodgate weryfikuja ten lancuch, zanim wytworza sesje gracza.
Porownanie z prawdziwa cracked-autoryzacja (online-mode: false, bez zewnetrznej autoryzacji):
| Wlasciwosc | Bedrock przez Floodgate | Cracked Java (online-mode: false) |
|---|---|---|
| Zrodlo tozsamosci | Podpisany login Xbox Live | Co klient sobie zadeklaruje |
| Podrobienie konta | Potrzebne konto Microsoft z kupionym Bedrock | Dowolny nick i polaczenie |
| Stabilnosc UUID | Deterministyczny z XUID, brak kolizji | Z nicka, latwe kolizje |
| Microsoft akceptuje | Tak, oficjalna sciezka GeyserMC + Microsoft | Nie, lamanie EULA na publicznych serwerach |
| Kto wchodzi | Realni placacy klienci Bedrock | Ktokolwiek z jarem klienta |
| Ryzyko dla twoich graczy | Jak przy koncie Java | Wysokie, kradziez konta i podszywanie |
Gracz Bedrock przez Floodgate jest blizej gracza Java niz cracked. Traktowanie UUID Floodgate jako podejrzanego z definicji jest blednem. Traktowanie cracked-Java na publicznym serwerze jako normy jest blednem.
Dla serwerow, ktore chca i Bedrock, i Java, poprawny config to online-mode: true na Paper backendzie i auth-type: floodgate w Geyserze. Strona Java zostaje pod auth Mojang, strona Bedrock pod Xbox Live, a Floodgate je zszywa.
Jesli z jakiegos powodu potrzebujesz online-mode: false (niektore hostingi za BungeeCord proxy tego wymagaja), upewnij sie, ze samo proxy wymusza autoryzacje przez ViaProxy albo dedykowany plugin auth, nigdy nie zostawiaj otwartego wejscia.
Weryfikacja instalacji przez /geyser dump
Geyser ma komende diagnostyczna, ktora wrzuca oczyszczony config i liste graczy na pastebin i zwraca URL.
/geyser dump
W czacie widzisz:
A copy of the dump has been uploaded to https://dump.geysermc.org/abc123
Kiedy prosisz o pomoc na Discordzie GeyserMC, dolaczasz ten URL. Mainteinerzy widza wersje, liste pluginow, stan Floodgate i config remote auth bez kopiowania yaml.
Co sprawdzic w dumpie samemu:
auth-typemusi bycfloodgate.- Na liscie pluginow musza byc Geyser i Floodgate, w wersjach, ktorych sie spodziewasz.
Jesli auth-type to online albo offline, gracze Bedrock dostaja blad "failed to verify username" albo losowe UUID, ktore koliduja z kontami Java. Zmieniasz na floodgate i restartujesz.
Typowe bledy
Floodgate could not find a player linker. Linking will not work. Zle dane MySQL, albo sciezka SQLite na FS tylko do odczytu. Sprawdzasz player-link w configu Floodgate albo wracasz do type: sqlite.
The given key file does not match. Backendy w sieci maja niezgodny key.pem. Kopiujesz klucz z proxy na kazdy backend, restartujesz wszystkie.
Authentication is disabled, this is not safe. W Geyserze auth-type to offline. Ustawiasz floodgate.
Bedrock player kicked: Floodgate handshake failed. Pojawia sie na sieciach Velocity, gdzie forwarding-mode to legacy albo bungeeguard. Velocity na modern i velocity-secret w paper-global.yml kazdego backendu.
Gracz Bedrock wszedl, ale pluginy nie rozpoznaja jego UUID. Gracz Bedrock wszedl, zanim Floodgate skonczyl ladowanie. Pluginy, ktore lapia PlayerJoinEvent na niskim priorytecie i czytaja FloodgateAPI, musza wpisac zaleznosc od Floodgate w plugin.yml, zeby kolejnosc ladowania byla wlasciwa.
Gracze nie widza skinu Bedrock po stronie Java. allow-third-party-capes i ladowanie skinow wymagaja wyjscia w internet. Jesli host blokuje wychodzace HTTPS do textures.minecraft.net albo serwisu skinow GeyserMC, skiny wracaja do Steve. Otwierasz egress na te domeny.
Username already taken / UUID conflict. Niemal zawsze powodowane username-prefix: "" plus gracz Bedrock i Java z tym samym nickiem. Przywracasz prefix z kropka, problemowy gracz wchodzi ponownie.
Operacyjne notatki na 2026
Kilka rzeczy, na ktorych ludzie sie wykladaja w produkcji.
Floodgate nie spowalnia logowania zauwazalnie. Weryfikacja kryptograficzna jest po stronie Geysera, nie Floodgate, i to jedna weryfikacja Ed25519 na wejscie. Waskim gardlem przy wejsciu jest niemal zawsze ladowanie swiata albo pobieranie resourcepacka, nie auth.
Bedrock i Java powinny siedziec za tym samym filtrem DDoS. RakNet to UDP i popularny cel atakow amplifikacyjnych z powodu malego pakietu unconnected ping. Jesli wystawiasz 19132/udp w sieci, ruch przyjdzie. Filtry w stylu MineGuard lapia to na krawedzi sieci i przepuszczaja tylko zweryfikowane sesje RakNet. Crossplay-serwery srednio przyciagaja wiecej ruchu botow niz czyste Java, bo wejscie Bedrock latwiej wyfingerprintowac, wiec ochrone DDoS warto ustawic wczesnie.
Backupy musza zawierac plugins/floodgate/key.pem i plugins/floodgate/linked.db. Tracisz klucz, wszystkie powiazane konta sie sypia. Tracisz baze powiazan, kazdy gracz musi linkowac od nowa. Caly folder plugins/floodgate/ jest maly, ponizej megabajta nawet na zapelnionym serwerze.
Przy upgradzie Paper sprawdzasz, ze aktualne Geyser i Floodgate wspieraja nowa wersje Minecrafta, zanim podmieniasz jara. Pluginy zostaja w tyle za protokolem o dzien lub dwa na minorach i o tydzien na majorach. Strona releases GeyserMC na GitHub na oku.
FAQ
P: Czy moi gracze Bedrock musza kupowac Minecraft Java, zeby grac? Nie. To jest sens Floodgate. Ich tozsamosc Xbox Live, ta sama, ktora kupili Bedrock, wystarczy. Licencja Java zostaje opcjonalna.
P: Czy gracz bez konta Microsoft moze wejsc przez Floodgate? Nie. Floodgate wymaga podpisanej login chain Xbox Live. Dla offline'owego ani nieautoryzowanego klienta Bedrock nie ma drogi.
P: Czy stawiac online-mode false na Paper backendzie? Tylko jesli masz proxy network z porzadna obsluga autoryzacji na proxy. Dla pojedynczego SMP poprawnie jest online-mode true plus Floodgate: gracze Java idą przez Mojang, Bedrock przez Floodgate.
P: Mój anticheat widzi dziwne ruchy graczy Bedrock, co teraz? Fizyka Bedrock rozni sie od Java w detalach, a Geyser tlumaczy ja jak umie. Wiekszosc nowoczesnych anticheatow ma tryb "Floodgate-aware", ktory rozluznia kontrole dla UUID Floodgate. Vulcan, Matrix i Grim to wspieraja. Wlaczasz ten tryb zamiast wylaczac kontrole globalnie.
P: Czy komenda linking jest bezpieczna? Czy ktos moze ukrasc moje konto Java? Linking to dwustronny handshake. Kod wygenerowany po jednej stronie musi wpisac ten sam gracz po drugiej stronie z wlasnej sesji. Konta Java nie da sie powiazac z zewnatrz. Kody wygasaja szybko.
P: Gdzie szukac pomocy, gdy Floodgate sie zle zachowuje?
Discord GeyserMC i tracker na github.com/GeyserMC/Floodgate. Zawsze dolaczaj wynik /geyser dump. Mainteinerzy przegladaja kanal codziennie.
Crossplay serwer z Floodgate to mala komplikacja w pluginach i duze rozszerzenie publicznosci. Plugin jest dojrzaly, firma stojaca za Minecraftem akceptuje sciezke, a jedyne, na co operator musi uwazac, to dbanie o key.pem i swiezy Geyser. Stawiasz, dajesz adres znajomym z telefonami i lista graczy zaczyna sie wypelniac nickami z kropka z przodu.
Chroń swój serwer przed atakami DDoS
Darmowa ochrona z konfiguracją w 5 minut. 1 TB ruchu w zestawie.
Wypróbuj za darmoPowiązane artykuły
WorldGuard: konfiguracja ochrony terenu i walka z griefem
Konfiguracja WorldGuard na Paper lub Spigot: regiony, flagi, hierarchia priorytetów i parent, ochrona przed griefem bez typowych błędów.
Vanilla Tweaks: najlepsze datapacki na serwer SMP w 2026
Najlepsze datapacki Vanilla Tweaks na SMP w 2026: Graves, Multiplayer Sleep, Anti Creeper Grief, instalacja i kompatybilność z pluginami.
Optymalizacja serwera Minecraft pod odporność na ataki
Jak prawidłowa konfiguracja JVM, jądra Linux i Paper/Purpur czyni serwer odporniejszym na DDoS. Konkretne flagi, configi sysctl, limity połączeń i optymalizacja pluginów dla maksymalnego zapasu wydajności.