Wie der DzBot-Bot in deinen Server kommt — und Bedrock in dein Java
Schritt für Schritt, mit Befehlen zum Kopieren. Alles hier wurde an einem echten Paper-26.3-Server gemessen: der Bot kam über das Panel hinein, und Geyser hat den Bedrock-Client übersetzt.
Lies das, bevor du eine Konfiguration anfasst
Diese Anleitung ist das, was FUNKTIONIERT — gemessen, nicht die Liste dessen, was DzBot verspricht. Was noch nicht funktioniert, steht im Abschnitt „Was noch NICHT funktioniert“, und es steht dort, weil gemessen wurde, dass es nicht funktioniert. Wenn bei dir etwas abweicht, steht der Fehler, den dein Server zurückgegeben hat, direkt beim Schritt.
WAS NOCH NICHT FUNKTIONIERT (Kurzfassung)
Die vollständige Liste mit dem Grund zu jedem Punkt steht am Ende dieser Seite:
- NetherNet ist in Geyser schon aktiviert, aber die Ports müssen noch am Router geöffnet werden (UDP 19133 und TCP 19132).
- Mit abgeschaltetem Bedrock-Login kann sich jeder mit dem Namen eines anderen anmelden.
- Der Bedrock-Bot hat keine XUID: Er ist nicht über Xbox Operator, nur über ops.json.
- GrimAC hat 277 Verstöße für den Bot verzeichnet: Er kommt auf den Server, aber das Anticheat akzeptiert ihn noch nicht als legitimen Client.
- GrimAC warnt, dass ViaBackwards auf einem 1.21.2+-Server „currently unsupported“ ist (betrifft Fahrzeuge mit alten Clients).
Der Weg, Schritt für Schritt
Java 25 — ohne ihn öffnet der Server den Port gar nicht
Ab 26.1 verlangt Paper Java 25 oder neuer. Mit Java 21 stirbt der Prozess, bevor der Port aufgeht, und die Meldung steht im Log — nicht auf dem Bildschirm.
java -version
ls /usr/lib/jvm/openjdk version "25.0.4.1" 2026-08-18
OpenJDK Runtime Environment (build 25.0.4.1)
OpenJDK 64-Bit Server VM (build 25.0.4.1, mixed mode, sharing)Auf dieser Maschine liegt Java 25 unter /usr/lib/jvm/java-25-openjdk/bin/java — und genau dieser Pfad kommt in den Befehl, der den Server startet (Schritt 5).
Minecraft 26.1 and newer requires running the server with Java 25 or aboveAuf Ubuntu/Debian: sudo apt install openjdk-25-jdk · Der für die Messung verwendete Paper-Build war Build 211 — das kündigt der Server an: 26.3-211-main@2d602d6. Die Datei auf dem Server heißt paper-26.3-40.jar: der Name stammt von einem älteren Build und blieb, weil das Startskript auf sie zeigt.
eula.txt, server.properties und ops.json
Drei Dateien. Die erste ist die Lizenzannahme, die zweite sagt, wie sich der Server verhält, die dritte vergibt im Offline-Modus den Operator-Status.
eula=trueOhne das startet der Server nicht: Er hält beim ersten Start an, fragt nach der Annahme, und öffnet den Port nie.
server-port=25565
online-mode=false
level-type=minecraft\:flat
difficulty=peaceful
gamemode=survival
spawn-protection=0
white-list=false
view-distance=6
max-players=20server-port=25565Der Java-TCP-Port. Denselben trägst du im Panel ein.online-mode=falseKein Microsoft-Konto. So kommt der Bot mit einem Namen und ohne Passwort hinein — und so wird die UUID zur „Offline“-UUID (siehe ops.json).level-type=minecraft\:flatFlache Welt. Das „\:“ ist das Escape-Zeichen von Java selbst: ohne ihn liest der Server die Zeile nicht.difficulty=peacefulDer auf dem Testserver gemessene Wert. Er ändert nicht, wie der Bot hineinkommt — er ändert das Spiel (keine Mobs, kein Hunger).gamemode=survivalEbenso: der gemessene Wert. Der Bot kommt im Überlebensmodus hinein.spawn-protection=0Kein Spawn-Schutz: Der Bot darf überall graben und bauen, auch am Spawnpunkt.white-list=false⛔ Paper 26.3 liefert mit white-list=true aus. Mit aktivierter Whitelist wird sofort geworfen, wer hineinkommt — und der Bot erscheint gar nicht erst.view-distance=6Wie viele Chunks der Server sendet. So weit sieht der Bot die Welt.max-players=20Der auf dem Testserver gemessene Wert.
⛔ Die Whitelist ist Fehler Nummer eins
Paper 26.3 startet mit white-list=true. Mit aktivierter Whitelist wirft der Server jeden mit „You are not whitelisted on this server!“ hinaus — und der Bot erreicht das Panel nicht einmal. Setze ihn auf false.
[
{
"uuid": "6dab31a9-d6e5-37ee-bfd9-83901093485f",
"name": "DuGueDark",
"level": 4,
"bypassesPlayerLimit": false
},
{
"uuid": "0ca09961-3774-3c9d-b7a6-af349b4a773f",
"name": "DzBot",
"level": 4,
"bypassesPlayerLimit": false
}
]Mit online-mode=false berechnet der Server die UUID jedes Spielers aus dem Namen: das md5 von „OfflinePlayer:<Name>“, Version 3. Diese UUID ist NICHT die Premium-UUID des Microsoft-Kontos. Auf diesem Server gemessen: DzBot → 0ca09961-3774-3c9d-b7a6-af349b4a773f und DuGueDark → 6dab31a9-d6e5-37ee-bfd9-83901093485f.
Die Falle: Die Konsole antwortet „Nothing changed. The player is already an operator“ und der Spieler ist TROTZDEM kein Operator. Der Grund: In der Datei stand die Premium-UUID, der Server sucht aber die Offline-UUID. Mit dem richtigen ops.json hört die Konsole auf zu meckern.
Die Abkürzung, die immer geht: Tippe /op DzBot in die Serverkonsole. Die ermittelt die UUID selbst und schreibt die richtige in die ops.json.
Die Plugins, die auf 26.3 funktionieren
Alle hier wurden von Paper 26.3 Build 211 geladen und haben sich gut benommen. GrimAC ist das nützlichste: Es ist die „Grille“, die misst, ob der Bot den Block MIT Sichtlinie gesetzt hat.
- Geyser-Spigot2.12.0-b1268
Lässt den Bedrock-Client auf den Java-Server (und übersetzt das Protokoll).
download.geysermc.org - Floodgate-Spigot2.2.5 (build 141)
Die Bedrock-Identität: Sie signiert den Namen des Spielers, der über Geyser hineinkommt.
download.geysermc.org - ViaVersion5.12.2-SNAPSHOT
Alter Java-Client auf neuem Server (wer mit 1.20 oder 1.21 hineinkommt).
modrinth.com - ViaBackwards5.12.2-SNAPSHOT
Alter Server für neuen Client — der Gegenweg zu ViaVersion.
modrinth.com - GrimAC2.3.75-8baa16f
Anticheat. Es sagt dir namentlich, wenn der Bot etwas getan hat, das er nicht tun sollte.
modrinth.com
GrimAC ist dein Messgerät
Es meldet FarPlace (der Bot hat den Block aus der Ferne gesetzt) und RotationPlace (mit falscher Rotation gesetzt). Wenn der Bot einen Block nicht setzen kann, nennt GrimAC den genauen Grund — deshalb bleibt es auf dem Testserver. Und das Wichtigste: GrimAC meldet auch den BOT SELBST, mit dem Namen der Regel. Die Flags unten sind das gemessene Verhalten des Bots, kein Fehlalarm des Anticheats. GrimAC warnt im Log außerdem, dass ViaBackwards auf einem 1.21.2+-Server „currently unsupported“ ist.
- 121×PostPakete außerhalb der erwarteten Movement-Tick-Reihenfolge
- 67×Simulationder Bot bewegte sich anders als die Simulation vorhersagte
- 39×RotationPlacesetzte einen Block, ohne ihn anzusehen
- 20×FarPlacesetzte einen Block aus zu großer Entfernung
- 18×GroundSpoofbehauptete, am Boden zu sein, während die Simulation das Gegenteil sagt
- 9×AntiKBnahm den erwarteten Knockback nicht an (der Bot hebt den Stoß auf)
- 3×AimModulo360sendete einen großen Yaw-Sprung auf einmal
277 Verstöße für DzBot und 0 für den menschlichen Spieler (gemessen in der GrimAC-Datenbank, plugins/GrimAC/data/history.v1.db). Damit der Bot nicht markiert wird, muss er tun, was ein legitimer Client tut: die richtige Reichweite, die richtige Fläche, am Boden, ohne unnötige Entity-Aktion und mit menschlichem Takt.
⛔ Nimm kein Rucksack-Plugin, das ein Resource Pack mitschickt
BackpackPlus 3.2.0 wurde vom Testserver entfernt, weil es ein Resource Pack mitschickt (pack/resourcepack.zip) und der Client des Bots beim Neuladen der Ressourcen scheiterte. Willst du einen Rucksack, nimm einen ohne Pack — oder nimm in Kauf, dass der Bot ihn beim Neuladen verlieren kann.
Geyser: die DREI Schlüssel, die Offline-Bedrock braucht
Geyser macht aus dem Bedrock-Client Java. Ohne die ersten ZWEI Schlüssel unten wird der Bedrock-Bot mit „§rFaça login no Xbox para ingressar neste servidor“ abgewiesen — und es ist kein Port-, kein Versions- und kein Firewall-Problem. Der dritte (NetherNet) ist der neue Bedrock-Weg und ändert nicht, wie der Bot hineinkommt: er ändert, was der Router durchlassen muss.
Die Datei ist plugins/Geyser-Spigot/config.yml.
1) auth-type: floodgate
Abschnitt java: — der Standard ist online
java:
auth-type: floodgateSagt Geyser, dass die Bedrock-Identität vom Floodgate kommt und nicht von einer Microsoft-Anmeldung.
2) validate-bedrock-login: false
Abschnitt advanced: → bedrock: — der Standard ist true
advanced:
bedrock:
validate-bedrock-login: falseDas ist der Schlüssel, der die selbst signierte Bedrock-Anmeldung ablehnt. Der Offline-Bot signiert seinen eigenen Namen, also muss er aus sein.
3) NetherNet (der neue Bedrock-Weg)
Abschnitt bedrock: → signaling: — der Standard ist transport: raknet
bedrock:
port: 19132
webrtc-port: 19133
transport: both
signaling:
mode: builtinGeyser warnte, dass NetherNet nicht aktiviert war und dass Bedrock ab dem 27. Oktober ihn benutzt. Mit diesen Schlüsseln verschwindet die Warnung, und im Log steht: „Built-in signaling started on http://0.0.0.0:19132, with NetherNet on UDP port 19133“. ⚠️ Es fehlt noch die Portweiterleitung im Router: UDP 19133 und TCP 19132. Hier gemessen: Die STUN-Erkennung hat den Host auf den öffentlichen Port 32563 gemappt, also nicht auf 19133 — ein Zeichen, dass das NAT des Anbieters den Port wechselt. Wenn deines denselben Port nicht durchreicht, trage deine öffentliche IP bei signaling: → advertise-addresses: ein.
Das Panel nutzt für Bedrock weiterhin Geysers UDP-Port 19132: NetherNet ändert nicht das Feld im Panel, sondern das, was der Router durchlassen muss.
⚠️ Das öffnet eine Lücke — lies es, bevor du es anwendest
Mit abgeschaltetem validate-bedrock-login kann JEDER mit dem Namen eines anderen hineinkommen. Geyser schreibt es selbst in die Datei: „Disabling Bedrock authentication for other use-cases is NOT SUPPORTED, as it allows anyone to spoof usernames, and is therefore a security risk.“ Gehört der Server nur dir und dem Bot, ist das in Ordnung. Ist der Server öffentlich und hat XP, Ranking oder PvP, dann lass die Bedrock-Anmeldung an (true) und nutze für den Bot ein echtes Xbox-Konto — dann ist der Bot nicht mehr offline (und bekommt eine XUID).
Die beiden Schlüssel wirken erst nach einem Neustart des Servers.
Die Serverkonsole (über FIFO)
Hast du den Server mit & am Zeilenende gestartet, verschwindet die Konsole, sobald das Terminal schließt. Der Weg zu einer echten Konsole unter Linux ist ein FIFO: eine Datei, die das Java als Eingabe liest und in die du mit echo schreibst.
cd /home/duguedark/Servers/dzbot-26.3
JAVA=/usr/lib/jvm/java-25-openjdk/bin/java
[ -p consola ] || mkfifo consola
setsid "$JAVA" -Xms512M -Xmx1200M -jar paper-26.3-40.jar --nogui < consola > saida.log 2>&1 &
sleep 100000 > consola &⛔ Ohne den lebenden Schreiber hängt sich das Java auf
Die letzte Zeile (sleep 100000 > consola &) ist keine Dekoration: Sie ist der Schreiber, der das FIFO offen hält. Ohne sie hängt sich das Java beim Öffnen des FIFO auf — der Server startet nicht, öffnet den Port nicht und schreibt NICHTS ins Log. Das klassische „funktioniert nicht und sagt nicht warum“.
Einen Befehl senden
echo "op DzBot" > consolaWas die Konsole schreibt, landet in saida.log. Und über die Konsole gibst du dem Bot /tp und /give — niemals über den Chat (siehe die Fallstricke).
Die genauen Felder im Panel
Wenn der Server steht, kommt der Bot über das DzBot-Panel hinein. Das sind die gemessenen Werte:
- HostJava
127.0.0.1Bedrock127.0.0.1 - PortJava
25565Bedrock19132 - VersionJava
26.3Bedrock1.26.51 - BenutzernameJava
DzBotBedrockDzBot - AuthJava
offlineBedrockoffline
Der Bedrock-Port ist Geysers UDP-Port (standardmäßig 19132), nicht der Java-Port. Wenn du den Port in Geysers config.yml geändert hast, dann ist dieser hier richtig.
Version 26.3 ist die, die das Panel für Java anbietet, und 1.26.51 für Bedrock. Ist dein Bedrock-Build ein anderer, nimm die Entsprechung.
auth: offline ist bei Bedrock das, was dem Bot eine Identität ohne Xbox-Konto gibt. Der Preis: keine XUID — der Bot ist nicht über Xbox Operator, nur über ops.json (Stufe 4, wie die anderen).
DzBot[/127.0.0.1:52214] logged in with entity id 103 at ([minecraft:overworld]7.45, -60.0, 0.39)Nach dem Start zeigt das Serverlog den Beweis: DzBot[/127.0.0.1:52214] logged in with entity id 103 — an dieser Zeile siehst du, dass der Bot hineingekommen ist.
Gemessene Fallstricke
Die, die auf diesem Testserver wirklich Zeit gekostet haben.
Die Whitelist wirft den Bot raus
Paper 26.3 liefert mit white-list=true aus. Wer hineinkommt, wird mit „You are not whitelisted on this server!“ geworfen — und der Bot erscheint nie im Panel.
Ein FIFO ohne Schreiber hängt das Java auf
Ohne das sleep 100000 > consola & hängt sich der Prozess beim Öffnen des FIFO auf: kein Start, kein Port, kein Log.
Papers Spam-Filter wirft den Bot raus
Jede Chat-Nachricht zählt. Drei Chat-Befehle = ein Kick. Um den Bot zu bewegen, nimm /tp und /give aus der Konsole, niemals aus dem Chat.
Offline-UUID ist nicht die Premium-UUID
Im Offline-Modus ist die UUID das md5 von „OfflinePlayer:'<Name>“. Steht in der ops.json die UUID des Microsoft-Kontos, meldet die Konsole „Nothing changed…“ und der Spieler bleibt ohne Operator.
Geyser ohne die beiden Schlüssel weist den Bedrock-Client ab
Das Symptom ist „Faça login no Xbox para ingressar neste servidor“ — und das sieht nach einem Kontoproblem aus, ist aber Geyser-Konfiguration.
Java 21 startet 26.3 nicht
Der Prozess stirbt mit „Minecraft 26.1 and newer requires running the server with Java 25 or above“.
Was noch NICHT funktioniert
Dieser Abschnitt ist bewusst das Gegenteil vom Rest der Anleitung. Er ist die Liste dessen, was gemessen wurde und NICHT funktioniert hat — und es ist dieselbe Liste, die der DzBot-Inhaber auf dem Bildschirm sehen wollte.
Die Portweiterleitung für NetherNet ist noch nicht eingerichtet
NetherNet ist in der Konfiguration bereits aktiviert (transport: both, webrtc-port: 19133, signaling: → mode: builtin), und Geysers Warnung ist verschwunden. Es fehlt das Öffnen der Ports am Router: UDP 19133 und TCP 19132. Auf dieser Maschine gemessen: Die STUN-Erkennung hat den Host auf den öffentlichen Port 32563 gemappt — nicht auf 19133 —, also wechselt das NAT des Anbieters den Port, und ein Bedrock-Client von außerhalb des Netzes kommt über den neuen Weg noch nicht hinein.
Jeder kann einen Namen fälschen (im Offline-Modus)
Das ist der Preis dafür, validate-bedrock-login abzuschalten, damit der Offline-Bot hineinkommt. Auf einem öffentlichen Server ist das ein echtes Loch, und Geyser warnt selbst in seiner Konfigurationsdatei davor.
Der Bedrock-Bot hat keine XUID
Ohne Xbox-Konto hat der Bot keine XUID: Er ist nicht über Xbox Operator und steht in keiner Berechtigungsliste des Kontos. Der Operator kommt aus der ops.json, und ausschließlich daraus.
Das Anticheat markiert den Bot (277-mal)
GrimAC hat 277 Verstöße für DzBot verzeichnet — 121 Post, 67 Simulation, 39 RotationPlace, 20 FarPlace, 18 GroundSpoof, 9 AntiKB und 3 AimModulo360 — gegenüber 0 für den menschlichen Spieler. Es ist das echte Verhalten des Bots: die Reihenfolge der Movement-Pakete, die Bewegung selbst, die Rotation beim Setzen, die Reichweite, die Behauptung, am Boden zu sein, der Knockback und der Yaw-Sprung. Der Bot kommt auf den Server, ist aber noch kein Client, den das Anticheat für legitim hält. Der Weg raus ist, zu tun, was ein legitimer Client tut: die richtige Reichweite, die richtige Fläche, am Boden, ohne unnötige Entity-Aktion und mit menschlichem Takt.
ViaBackwards auf einem 1.21.2+-Server ist „currently unsupported“
Die Warnung kommt von GrimAC: „This setup is currently unsupported and you will experience issues with older clients using vehicles.“ Das betrifft nicht den Bot — es betrifft Fahrzeuge mit alten Clients.
Nichts hier ist eine Update-Zusage: Es ist das Bild vom 22.10.2026. Was sich ändert, wird aufgeschrieben — und das Datum ändert sich mit.
Und jetzt: wo es im Panel weitergeht
Die Anleitung endet hier, die Arbeit nicht. Das sind die Bildschirme, die es weiterführen.
- Bot anlegen und startenDer Bot-Bildschirm, auf dem Host, Port, Version und Benutzername aus Schritt 6 eingetragen werden.
- Plugin-Tab des BotsDort werden die Plugins des Servers gelesen und geschaltet — Schritt 3 dieser Anleitung erscheint hier von der anderen Seite.
- API-DokumentationUm den Bot per Skript und Zugriffsschlüssel zu steuern, statt zu klicken.
- Netzwerk-AnleitungRakNet, NetherNet, Ports und die Geyser-/Floodgate-Diagnose.
- Mods-AnleitungWenn der Server Forge oder Fabric ist: was der Bot kann und was nicht.
- DzBot RunnerDen Bot auf deinem eigenen Rechner laufen lassen, statt auf dem Plattform-Server.
- Minecraft-SchaufensterDer Demo-Server von DzBot, um den Bot laufen zu sehen, bevor du deinen anfasst.