Como deixar o bot do DzBot entrar no seu servidor — e o Bedrock entrar no seu Java
Passo a passo com os comandos prontos para copiar. Tudo aqui foi medido num servidor Paper 26.3 de verdade, com o bot entrando pelo painel e o Geyser traduzindo o cliente Bedrock.
Leia antes de mexer em qualquer configuração
Este guia é o que FUNCIONA, medido — não é a lista do que o DzBot promete. O que ainda não funciona está escrito na seção “O que ainda NÃO funciona”, e está escrito porque foi medido que não funciona. Quando algo divergir do seu servidor, o erro que o servidor devolveu está escrito junto do passo.
O QUE AINDA NÃO FUNCIONA (resumido)
A lista completa, com o motivo de cada uma, está no fim desta página:
- O NetherNet já está ligado no Geyser, mas falta abrir as portas no roteador (UDP 19133 e TCP 19132).
- Com o login Bedrock desligado, qualquer pessoa pode entrar usando o nome de outra.
- O bot Bedrock não tem XUID: ele não é operador pelo Xbox, só pelo ops.json.
- O GrimAC registrou 277 violações do bot: ele entra no servidor, mas o anticheat ainda não o aceita como cliente legítimo.
- O GrimAC avisa que o ViaBackwards em servidor 1.21.2+ é “currently unsupported” (afeta veículo de cliente antigo).
O caminho, passo a passo
Java 25 — sem ele o servidor nem abre a porta
A partir do 26.1, o Paper exige Java 25 ou mais novo. Com o Java 21 o processo morre antes de abrir a porta, e a mensagem sai no log — não na tela.
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)Nesta máquina o Java 25 está em /usr/lib/jvm/java-25-openjdk/bin/java — e é esse caminho que entra no comando de subir o servidor (passo 5).
Minecraft 26.1 and newer requires running the server with Java 25 or aboveNo Ubuntu/Debian: sudo apt install openjdk-25-jdk · O Paper usado na medição foi o build 211 — é o que o servidor anuncia: 26.3-211-main@2d602d6. O arquivo do servidor chama-se paper-26.3-40.jar: o nome vem de uma build antiga e ficou porque o script que sobe o servidor aponta para ele.
eula.txt, server.properties e ops.json
Três arquivos. O primeiro é o aceite da licença; o segundo diz como o servidor se comporta; o terceiro é quem dá OP no modo offline.
eula=trueSem isso o servidor não sobe: ele para no primeiro boot pedindo o aceite e não abre a porta.
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=25565A porta TCP do Java. É a mesma que você escreve no painel.online-mode=falseSem conta Microsoft. É o que deixa o bot entrar com um nome e sem senha — e é o que faz o UUID ser o “offline” (veja o ops.json).level-type=minecraft\:flatMundo plano. O “\:” é a escape do próprio Java: sem ele o servidor não lê a linha.difficulty=peacefulO valor medido no servidor de teste. Não muda a entrada do bot — muda o jogo (sem mobs, sem fome).gamemode=survivalIdem: o valor medido. O bot entra em survival.spawn-protection=0Sem proteção de spawn: o bot pode cavar e construir em qualquer lugar, inclusive no ponto de spawn.white-list=false⛔ O Paper 26.3 vem com white-list=true. Com a whitelist ligada, quem entra é expulso na hora — e o bot nunca chega a aparecer.view-distance=6Quantos chunks o servidor manda. É o raio de mundo que o bot enxerga.max-players=20O valor medido no servidor de teste.
⛔ A whitelist é o erro número 1
O Paper 26.3 nasce com white-list=true. Com a whitelist ligada o servidor expulsa quem entra com “You are not whitelisted on this server!” — e o bot não chega nem a aparecer no painel. Ponha 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
}
]Com online-mode=false o servidor calcula o UUID de cada jogador pelo nome: é o md5 de “OfflinePlayer:<nome>”, versão 3. Esse UUID NÃO é o UUID premium da conta Microsoft. Medido neste servidor: DzBot → 0ca09961-3774-3c9d-b7a6-af349b4a773f e DuGueDark → 6dab31a9-d6e5-37ee-bfd9-83901093485f.
A armadilha: o console responde “Nothing changed. The player is already an operator” e o jogador continua SEM ser operador. É porque o UUID gravado era o da conta premium, e o servidor procura o offline. Com o ops.json certo, o console para de reclamar.
O atalho que sempre funciona: digite /op DzBot no console do servidor. Ele resolve o UUID sozinho e grava o certo no ops.json.
Os plugins que funcionam no 26.3
Todos estes foram carregados pelo Paper 26.3 build 211 e responderam bem. O GrimAC é o mais útil deles: ele é o “grilo” que mede se o bot colocou o bloco COM LINHA DE VISÃO.
- Geyser-Spigot2.12.0-b1268
Deixa o cliente Bedrock entrar no servidor Java (e traduz o protocolo).
download.geysermc.org - Floodgate-Spigot2.2.5 (build 141)
A identidade Bedrock: é ele que assina o nome do jogador que entra pelo Geyser.
download.geysermc.org - ViaVersion5.12.2-SNAPSHOT
Cliente Java antigo em servidor novo (quem entra com 1.20 ou 1.21).
modrinth.com - ViaBackwards5.12.2-SNAPSHOT
Servidor antigo para cliente novo — o caminho inverso do ViaVersion.
modrinth.com - GrimAC2.3.75-8baa16f
Anticheat. Diz, com o nome do motivo, quando o bot fez algo que não devia.
modrinth.com
O GrimAC é o seu instrumento de medida
Ele acusa FarPlace (o bot colocou o bloco de longe) e RotationPlace (colocou com a rotação errada). Se o bot falhar em colocar um bloco, o GrimAC diz o motivo exato — e é por isso que ele fica no servidor de teste. E o mais importante: o GrimAC também acusa o PRÓPRIO BOT, com o nome da regra. As bandeiras abaixo são o comportamento do bot medido, não falso positivo do anticheat. O GrimAC também avisa, no log, que o ViaBackwards em servidor 1.21.2+ é “currently unsupported”.
- 121×Postpacotes enviados fora da ordem do tick de movimento
- 67×Simulationo bot se moveu diferente do que a simulação previu
- 39×RotationPlacecolocou bloco sem estar olhando para ele
- 20×FarPlacecolocou bloco de longe demais
- 18×GroundSpoofdeclarou estar no chão quando a simulação diz que não
- 9×AntiKBnão tomou o knockback esperado (o bot se cura do empurrão)
- 3×AimModulo360mandou um giro grande de yaw de uma vez
277 violações do DzBot e 0 do jogador humano (medido no banco do GrimAC, plugins/GrimAC/data/history.v1.db). A forma de o bot não ser marcado é fazer o que um cliente legítimo faz: o alcance certo, a face certa, no chão, sem ação de entidade espúria e com cadência humana.
⛔ Não use plugin de mochila que mande resource pack
O BackpackPlus 3.2.0 foi removido do servidor de teste porque ele manda um resource pack (pack/resourcepack.zip) e o cliente do bot falhava ao recarregar os recursos. Se você quiser uma mochila, escolha uma que não mande pack — ou aceite que o bot pode perder a mochila ao recarregar.
Geyser: as TRÊS chaves que o Bedrock offline exige
O Geyser converte o cliente Bedrock em Java. Sem as DUAS primeiras chaves abaixo, o bot Bedrock é recusado com “§rFaça login no Xbox para ingressar neste servidor” — e não é problema de porta, de versão nem de firewall. A terceira (o NetherNet) é o caminho novo do Bedrock e não muda a entrada do bot: ela muda o que o roteador tem que deixar passar.
O arquivo é plugins/Geyser-Spigot/config.yml.
1) auth-type: floodgate
Seção java: — o padrão é online
java:
auth-type: floodgateDiz ao Geyser que a identidade Bedrock vem do Floodgate, e não de um login da Microsoft.
2) validate-bedrock-login: false
Seção advanced: → bedrock: — o padrão é true
advanced:
bedrock:
validate-bedrock-login: falseÉ a chave que recusa o login Bedrock autoassinado. O bot offline assina o próprio nome, então precisa estar desligada.
3) O NetherNet (o caminho novo do Bedrock)
Seção bedrock: → signaling: — o padrão é transport: raknet
bedrock:
port: 19132
webrtc-port: 19133
transport: both
signaling:
mode: builtinO Geyser avisou que o NetherNet não estava habilitado e que, a partir de 27 de outubro, o Bedrock passa a usá-lo. Com estas chaves o aviso some e o log passa a dizer: “Built-in signaling started on http://0.0.0.0:19132, with NetherNet on UDP port 19133”. ⚠️ Ainda falta o encaminhamento de porta no roteador: UDP 19133 e TCP 19132. Medido aqui: a descoberta STUN mapeou o host para a porta pública 32563, que é diferente da 19133 — sinal de que o NAT do provedor troca a porta. Se o seu não repassar a mesma porta, ponha o seu IP público em signaling: → advertise-addresses:.
O painel continua usando a porta 19132 (UDP) do Geyser para o Bedrock: o NetherNet não muda o campo do painel, ele muda o que o roteador tem que deixar passar.
⚠️ Isto abre uma brecha — leia antes de aplicar
Com o validate-bedrock-login desligado, QUALQUER pessoa pode entrar usando o nome de qualquer outra. O próprio Geyser avisa no arquivo: “Disabling Bedrock authentication for other use-cases is NOT SUPPORTED, as it allows anyone to spoof usernames, and is therefore a security risk.” Se o servidor é só seu e do bot, tudo bem. Se o servidor é público e tem XP, ranking ou PvP, o jeito certo é deixar o login Bedrock ligado (true) e usar uma conta Xbox de verdade para o bot — aí o bot deixa de ser offline (e ganha XUID).
As duas chaves só valem depois de reiniciar o servidor.
O console do servidor (por FIFO)
Se você subiu o servidor com & no fim da linha, o console some quando o terminal fecha. O jeito de ter console de verdade no Linux é um FIFO: um arquivo que o java lê como entrada e que você escreve com echo.
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 &⛔ Sem o escritor vivo, o java TRAVA
A última linha (sleep 100000 > consola &) não é enfeite: ela é o escritor que segura o FIFO aberto. Sem ela o java trava no open do FIFO — o servidor não sobe, não abre a porta e não escreve NADA no log. É o “não funciona e não diz por quê” clássico.
Mandando um comando
echo "op DzBot" > consolaO que o console escreve volta no saida.log. E é pelo console que se dá /tp e /give no bot — nunca pelo chat (veja as armadilhas).
Os campos exatos no painel
Com o servidor de pé, o bot entra pelo painel do DzBot. Estes são os valores medidos:
- HostJava
127.0.0.1Bedrock127.0.0.1 - PortaJava
25565Bedrock19132 - VersãoJava
26.3Bedrock1.26.51 - UsuárioJava
DzBotBedrockDzBot - AuthJava
offlineBedrockoffline
A porta do Bedrock é a UDP do Geyser (19132 por padrão), não a do Java. Se você mudou a porta no config.yml do Geyser, é essa que vai aqui.
A versão 26.3 é a que o painel oferece para Java, e a 1.26.51 para Bedrock. Se a sua build do Bedrock for outra, use a equivalente.
O auth: offline no Bedrock é o que dá identidade ao bot sem conta Xbox. O preço disso: sem XUID — o bot não é operador pelo Xbox, só pelo ops.json (nível 4, como o resto).
DzBot[/127.0.0.1:52214] logged in with entity id 103 at ([minecraft:overworld]7.45, -60.0, 0.39)Depois de ligar, o log do servidor mostra a prova: DzBot[/127.0.0.1:52214] logged in with entity id 103 — é essa linha que diz que o bot entrou.
Armadilhas medidas
As que custaram tempo de verdade neste servidor de teste.
A whitelist expulsa o bot
O Paper 26.3 vem com white-list=true. Quem entra é expulso com “You are not whitelisted on this server!” — e o bot nunca aparece no painel.
O FIFO sem escritor trava o java
Sem o sleep 100000 > consola &, o processo trava no open do FIFO: não sobe, não abre a porta e não loga nada.
O filtro de spam do Paper expulsa o bot
Cada mensagem de chat conta. Três comandos de chat = expulsão. Para mover o bot use /tp e /give pelo console, nunca pelo chat.
UUID offline não é UUID premium
No modo offline o UUID é o md5 de “OfflinePlayer:'<nome>'”. Se o ops.json tem o UUID da conta Microsoft, o console diz “Nothing changed…” e o jogador continua sem ser operador.
Geyser sem as duas chaves recusa o Bedrock
O sintoma é “Faça login no Xbox para ingressar neste servidor” — e parece problema de conta, quando é configuração do Geyser.
Java 21 não sobe o 26.3
O processo morre com “Minecraft 26.1 and newer requires running the server with Java 25 or above”.
O que ainda NÃO funciona
Esta seção é o contrário do resto do guia, de propósito. Ela é a lista do que foi medido e NÃO deu certo — e é a mesma lista que o dono do DzBot pediu para ficar escrita na tela.
O encaminhamento de porta do NetherNet ainda não está feito
O NetherNet já está ligado na configuração (transport: both, webrtc-port: 19133, signaling: → mode: builtin) e o aviso do Geyser sumiu. O que falta é abrir as portas no roteador: UDP 19133 e TCP 19132. Medido nesta máquina: a descoberta STUN mapeou o host para a porta pública 32563 — diferente da 19133 —, então o NAT do provedor troca a porta e um cliente Bedrock de fora da rede ainda não chega pelo caminho novo.
Qualquer um pode forjar o nome (no modo offline)
É o preço de desligar o validate-bedrock-login para o bot offline funcionar. Em servidor público isso é uma brecha real, e o Geyser avisa no próprio arquivo de configuração.
O bot Bedrock não tem XUID
Sem conta Xbox, o bot não tem XUID: ele não é operador pelo Xbox nem entra em lista de permissões da conta. O operador vem do ops.json, e só isso.
O anticheat marca o bot (277 vezes)
O GrimAC registrou 277 violações do DzBot — 121 Post, 67 Simulation, 39 RotationPlace, 20 FarPlace, 18 GroundSpoof, 9 AntiKB e 3 AimModulo360 — contra 0 do jogador humano. São o comportamento real do bot: a ordem dos pacotes de movimento, o movimento em si, a rotação ao colocar, o alcance, a afirmação de que está no chão, o knockback e o giro de yaw. O bot entra no servidor, mas ainda não é um cliente que o anticheat considere legítimo. O caminho é fazer o que um cliente legítimo faz: o alcance certo, a face certa, no chão, sem ação de entidade espúria e com cadência humana.
ViaBackwards em servidor 1.21.2+ é “currently unsupported”
O aviso é do GrimAC: “This setup is currently unsupported and you will experience issues with older clients using vehicles.” Não afeta o bot — afeta veículo de cliente antigo.
Nada aqui é promessa de atualização: é o retrato de 22/10/2026. O que mudar, muda escrito — e a data muda junto.
E agora: onde mexer no painel
O guia termina aqui, mas o trabalho não. Estas são as telas que continuam o caminho.
- Criar e ligar o botA tela do bot, onde o host, a porta, a versão e o usuário do passo 6 são escritos.
- Aba de plugins do botOnde os plugins do servidor são lidos e ligados — o passo 3 deste guia aparece aqui do outro lado.
- Documentação da APIPara pilotar o bot por script, com chave de acesso, em vez do clique.
- Guia de redeRakNet, NetherNet, portas e o diagnóstico de Geyser e Floodgate.
- Guia de modsQuando o servidor é Forge ou Fabric: o que o bot consegue e o que não consegue.
- DzBot RunnerRodar o bot numa máquina sua, em vez do servidor da plataforma.
- Vitrine do MinecraftO servidor de demonstração do DzBot, para ver o bot funcionando antes de mexer no seu.