Quando um plugin ou um mod encontra um erro de programação durante a execução, o Java escreve uma mensagem de erro com stacktrace no log. O stacktrace é a lista de linhas „at“ por baixo da linha de erro. Mostra que parte do programa estava a ser executada e, normalmente, revela o plugin ou o mod responsável. A maioria destes erros não deixa o servidor inoperacional, mas uma funcionalidade deixa de funcionar e, se os erros se repetirem, a consola enche-se.
Cada secção abaixo trata de uma mensagem: o aspeto que tem, o que está por trás e o que podes fazer. Encontras a mensagem completa na Consola ou em Ficheiros, em logs/latest.log. Lê também as linhas imediatamente antes e depois. Antes de alterares ficheiros de configuração ou do mundo, ou de substituíres plugins, cria uma cópia de segurança em Cópias de segurança. O melhor é substituíres os ficheiros dos plugins com o servidor parado.
NullPointerException: o plugin ou o mod acede a um valor em falta
Este é o aspeto da mensagem:
java.lang.NullPointerException: Cannot invoke "org.bukkit.inventory.meta.ItemMeta.getDisplayName()" because the return value of "org.bukkit.inventory.ItemStack.getItemMeta()" is null
at <Plugin>.jar//<Pacote>.<Classe>.<Método>(<Classe>.java:<Linha>)
O que está por trás disto: Um plugin ou um mod tentou trabalhar com um objeto que não existe neste ponto. O Java chama a este valor vazio "null". Depois de "Cannot invoke" surge o método chamado e depois de "because" o valor em falta, no exemplo os dados adicionais de um item. As linhas "at" que se seguem chamam-se stacktrace: a cadeia de chamadas até ao erro. A primeira indica o causador. O servidor continua a funcionar, apenas a ação afetada é interrompida.
Como resolver:
- Abre a mensagem completa na Consola ou em
logs/latest.loge lê a primeira linha "at". - No caso dos plugins, aparece aí um nome de ficheiro como
<Plugin>.jar; no caso dos mods, o ficheiro do mod entre parênteses retos. Se aparecerem apenas partes do servidor comoorg.bukkitounet.minecraft, continua a ler até ao primeiro nome de plugin ou mod. - Atualiza esse plugin em Plugins ou o mod em Mods. Os ficheiros que carregaste tu próprio substituis em Ficheiros, na pasta
plugins/oumods/. - Se o erro persistir após a atualização, comunica-o ao autor com a mensagem completa e a ação em que ocorre.
Bom saber: Se, em servidores com mods, a linha contiver pl:mixin:APP:<mod>.mixins.json, esse mod alterou o ponto em causa através de Mixin (intervenção em partes do jogo alheias) e é um bom segundo suspeito.
"Could not pass event": o plugin falha durante um evento do jogo
Este é o aspeto da mensagem:
Could not pass event PlayerInteractEvent to <Plugin> v<Versão>
java.lang.NoSuchMethodError: 'java.util.Map org.bukkit.inventory.PlayerInventory.addItem(org.bukkit.inventory.ItemStack[])'
at <Plugin>.jar//<Pacote>.<Classe>.<Método>(<Classe>.java:<Linha>)
O que está por trás disto: Os plugins reagem a eventos, como uma entrada no servidor, um clique no inventário ou dano. Se um plugin lançou uma exceção durante um evento, ou seja, um erro de Java que interrompe o processo, o servidor apanha-a e escreve esta mensagem. Depois de "to" surgem o plugin e a versão, antes o evento. O decisivo é a linha seguinte: "NoSuchMethodError" ou "NoSuchFieldError" significa que o plugin foi criado para outra versão do servidor e procura uma função que não existe assim. Outros tipos de erro indicam normalmente um erro no próprio plugin. O servidor continua a funcionar, mas a função do plugin falha neste evento.
Como resolver:
- Na Consola, lê o nome e a versão do plugin depois de "to" e a linha de erro logo abaixo.
- Verifica em Versão qual a versão do servidor em execução e procura na página do plugin uma edição que suporte exatamente essa versão.
- Instala a nova edição em Plugins e reinicia o servidor.
- Se o erro persistir, comunica-o ao autor do plugin com a linha "Could not pass event …" e a linha de erro abaixo.
Para mais detalhes sobre "NoSuchMethodError" e "NoSuchFieldError": O plugin não é compatível com a versão do servidor.
"Task … generated an exception": a tarefa de um plugin falha em segundo plano
Este é o aspeto da mensagem:
[<Plugin>] Task #46 for <Plugin> v<Versão> generated an exception
java.lang.IllegalArgumentException: missing required data class org.bukkit.Color
O que está por trás disto: Os plugins agendam tarefas que correm regularmente, por exemplo mostrar partículas, atualizar hologramas ou guardar dados. Uma dessas tarefas foi interrompida com um erro. Se isto acontecer continuamente, muitas vezes a cada segundo, o plugin normalmente não é compatível com a versão do servidor instalada. É típico depois de uma atualização do servidor ou do plugin. O servidor continua a funcionar, mas a função do plugin falha em parte e a consola enche-se de mensagens.
Como resolver:
- Lê o nome do plugin depois de "for" e a linha de erro abaixo.
- Verifica em Plugins se existe uma edição mais recente deste plugin para a tua versão do servidor, instala-a e reinicia.
- Se não existir nenhuma edição adequada, desativa o plugin temporariamente. Para isso, move o ficheiro .jar em Ficheiros da pasta
plugins/para uma pasta própria e reinicia. Caso contrário, o erro constante abranda o servidor. - Depois de reiniciar, verifica na Consola se a mensagem deixou de aparecer.
Bom saber: Se debaixo da mensagem aparecer "NoSuchMethodError" ou "NoSuchFieldError", é quase sempre uma questão de versão. Outros tipos de erro comunica-os ao autor se também a edição mais recente os mostrar.
O comando ou a tarefa de um plugin termina com um erro
Este é o aspeto da mensagem:
[Essentials] Command <Comando> failed:
[<Plugin>] Plugin <Plugin> v<Versão> generated an exception while executing task <Número>
Error executing task on Server
O que está por trás disto: Um plugin terminou com uma exceção durante um comando ou uma tarefa agendada. As três linhas acima são formas típicas desta mensagem. O servidor continua a funcionar, mas a função afetada do plugin não. A causa real está nas linhas abaixo, no caso de erros encadeados na linha "Caused by". Se aí aparecer "Cannot perform command async", um plugin acionou um comando a partir de um thread em segundo plano. Um thread é uma linha de trabalho paralela; os comandos, porém, só podem ser executados pelo thread principal do servidor. Isto é um erro do plugin.
Como resolver:
- Procura debaixo da mensagem a linha "Caused by" ou a primeira linha com "Exception" ou "Error".
- Identifica o plugin: surge na própria mensagem ou nas linhas "at" como
<Plugin>.jar. - Atualiza o plugin em Plugins para uma edição adequada à tua versão do servidor e reinicia.
- Experimenta o comando novamente. Se o erro persistir, comunica-o ao autor com o comando, a hora e a mensagem completa.
Bom saber: "NoSuchFieldError" com o nome de uma partícula ou de um atributo significa que o plugin usa um nome que a tua versão do servidor já não conhece. Nesse caso, só ajuda uma edição mais recente do plugin.
ClassCastException: dois mods ou plugins não são compatíveis entre si
Este é o aspeto da mensagem:
java.lang.ClassCastException: class <PacoteA>.<ClasseA> cannot be cast to class <PacoteB>.<ClasseB>
O que está por trás disto: O Java trabalha com tipos de dados fixos. Aqui, um mod ou plugin esperava um objeto de um determinado tipo, mas recebeu de outro componente um tipo diferente. Os nomes dos pacotes antes dos nomes das classes, como net.<author>.<mod>, indicam normalmente quais são os dois mods ou plugins envolvidos. É típico quando um mod foi atualizado e um mod dependente não. Muitas vezes só falha uma função, por exemplo o saque de baús ou um clique no inventário.
Como resolver:
- Lê os dois nomes de classe na mensagem e associa-os aos mods ou plugins através dos nomes dos pacotes.
- Verifica qual dos dois foi atualizado por último.
- Coloca ambos em versões compatíveis entre si: atualiza os dois ou repõe os dois no estado anterior. As páginas dos projetos indicam o que é compatível.
- Se estiver a correr um Modpack, é melhor atualizar o modpack inteiro em vez de mods individuais.
- Reinicia e verifica se a mensagem volta a surgir na mesma ação.
Mais sobre conflitos de mods: Erros de mods em Forge, NeoForge e Fabric.
ArrayIndexOutOfBoundsException: acesso a uma entrada de lista inexistente
Este é o aspeto da mensagem:
java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at <Plugin>.jar//<Pacote>.Util.getBukkitVersion(Util.java:<Linha>)
O que está por trás disto: Um plugin ou um mod tentou ler uma entrada de uma lista que é mais curta. O Java conta a partir de 0: "Index 3 … length 3" significa que só existem as entradas de 0 a 2. Causas frequentes são um comando com poucos argumentos ou uma linha de configuração em que faltam valores. Além disso, plugins mais antigos falham quando leem a versão do servidor a partir de um nome interno que as versões mais recentes do servidor constroem de forma diferente. Nesse caso, a linha "at" contém muitas vezes algo com "Version", como no exemplo. O servidor continua a funcionar.
Como resolver:
- Lê a primeira linha "at" debaixo da mensagem. Indica o plugin ou o mod.
- Se o erro ocorreu num comando, verifica na ajuda do plugin se falta algum argumento.
- Se alteraste a configuração pouco antes, compara a linha afetada com o modelo na página do plugin ou com uma cópia de segurança.
- Atualiza o plugin em Plugins e reinicia. Se o erro persistir, comunica-o ao autor.
Ajuda sobre definições incorretas: O ficheiro de configuração de um plugin está incorreto.
NumberFormatException: um texto devia ser um número
Este é o aspeto da mensagem:
java.lang.NumberFormatException: For input string: "%vault_eco_balance_fixed%"
java.lang.NumberFormatException: For input string: "craftbukkit"
O que está por trás: O jogo, uma mod ou um plugin tentou ler um valor de texto como número, e o texto não era um número. Entre aspas está o que realmente chegou. A causa pode ser uma configuração, um valor de dados inesperado ou um erro de versão ou de programa. Dois casos reconhecem-se pelo valor: um marcador de posição com sinais de percentagem, como acima, não foi substituído. Normalmente falta então a extensão adequada para a PlaceholderAPI, o plugin que preenche esses marcadores, ou o plugin que fornece o valor. Uma palavra como craftbukkit indica que um plugin mais antigo lê incorretamente a versão do servidor.
Como resolver:
- Verifica o stacktrace completo e atualiza o componente indicado aí.
- No caso de um marcador de posição: testa no jogo com
/papi parse me <marcador>se devolve um valor. Se não devolver, instala a extensão adequada da PlaceholderAPI, por exemplo com/papi ecloud download <Nome>, e carrega-a com/papi reload. - Se a mensagem indicar um ficheiro ou uma definição, compara o valor com a configuração predefinida do plugin.
- Reinicia e volta a acionar a ação.
ArrayIndexOutOfBoundsException sem mais detalhes
Este é o aspeto da mensagem:
[<Plugin>] Error occurred while loading item: 2
java.lang.ArrayIndexOutOfBoundsException
O que está por trás: Um plugin ou uma mod usou um índice de lista inválido, como na secção anterior. Aqui faltam, porém, o índice e o comprimento. Isto acontece quando o mesmo erro ocorre com muita frequência: o Java omite então os detalhes por razões de desempenho. A linha anterior revela muitas vezes que plugin queria fazer o quê, no exemplo, carregar uma entrada. A primeira linha do stacktrace abaixo, se existir, indica o responsável.
Como resolver:
- Lê a linha imediatamente antes da mensagem. Aí consta muitas vezes o plugin entre parênteses retos.
- Lê a primeira linha do stacktrace por baixo da mensagem.
- Se faltar ambas, procura em
logs/latest.log, mais acima, a primeira ocorrência. Aí o erro costuma ainda estar completo. Os registos mais antigos estão compactados na pastalogs/. - Atualiza o plugin ou a mod indicados em primeiro lugar. Se a linha anterior mencionar uma entrada específica, verifica-a na configuração do plugin.
- Se o erro persistir, comunica-o ao autor.
ExceptionInInitializerError: a classe de um plugin ou mod não consegue ser inicializada
Este é o aspeto da mensagem:
Exception in thread "ForkJoinPool-3-worker-1" java.lang.ExceptionInInitializerError
Caused by: <Tipo de erro>: <Mensagem>
O que se passa: o Java inicializa cada classe, ou seja, cada bloco de construção de um programa, uma única vez, na primeira utilização. Foi precisamente nesse momento que uma classe de um plugin ou de um mod falhou. Depois disso, fica inutilizável durante essa execução do servidor, por isso seguem-se muitas vezes outros erros, como "NoClassDefFoundError", com o mesmo nome de classe. A causa real e, na maioria dos casos, também o plugin ou o mod afetado são indicados pela cadeia "Caused by" logo abaixo. Dependendo de onde ocorre, uma funcionalidade deixa de funcionar ou o plugin ou mod nem sequer carrega.
Como resolver:
- Na Consola ou em
logs/latest.log, lê a primeira linha "Caused by" abaixo da mensagem. - Pelas linhas "at" que se seguem, identifica o plugin ou o mod, por exemplo através do nome do ficheiro com
.jar. - Atualiza-o ou substitui-o por uma versão compatível com a versão e o software do teu servidor.
- Reinicia o servidor. A classe só é inicializada de novo no próximo arranque.
Para questões de versões, esta ajuda pode ser útil: O plugin não é compatível com a versão do servidor.
Erro interno num plugin, por exemplo ao guardar
Este é o aspeto da mensagem:
[MultiWorld] ERROR HAPPEND: <Mensagem>
Unable to save player profile for <Jogador>
<Plugin> v<Versão> generated an exception whilst handling plugin message
O que está por trás: Um plugin encontrou um erro numa tarefa própria, por exemplo ao guardar, ao processar uma mensagem ou ao arrancar. As mensagens de plugin são pacotes de dados que, por exemplo, um proxy como o BungeeCord ou o Velocity troca com o servidor. O nome do plugin aparece na mensagem entre parênteses retos ou no início da linha. Consoante o erro, falha apenas essa ação ou o plugin desliga-se. Se se tratar de guardar, trata disso rapidamente para não perderes dados.
Como resolver:
- Lê o nome do plugin e as linhas imediatamente abaixo da mensagem na Consola.
- Atualiza o plugin em Plugins e reinicia.
- Se o erro persistir, cria uma cópia de segurança, remove o plugin para teste e verifica se a mensagem desaparece.
- Comunica o erro ao autor do plugin com as linhas da consola.
Se a gravação falhar repetidamente: O plugin não consegue guardar na base de dados ou nos ficheiros.
Relatório de erro do Skript com #!#!: um script não carrega
Este é o aspeto da mensagem:
#!#! Current node: <Line from the .sk file>
#!#! End of Error.
O que se passa: o Skript é um plugin com o qual escreves funcionalidades do servidor em ficheiros de texto simples com a extensão .sk. Se detetar um erro grave ao carregar um script ou um addon, escreve um relatório cujas linhas começam todas por #!#!. Causas frequentes: um addon como skript-reflect ou SkBee não é compatível com a versão instalada do Skript, ou um ficheiro de plugin foi substituído com o servidor em execução. Nesse caso, aparece "zip file closed" no relatório. O script afetado não funciona, mas o servidor continua a funcionar.
Como resolver:
- No relatório, lê a linha "Current node" (indica o ficheiro .sk afetado) e a linha "Caused by".
- Verifica nas páginas dos projetos quais as versões dos addons compatíveis com a tua versão do Skript e coloca o Skript e os addons em versões que sejam compatíveis entre si.
- Substitui ficheiros de plugins apenas com o servidor parado e reinicia-o depois.
- Carrega o script com
/sk reload <ficheiro>e lê o resultado na Consola.
Bom saber: os scripts encontram-se em Ficheiros, na pasta plugins/Skript/scripts/. Faz uma cópia de segurança de um ficheiro antes de o alterares.
IndexOutOfBoundsException: „must be less than size“
Este é o aspeto da mensagem:
Caused by: java.lang.IndexOutOfBoundsException: index (1) must be less than size (1)
O que está por trás: O jogo, uma mod ou um plugin pediu uma entrada de lista que não existe. „index (1) must be less than size (1)“ significa: a lista tem exatamente uma entrada com o número 0, mas foi pedido o número 1. Pode haver uma configuração envolvida, mas só a mensagem não o comprova. Se „Caused by:“ estiver à frente, é a causa de um erro comunicado mais acima. O que falha é mostrado por essa mensagem superior.
Como resolver:
- Lê o stacktrace completo em
logs/latest.log, incluindo a mensagem de erro acima. - Procura a primeira linha „at“ que indique um componente externo, ou seja, um plugin ou uma mod em vez de Java ou de uma biblioteca como
java.baseoucom.google.common. - Atualiza esse componente e reinicia.
- Só se o contexto apontar para uma lista concreta, por exemplo entradas de menu ou recompensas, verifica a respetiva configuração quanto a entradas em falta ou vazias.
“Asynchronous Save Players”: o plugin guarda a partir da thread errada
Este é o aspeto da mensagem:
Asynchronous Save Players! Blocking thread until it returns
java.lang.IllegalStateException
at io.papermc.paper.util.MCUtil.ensureMain(MCUtil.java:<Line>)
O que está por trás: Um plugin iniciou a gravação dos dados de todos os jogadores a partir de uma thread em segundo plano, ou seja, a partir de um processo paralelo ao da thread principal, que calcula o mundo. Isto não está previsto. O Paper bloqueia a thread até a gravação terminar e escreve este aviso. Trata-se de um erro do plugin, que pode causar pequenos engasgos. O servidor continua a funcionar.
Como resolver:
- Lê as linhas “at” por baixo da mensagem. As primeiras pertencem ao Paper e ao Minecraft (
io.papermc,net.minecraft); procura a primeira linha “at” que mencione um plugin. - Atualiza esse plugin em Plugins e reinicia.
- Se o aviso persistir, comunica o erro ao autor do plugin com a mensagem completa.
Bom saber: Podes encarar um aviso isolado com tranquilidade. Se surgir com regularidade e os jogadores notarem engasgos, vale a pena atualizar.
“Unhandled exception executing command”: o comando de um plugin falha
Este é o aspeto da mensagem:
org.bukkit.command.CommandException: Unhandled exception executing command '<befehl>' in plugin <Plugin> v<Version>
Caused by: <ErrorType>: <Message>
O que está por trás: Um plugin gerou um erro ao executar um dos seus comandos. O comando e o plugin constam da mensagem. Na maioria das vezes, o plugin não é compatível com a versão do servidor ou com outro plugin de que depende. Quem introduziu o comando vê normalmente no chat apenas um aviso genérico de erro interno. O comando não foi executado, mas o servidor continua a funcionar.
Como resolver:
- Lê a linha “Caused by” por baixo da mensagem.
- Verifica a versão do servidor em Versão e atualiza o plugin em Plugins para uma edição compatível.
- Se a linha de erro mencionar outro plugin de que o plugin depende, atualiza esse também para uma versão compatível.
- Reinicia e testa o comando. Se o erro continuar, comunica-o ao autor do plugin com essa linha.
Mais sobre dependências: Plugin precisa de outro plugin.
Erro de comando com “[ACF]” no registo
Este é o aspeto da mensagem:
[<Plugin>] [ACF] Exception in command: <befehl>
[<Plugin>] [ACF] java.lang.NoSuchMethodError: <Method>
O que está por trás: Muitos plugins criam os seus comandos com uma biblioteca pronta, o Aikar Command Framework (ACF). Quando um comando falha com uma exceção, o ACF mostra o erro com o stacktrace, cada linha precedida pelo nome do plugin. Assim, o nome no primeiro parêntese reto é o plugin afetado, não o ACF. Se na saída aparecer “IncompatibleClassChangeError” ou “NoSuchMethod”, o plugin não é compatível com a versão do servidor. O comando não foi executado, mas o servidor continua a funcionar.
Como resolver:
- Lê o nome do plugin no primeiro parêntese reto e a primeira linha de erro com “Exception” ou “Error”.
- Atualiza o plugin em Plugins para uma versão compatível com a versão do teu servidor.
- Reinicia e testa o comando.
- Se o erro persistir, comunica-o ao autor do plugin com a primeira linha de erro.
Bom saber: Não precisas de instalar nem atualizar o ACF por ti. Ele vem incluído em cada plugin.
GravesX: erro numa tarefa em segundo plano
Este é o aspeto da mensagem:
[GravesX] Async task for GravesX v<Version> generated an exception
java.lang.NullPointerException: Cannot invoke "<Method>" because "version2" is null
O que está por trás: O GravesX cria uma sepultura com os itens de um jogador quando este morre. O plugin gera uma NullPointerException numa tarefa em segundo plano, por exemplo ao comparar dois números de versão quando falta um valor (“version2”). Trata-se de um erro do próprio plugin, não de um problema do servidor ou do alojamento. O servidor continua a funcionar normalmente.
Como resolver:
- Atualiza o GravesX em Plugins para a versão mais recente e reinicia.
- Verifica na Consola se a mensagem volta a aparecer.
- Se o erro persistir, comunica-o ao projeto GravesX com a mensagem completa.
- Se quiseres desativar o plugin a título de teste até haver correção, esvazia antes as sepulturas abertas. Sem o plugin, não é possível abri-las como habitualmente.
FastAsyncWorldEdit: o comando falhou internamente
Este é o aspeto da mensagem:
An unexpected error while handling a FastAsyncWorldEdit command
java.lang.NullPointerException
O que está por trás: O FastAsyncWorldEdit (FAWE) é uma variante rápida do WorldEdit, com a qual editas grandes áreas de uma só vez. Num comando, o FAWE deparou-se com um valor em falta. A operação não foi totalmente executada, pelo que a alteração pode ter chegado ao mundo apenas em parte. O servidor continua a funcionar.
Como resolver:
- Verifica no jogo o que o comando alterou. Com
//undopodes anular o último passo, se necessário. - Atualiza o FAWE em Plugins para uma edição compatível com a versão do teu servidor e reinicia.
- Executa o comando novamente.
- Se o erro persistir, comunica o stacktrace completo, com o comando exato, aos programadores do FAWE.
Noções básicas para anular ações: WorldEdit: construir e anular.
Bom saber: Não instales o FAWE em adição ao WorldEdit normal. Os dois em conjunto não são compatíveis; usa apenas um.
LibreLogin: o comando falhou internamente
Este é o aspeto da mensagem:
[LibreLogin] An unexpected exception occurred while performing command …
O que está por trás: O LibreLogin é um plugin de login: os jogadores autenticam-se com uma palavra-passe, muitas vezes em servidores em modo offline. Ao executar um dos seus comandos, por exemplo para iniciar sessão ou registar, falhou com uma exceção inesperada. Para o jogador, o comando falha. Se for o início de sessão, não consegue avançar até o comando voltar a funcionar. O próprio servidor continua a funcionar.
Como resolver:
- Lê na Consola a exceção por baixo da mensagem e anota qual foi o comando.
- Atualiza o LibreLogin em Plugins e reinicia.
- Testa o comando novamente com um jogador.
- Se o erro persistir, comunica a exceção, juntamente com o comando, ao autor do plugin.
Se a exceção mencionar uma base de dados: O plugin não consegue abrir a sua base de dados.
LibreLogin: o handler de rede está registado em duplicado
Este é o aspeto da mensagem:
java.lang.IllegalArgumentException: Duplicate handler name: pe-decoder-librelogin
O que está por trás: Cada ligação de um jogador passa por uma cadeia de passos de processamento, a pipeline de rede. O LibreLogin ou a biblioteca PacketEvents tenta integrar o mesmo passo, um decoder para dados recebidos, uma segunda vez. As novas ligações podem então falhar. Causas típicas são dois ficheiros do LibreLogin na pasta de plugins, versões incompatíveis do LibreLogin e do PacketEvents ou um recarregamento dos plugins com o servidor em execução.
Como resolver:
- Em Ficheiros, abre a pasta
plugins/e verifica se o LibreLogin existe apenas uma vez. Remove as cópias mais antigas depois de criares uma cópia de segurança. - Atualiza o LibreLogin e, se estiver instalado, o PacketEvents em conjunto.
- Pára o servidor e reinicia-o por completo. Um recarregamento com
/reloadou com um gestor de plugins não é suficiente aqui. - Testa a entrada com um jogador.
Mais sobre ficheiros duplicados: O ficheiro do plugin está danificado ou duplicado.
LightAntiCheat-Plus: erro numa verificação de movimento
Este é o aspeto da mensagem:
[LightAntiCheat-Plus] Exception in event bus subscription: <Check>
java.lang.UnsupportedOperationException: remove
O que está por trás: O LightAntiCheat-Plus é um plugin de anti-cheat que, entre outras coisas, verifica os movimentos dos jogadores. Uma das suas verificações tenta esvaziar uma lista que não pode ser alterada. Trata-se de um erro do plugin. A verificação afetada pode falhar ou dar resultados errados, ou seja, não detetar batota ou suspeitar injustamente de jogadores honestos. O servidor continua a funcionar.
Como resolver:
- Atualiza o LightAntiCheat-Plus em Plugins e reinicia.
- Se a mensagem continuar a aparecer, desativa a verificação afetada SpeedD na configuração do plugin até haver uma correção. Encontras a configuração em Ficheiros, na pasta do plugin dentro de
plugins/. Faz antes uma cópia do ficheiro. - Reinicia e verifica na Consola se a mensagem deixa de aparecer.
- Volta a ativar a verificação assim que for lançada uma versão corrigida.
Bom saber: Enquanto a mensagem aparecer, trata com cautela os casos suspeitos relacionados com movimento.
O MagicSpells comunica um erro num feitiço
Este é o aspeto da mensagem:
[MagicSpells] AN EXCEPTION HAS OCCURED:
[MagicSpells] This error has been saved in the errors folder.
Error saving spellbook for player '<Jogador>'
O que está por trás: O MagicSpells é um plugin para feitiços personalizados. Comunica um erro ao executar ou guardar feitiços, muitas vezes por causa de uma entrada na sua configuração que esta versão não entende. Os efeitos funcionam através da biblioteca EffectLib; as mensagens com „Unexpected EffectLib Error“ dizem respeito a esses efeitos. Além disso, o MagicSpells guarda um relatório na pasta plugins/MagicSpells/errors. Se falhar a gravação do livro de feitiços (spellbook), o progresso desse jogador não é guardado.
Como resolver:
- Em Ficheiros, abre a pasta
plugins/MagicSpells/errorse o relatório mais recente. Indica o feitiço e a definição. - Verifica essa definição nos teus ficheiros de feitiços, por exemplo à procura de erros de escrita ou de valores de uma versão mais antiga do MagicSpells. Faz antes uma cópia do ficheiro.
- Mantém o MagicSpells e o EffectLib atualizados e compatíveis com a versão do servidor.
- Reinicia e testa o feitiço.
SinglePlayerSleep: dormir na cama não funciona
Este é o aspeto da mensagem:
[SinglePlayerSleep] INTERNAL ERROR: Unable to process PlayerBedEnterEvent
O que está por trás: O SinglePlayerSleep faz passar a noite quando um único jogador dorme, em vez de todos terem de ir para a cama. Ao entrar numa cama, o plugin falhou. A função de dormir pode não funcionar nessa tentativa e a noite não é saltada. Na maioria das vezes, a versão do plugin não é compatível com a versão do Minecraft. O servidor continua a funcionar.
Como resolver:
- Em Versão, verifica qual a versão do Minecraft em execução.
- Atualiza o SinglePlayerSleep em Plugins para uma versão compatível e reinicia.
- Testa no jogo: deita-te numa cama à noite e verifica se a noite passa.
- Se o erro persistir, comunica a exception que aparece sob a mensagem ao autor do plugin.
Mais informações: Regras de jogo do Minecraft explicadas.
Bom saber: As versões mais recentes do Minecraft têm uma regra de jogo própria que define a percentagem de jogadores que têm de dormir. Pode substituir o plugin.
O PacketEvents não consegue integrar-se na ligação
Este é o aspeto da mensagem:
PacketEvents failed to add a decoder to the netty pipeline
O que está por trás: O PacketEvents é uma biblioteca através da qual outros plugins, como os de anti-cheat ou de login, leem pacotes de rede. Para isso, integra um passo próprio, um decoder, na pipeline de rede de cada ligação. O Netty é a biblioteca de rede através da qual o servidor gere as ligações. A integração falhou: outro handler de rede ou uma versão incompatível do PacketEvents bloqueia a ordem esperada. Os plugins que dependem do PacketEvents deixam então de funcionar corretamente nessa ligação.
Como resolver:
- Atualiza em conjunto o PacketEvents, o Geyser e o Floodgate, bem como os plugins de login e de anti-cheat, para versões compatíveis com a versão do teu servidor.
- Em Ficheiros, na pasta
plugins/, verifica que nenhum ficheiro está duplicado. - Pára o servidor e reinicia-o por completo, sem recarregar com o servidor em execução.
- Testa a entrada com Java e, se usares o Geyser, também com Bedrock.
Para jogadores de Bedrock: Bedrock e Geyser: mensagens no log.
StringIndexOutOfBoundsException: valor de texto vazio ou demasiado curto
Este é o aspeto da mensagem:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
O que está por trás: Um plugin ou mod quis ler um determinado caractere de um texto, por exemplo o primeiro caractere de um prefixo. Só que o texto é mais curto, com „length 0“ até está vazio. Muitas vezes, um valor de configuração esperado está vazio, como um prefixo, uma indicação de cor ou um nome inserido apenas como ''. O servidor continua a funcionar; a função que precisa do texto falha.
Como resolver:
- No stacktrace, lê a primeira linha que contenha o nome de um plugin ou mod.
- Em Ficheiros, abre a configuração desse plugin na pasta
plugins/<Plugin>/e procura valores vazios como''ou entradas sem valor. Faz antes uma cópia do ficheiro. - Introduz um valor válido ou adota o valor predefinido do modelo do plugin.
- Atualiza o plugin e reinicia.
Mais sobre definições incorretas: O ficheiro de configuração de um plugin está incorreto.
«NoSuchFieldException: childHandler»: o plugin de rede não é compatível com o servidor
Este é o aspeto da mensagem:
java.lang.NoSuchFieldException: childHandler
O que está por trás disto: o Netty é a biblioteca de rede através da qual o servidor aceita ligações. Alguns plugins acedem diretamente a partes internas da mesma para se integrarem nas ligações. Neste caso, um plugin de rede procura o campo interno «childHandler», que não está disponível na versão do servidor ou do Netty instalada. Ou seja, o plugin foi compilado para outra build do servidor. Os plugins afetados são geralmente de rede, proxy ou protocolo; a sua função deixa de estar disponível.
Como resolver:
- Lê o stacktrace por baixo da mensagem e procura o primeiro plugin de rede, proxy ou protocolo, por exemplo ViaVersion, ProtocolLib ou Geyser.
- Verifica em Versão qual é a versão do servidor em execução. A versão exata do software do servidor (build) também aparece nas primeiras linhas de
logs/latest.log. - Atualiza o plugin encontrado para uma versão compatível com esta build do servidor e reinicia.
- Se ainda não existir uma versão adequada, desativa o plugin temporariamente até o autor o atualizar.
Mais detalhes: O plugin não é compatível com a versão do servidor.
As sugestões do Tab de um comando de plugin não funcionam
Este é o aspeto da mensagem:
Unhandled exception during tab completion for command '<Comando>' in plugin <Plugin>
O que está por detrás disto: Ao carregares na tecla Tab, o Minecraft pergunta ao plugin responsável quais são as possíveis sugestões de conclusão. Nesse momento, a função de sugestões do plugin falha. O servidor continua a funcionar, apenas faltam as sugestões para o comando afetado. O registo de erro que aparece abaixo, o chamado stacktrace, mostra as chamadas de programa envolvidas.
Como resolver:
- Lê a mensagem completa na Consola ou em Ficheiros, no ficheiro
logs/latest.log. Anota o plugin, o comando e a primeira mensagem de erro concreta que aparece abaixo. - Verifica em Versão a versão do teu servidor e instala em Plugins uma edição adequada do plugin indicado.
- Reinicia o servidor por completo e testa novamente o mesmo comando com a tecla Tab.
- Se o erro persistir, envia ao autor do plugin o registo de erro completo e descreve em que ponto as sugestões falham.
StackOverflowError ao avaliar uma regra de pesquisa
Este é o aspeto da mensagem:
Exception in thread "<Tarefa em segundo plano>" java.lang.StackOverflowError
O que está por detrás disto: Uma expressão regular é uma regra de pesquisa para texto, por exemplo para filtros de comandos. Ao verificar esta regra, o Java precisa de demasiadas chamadas encadeadas umas nas outras e enche assim a pilha de chamadas. A tarefa em segundo plano indicada é terminada e o seu trabalho fica incompleto; o servidor continua a funcionar. O StackOverflowError é um erro diferente de a memória do Java estar cheia.
Como resolver:
- Abre o registo de erro completo na Consola ou em Ficheiros, no ficheiro
logs/latest.log. Com base no nome do thread e nas chamadas do plugin, identifica o plugin responsável. - Faz uma cópia das definições desse plugin e verifica as regras de pesquisa ou de comandos configuráveis. Simplifica a regra que provoca o erro, caso a tenhas definido tu.
- Atualiza o plugin em Plugins para uma edição adequada e reinicia o servidor por completo.
- Se a regra estiver integrada de forma fixa, comunica ao autor o registo de erro completo e a entrada que provoca o erro.
O Paper bloqueia „entity add“ a partir de um thread em segundo plano
Este é o aspeto da mensagem:
Thread <Thread> failed main thread check: entity add
O que está por detrás disto: O Paper verifica se as alterações ao mundo de jogo são executadas no thread correto. Um thread é uma linha de execução própria do programa. Aqui, uma tarefa em segundo plano tenta adicionar uma entidade ao mundo e é travada pela verificação de proteção. A ação em causa falha; o servidor continua a funcionar.
Como resolver:
- Na Consola ou em Ficheiros, abre o registo de erro completo em
logs/latest.log. A mensagem abreviada mostra muitas vezes apenas chamadas do servidor. - Continua a ler até à primeira chamada do plugin e anota que ação desencadeou o erro.
- Instala em Plugins uma edição deste plugin adequada à versão do teu servidor e reinicia o servidor por completo.
- Se o erro continuar a ocorrer, comunica-o ao autor do plugin com o registo de erro completo. A chamada do plugin tem de ser transferida para o thread correto.
Bom saber: Mantém a verificação de proteção ativa. Desativá-la não corrige o acesso incorreto ao mundo.
A tua mensagem não está aqui?
Lê a mensagem inteira, incluindo as linhas anteriores. Muitas vezes indicam o que o plugin estava a tentar fazer. No stacktrace, os nomes dos ficheiros nas linhas „at“, por exemplo <Plugin>.jar, e os nomes dos pacotes revelam o plugin ou o mod. As linhas com java.base, net.minecraft, org.bukkit ou io.papermc pertencem ao Java e ao servidor. Cria uma cópia de segurança, atualiza o responsável e reinicia. Se não conseguires avançar, abre um ticket e indica a hora da mensagem.