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 "com.google.gson.JsonObject.entrySet()" because "jsonobject" is null
java.lang.NullPointerException: Cannot invoke "java.lang.invoke.MethodHandle.invoke(Object, String)" because "this.DESERIALIZE_METHOD" is null
java.lang.NullPointerException: Cannot invoke "com.google.gson.JsonElement.getAsBoolean()" because the return value of "com.google.gson.JsonObject.get(String)" is null

O que está por trás disto: Um plugin ou um mod acede a um objeto em falta; o Java chama „null“ a este valor. Depois de „Cannot invoke“ surge o método e depois de „because“ o valor em falta. Isto também pode acontecer ao ler um ficheiro de idioma ou de configuração. A ação afetada é interrompida; no caso de „Skipped language file“, o ficheiro de idioma é ignorado. Durante o arranque, o erro também pode interromper o processo de arranque.

Como resolver:

  1. Abre a mensagem completa na Consola ou em logs/latest.log. Lê também as linhas anteriores: um ficheiro de idioma ou de configuração mencionado ajuda a identificar a origem.
  2. As linhas „at“ chamam-se stacktrace: a cadeia de chamadas até ao erro. Lê desde a primeira linha até ao plugin ou mod envolvido; a primeira pode mencionar o próprio Minecraft.
  3. Atualiza o plugin identificado em Plugins ou o mod em Mods de acordo com a versão do servidor. Para o servidor antes de substituíres os ficheiros e reinicia-o depois.
  4. Se for mencionada uma configuração, faz uma cópia de segurança dela e compara as definições necessárias com as indicações do autor. Se o erro persistir, comunica-lhe a mensagem completa e a ação que o desencadeou.

Bom saber: pl:mixin:APP:<Mod>.mixins.json indica um mod com um mixin, uma intervenção nos processos do jogo.

„Could not pass event“: o plugin falha durante um evento do jogo

Este é o aspeto da mensagem:

Could not pass event <Evento> to <Plugin> v<Versão>
java.lang.NoSuchMethodError: …
java.lang.IllegalArgumentException: The found tag instance (ByteTag) cannot store Integer

O que está por trás disto: Os plugins reagem a eventos como entrar no servidor, clicar no inventário ou sofrer dano. Se um plugin lançar aqui uma exceção, ou seja, um erro de Java, o seu processamento é interrompido. Depois de „to“ surgem o plugin e a versão, e antes o evento. „NoSuchMethodError“ ou „NoSuchFieldError“ indicam uma versão do servidor incompatível. „IllegalArgumentException“ pode significar, por exemplo, um valor de cor inválido ou um tipo de dados inadequado. Isto tem de ser corrigido pelo autor do plugin. O servidor continua a funcionar, mas a função afetada do plugin falha neste evento.

Como resolver:

  1. Na Consola, lê o nome e a versão do plugin depois de „to“, bem como a linha de erro por baixo.
  2. Verifica em Versão qual a versão do servidor em execução e procura na página do plugin uma versão que suporte essa versão.
  3. Para o servidor, instala a versão adequada em Plugins e reinicia.
  4. Se o erro persistir, comunica-o ao autor do plugin com a ação que o desencadeou e a mensagem de erro completa.

Bom saber: Mais detalhes sobre „NoSuchMethodError“ e „NoSuchFieldError“: O plugin não é compatível com a versão do servidor.

„Task … generated an exception“: a tarefa do plugin falha em segundo plano

Este é o aspeto da mensagem:

[<Plugin>] Task #<Número> for <Plugin> v<Versão> generated an exception
java.lang.IllegalArgumentException: missing required data class java.lang.Float
java.lang.IllegalArgumentException: WATER isn't an item

O que está por trás disto: Os plugins agendam tarefas (tasks), por exemplo para partículas, hologramas ou para guardar dados. Podem ser executadas uma só vez ou regularmente. Uma tarefa foi interrompida por um erro de Java, uma exceção. Se isto se repetir continuamente, o plugin não é, muitas vezes, compatível com a versão do servidor, por exemplo após uma atualização. Valores inválidos no plugin também podem causar o erro. O servidor continua a funcionar, mas uma função do plugin falha e a consola enche-se com as repetições.

Como resolver:

  1. Lê o nome do plugin depois de „for“ e a linha de erro por baixo.
  2. Verifica em Plugins se existe uma versão mais recente adequada à versão do teu servidor. Para o servidor, instala-a e reinicia.
  3. Se não existir uma versão adequada, para o servidor e move o ficheiro .jar em Ficheiros, de plugins/ para uma pasta própria. Depois reinicia. Erros constantes podem tornar o servidor mais lento.
  4. Verifica na Consola se a mensagem deixa de aparecer. Se continuar com a versão atual, comunica-a ao autor.

Bom saber: „missing required data class“ indica dados de partículas em falta; „WATER isn't an item“ indica um item inválido. „NoSuchMethodError“ ou „NoSuchFieldError“ apontam para incompatibilidade de versões.

„Exception … executing task“: a tarefa do plugin ou o comando é interrompido

Este é o aspeto da mensagem:

[Essentials] Command <Comando> failed:
[<Plugin>] Plugin <Plugin> v<Versão> generated an exception while executing task <Número>
[MythicMobs] [SCHEDULER] Exception thrown whilst executing task

O que está por trás disto: Um plugin foi interrompido durante um comando ou uma tarefa agendada por uma exceção, ou seja, um erro de Java. O servidor continua a funcionar, mas a função afetada do plugin não. A causa surge por baixo, e em erros encadeados depois de „Caused by“. „Cannot perform command async“ significa que um plugin executa indevidamente um comando a partir de uma thread em segundo plano, um fio de execução paralelo. Isto tem de ser corrigido pelo autor do plugin.

Como resolver:

  1. Procura por baixo da mensagem a linha „Caused by“ ou a primeira linha com „Exception“ ou „Error“.
  2. Identifica o plugin a partir da mensagem ou das linhas „at“, a cadeia de chamadas até ao erro. Aí pode aparecer <Plugin>.jar.
  3. Atualiza o plugin em Plugins para uma versão adequada à versão do teu servidor. Para o servidor antes de substituíres os ficheiros e reinicia-o depois.
  4. Repete o comando ou observa a execução seguinte da tarefa. Se o erro persistir, comunica-o ao autor com a ação, a hora e a mensagem completa.

Bom saber: „NoSuchMethodError“, „NoSuchFieldError“ ou „NoSuchFieldException“ significam que falta um método ou um campo necessário. Verifica a versão do servidor suportada pelo plugin e as suas dependências; precisas de versões compatíveis entre si.

ClassCastException: o mod ou plugin espera um tipo de dados diferente

Este é o aspeto da mensagem:

java.lang.ClassCastException: class <PackageA>.<ClassA> cannot be cast to class <PackageB>.<ClassB>
Cannot load key=<Entry>, type=<DataType> in config=<Configuration>

O que está por trás disto: Um mod ou plugin espera um tipo de dados diferente do que um componente envolvido fornece. Isto acontece, por exemplo, quando um mod foi atualizado e um mod dependente não. O erro também pode surgir ao ler a configuração de um mod, como no segundo exemplo, seguido de uma ClassCastException. Muitas vezes, apenas a função afetada falha, como o carregamento de dados de saque ou de uma entrada de configuração.

Como resolver:

  1. Lê a mensagem completa em logs/latest.log, em Ficheiros. Os nomes dos pacotes antes dos nomes das classes ajudam a identificar os mods ou plugins envolvidos; já java.lang.String designa o tipo de dados Java para texto.
  2. Verifica qual componente foi atualizado por último. Coloca os mods ou plugins envolvidos em versões compatíveis entre si: atualiza-os em conjunto ou volta ao estado anterior.
  3. Se estiver a correr um Modpack, atualiza o modpack inteiro em vez de mods individuais.
  4. Se for mencionada uma entrada de configuração, verifica-a com base na documentação da versão do mod instalada.
  5. Reinicia e repete o processo.

Mais sobre conflitos de mods: Erros de mods no Forge, NeoForge e Fabric.

ArrayIndexOutOfBoundsException: acesso a uma entrada inexistente numa lista

Este é o aspeto da mensagem:

java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
java.lang.ArrayIndexOutOfBoundsException: Index -3 out of bounds for length 16
Caught exception during event FMLCommonSetupEvent dispatch for modid <Mod>

O que está por trás: Um plugin ou uma mod acede a uma posição inválida num array, ou seja, numa lista de tamanho fixo. O Java conta a partir de 0: com tamanho 3, só existem as posições 0 a 2; as posições negativas também são inválidas. Muitas vezes faltam argumentos de comandos ou valores de configuração, ou um plugin mais antigo lê incorretamente a versão do servidor. Os exemplos referem-se ainda ao processamento de dados do mundo pelo Geyser e ao arranque de mods; consoante o ponto onde ocorre, uma funcionalidade falha ou o arranque não se completa.

Como resolver:

  1. Lê as linhas de erro na Consola ou em Ficheiros, em logs/latest.log. As linhas "at" por baixo mostram a cadeia de chamadas, também chamada stacktrace; procura nela o plugin ou a mod afetado.
  2. Se o erro ocorreu num comando, verifica os argumentos necessários. Se alteraste a configuração por conta própria, compara os valores com o modelo ou com uma cópia de segurança.
  3. Atualiza o plugin afetado em Plugins ou a mod em Mods para uma versão compatível com o servidor e o loader. O loader é quem carrega as mods. Reinicia o servidor.
  4. Se o erro persistir, envia ao autor a mensagem de erro, juntamente com a cadeia de chamadas e o que o desencadeou.

O ficheiro de configuração de um plugin está com erros.

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:

  1. Verifica o stacktrace completo e atualiza o componente indicado aí.
  2. 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.
  3. Se a mensagem indicar um ficheiro ou uma definição, compara o valor com a configuração predefinida do plugin.
  4. 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:

  1. Lê a linha imediatamente antes da mensagem. Aí consta muitas vezes o plugin entre parênteses retos.
  2. Lê a primeira linha do stacktrace por baixo da mensagem.
  3. 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 pasta logs/.
  4. 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.
  5. 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:

  1. Na Consola ou em logs/latest.log, lê a primeira linha "Caused by" abaixo da mensagem.
  2. Pelas linhas "at" que se seguem, identifica o plugin ou o mod, por exemplo através do nome do ficheiro com .jar.
  3. Atualiza-o ou substitui-o por uma versão compatível com a versão e o software do teu servidor.
  4. 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:

  1. Lê o nome do plugin e as linhas imediatamente abaixo da mensagem na Consola.
  2. Atualiza o plugin em Plugins e reinicia.
  3. Se o erro persistir, cria uma cópia de segurança, remove o plugin para teste e verifica se a mensagem desaparece.
  4. 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:

  1. No relatório, lê a linha "Current node" (indica o ficheiro .sk afetado) e a linha "Caused by".
  2. 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.
  3. Substitui ficheiros de plugins apenas com o servidor parado e reinicia-o depois.
  4. 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:

  1. Lê o stacktrace completo em logs/latest.log, incluindo a mensagem de erro acima.
  2. 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.base ou com.google.common.
  3. Atualiza esse componente e reinicia.
  4. 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:

  1. 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.
  2. Atualiza esse plugin em Plugins e reinicia.
  3. 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:

  1. Lê a linha “Caused by” por baixo da mensagem.
  2. Verifica a versão do servidor em Versão e atualiza o plugin em Plugins para uma edição compatível.
  3. Se a linha de erro mencionar outro plugin de que o plugin depende, atualiza esse também para uma versão compatível.
  4. 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:

  1. Lê o nome do plugin no primeiro parêntese reto e a primeira linha de erro com “Exception” ou “Error”.
  2. Atualiza o plugin em Plugins para uma versão compatível com a versão do teu servidor.
  3. Reinicia e testa o comando.
  4. 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:

  1. Atualiza o GravesX em Plugins para a versão mais recente e reinicia.
  2. Verifica na Consola se a mensagem volta a aparecer.
  3. Se o erro persistir, comunica-o ao projeto GravesX com a mensagem completa.
  4. 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:

  1. Verifica no jogo o que o comando alterou. Com //undo podes anular o último passo, se necessário.
  2. Atualiza o FAWE em Plugins para uma edição compatível com a versão do teu servidor e reinicia.
  3. Executa o comando novamente.
  4. 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:

  1. Lê na Consola a exceção por baixo da mensagem e anota qual foi o comando.
  2. Atualiza o LibreLogin em Plugins e reinicia.
  3. Testa o comando novamente com um jogador.
  4. 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:

  1. 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.
  2. Atualiza o LibreLogin e, se estiver instalado, o PacketEvents em conjunto.
  3. Pára o servidor e reinicia-o por completo. Um recarregamento com /reload ou com um gestor de plugins não é suficiente aqui.
  4. 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:

  1. Atualiza o LightAntiCheat-Plus em Plugins e reinicia.
  2. 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.
  3. Reinicia e verifica na Consola se a mensagem deixa de aparecer.
  4. 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:

  1. Em Ficheiros, abre a pasta plugins/MagicSpells/errors e o relatório mais recente. Indica o feitiço e a definição.
  2. 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.
  3. Mantém o MagicSpells e o EffectLib atualizados e compatíveis com a versão do servidor.
  4. 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:

  1. Em Versão, verifica qual a versão do Minecraft em execução.
  2. Atualiza o SinglePlayerSleep em Plugins para uma versão compatível e reinicia.
  3. Testa no jogo: deita-te numa cama à noite e verifica se a noite passa.
  4. 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:

  1. 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.
  2. Em Ficheiros, na pasta plugins/, verifica que nenhum ficheiro está duplicado.
  3. Pára o servidor e reinicia-o por completo, sem recarregar com o servidor em execução.
  4. 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:

  1. No stacktrace, lê a primeira linha que contenha o nome de um plugin ou mod.
  2. 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.
  3. Introduz um valor válido ou adota o valor predefinido do modelo do plugin.
  4. 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:

  1. Lê o stacktrace por baixo da mensagem e procura o primeiro plugin de rede, proxy ou protocolo, por exemplo ViaVersion, ProtocolLib ou Geyser.
  2. 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.
  3. Atualiza o plugin encontrado para uma versão compatível com esta build do servidor e reinicia.
  4. 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:

  1. 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.
  2. Verifica em Versão a versão do teu servidor e instala em Plugins uma edição adequada do plugin indicado.
  3. Reinicia o servidor por completo e testa novamente o mesmo comando com a tecla Tab.
  4. 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:

  1. 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.
  2. 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.
  3. Atualiza o plugin em Plugins para uma edição adequada e reinicia o servidor por completo.
  4. 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:

  1. 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.
  2. Continua a ler até à primeira chamada do plugin e anota que ação desencadeou o erro.
  3. Instala em Plugins uma edição deste plugin adequada à versão do teu servidor e reinicia o servidor por completo.
  4. 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.

O cálculo do saque falha por faltarem valores obrigatórios

Este é o aspeto da mensagem:

java.lang.IllegalArgumentException: Missing required parameters: [<Parâmetro>]

O que está por trás: o Minecraft precisa de informações sobre a situação em causa para gerar saque e itens. A função que faz a chamada não fornece aqui todos os valores obrigatórios, por isso este cálculo é interrompido. Consegues perceber qual é a ação afetada pelo relatório de erro completo e pelo momento em que a mensagem aparece.

Como resolver:

  1. Abre a mensagem na Consola ou em Ficheiros, em logs/latest.log, incluindo a lista de chamadas que se segue. Essa lista chama-se stacktrace.
  2. Procura nela o primeiro plugin envolvido e anota qual é a ação que provoca o erro.
  3. Atualiza esse plugin em Plugins e verifica em Versão se o software do teu servidor é compatível.
  4. Testa novamente a mesma ação. Se o erro continuar, envia o relatório completo ao projeto responsável.

O Oritech falha numa ação com um item sobre o bloco

Este é o aspeto da mensagem:

Failed to handle packet <Pacote>, suppressing error
java.util.NoSuchElementException: null
    at <Pacote>.ItemFluidApi.tryFluidBlockItemInteraction(<Ficheiro>:<Linha>)

O que está por trás: O mod Oritech está a processar uma ação em que um item é usado num bloco. O processamento de fluidos tenta ler o primeiro elemento de uma lista vazia. Para isso, o Java comunica uma NoSuchElementException, ou seja, um acesso a um elemento que não existe. A ação é cancelada; o servidor continua a processar as outras tarefas.

Como resolver:

  1. Anota o item utilizado, o bloco e a hora. Cria uma cópia de segurança em Cópias de segurança antes de fazeres alterações.
  2. Verifica em Mods se existe uma atualização adequada do Oritech. A versão do Minecraft, o loader e, no caso de um Modpack, as versões dos mods previstas por este têm de ser compatíveis.
  3. Se o erro continuar a ocorrer, evita por agora a ação que o desencadeia. Comunica-a ao autor do Oritech, juntamente com o rasto de erro completo de logs/latest.log.

BeautyQuests: o progresso da missão não é atualizado no painel lateral

Este é o aspeto da mensagem:

[BeautyQuests.ScoreboardManager] Failed to refresh line {quest_advancement} for player <Jogador>
java.util.NoSuchElementException: No value present

O que está por detrás: o BeautyQuests insere no painel lateral um marcador de posição para o progresso da missão. Falta um valor numérico que o plugin espera. A linha de apresentação afetada não é atualizada, mas o servidor continua a funcionar.

Como resolver:

  1. Verifica na Consola ou em Ficheiros, em logs/latest.log, em que missão a mensagem ocorre. O rasto de erro por baixo mostra as chamadas de plugin envolvidas.
  2. Faz uma cópia de segurança da configuração do plugin e atualiza o BeautyQuests em Plugins para uma versão compatível com a versão do teu servidor. Reinicia o servidor por completo.
  3. Se o erro persistir, remove temporariamente, em Ficheiros, a linha de apresentação com {quest_advancement} da configuração do BeautyQuests.
  4. Comunica ao autor do plugin o rasto de erro completo e limpo, bem como a configuração da missão afetada. Remove os dados pessoais antes de o partilhares.

O TAB utiliza um objeto descartado após o recarregamento

Este é o aspeto da mensagem:

[TAB] java.lang.IllegalStateException: This instance got discarded because plugin was reloaded. Obtain a new instance.

O que está por detrás: durante o recarregamento, o TAB substituiu objetos internos. Outra ação continua a aceder a um objeto antigo que o TAB já descartou. Por isso, o registo do marcador de posição em causa é interrompido e partes da apresentação podem faltar. O servidor continua a funcionar.

Como resolver:

  1. Reinicia o servidor por completo e verifica depois a Consola. Um reinício completo volta a carregar em conjunto os componentes envolvidos.
  2. Se a mensagem voltar a aparecer, faz uma cópia de segurança da configuração e atualiza o TAB e as respetivas extensões para versões compatíveis entre si. No Fabric, usa Mods; para ficheiros carregados por ti, usa Ficheiros.
  3. Por agora, utiliza reinícios completos. Anota que ação volta a desencadear a mensagem.
  4. Se os erros persistirem, envia ao autor do TAB o rasto de erro limpo e as versões instaladas.

Um plugin deixa tarefas em segundo plano a correr ao recarregar ou parar

Este é o aspeto da mensagem:

Nag author: '<Author>' of '<Plugin>' about the following: This plugin is not properly shutting down its async tasks when it is being shut down.

O que está por detrás: o plugin indicado não termina corretamente as suas tarefas assíncronas. São trabalhos que correm em paralelo com o ciclo principal do servidor. Após um recarregamento, tarefas antigas e novas do plugin podem entrar em conflito; numa paragem normal, ainda podem surgir mensagens de erro.

Como resolver:

  1. Verifica na Consola qual é o plugin indicado e se a mensagem aparece ao recarregar ou numa paragem normal.
  2. Se ocorreu após um recarregamento, reinicia o servidor por completo. Depois disso, utiliza reinícios completos para alterações de plugins.
  3. Faz uma cópia de segurança da configuração do plugin e atualiza o plugin em causa em Plugins para uma versão adequada.
  4. Se a mensagem continuar a aparecer em paragens normais, comunica-a ao autor do plugin, com as linhas de registo correspondentes e a versão do teu servidor.

O Paper bloqueia um acesso a POI a partir de uma thread em segundo plano

Este é o aspeto da mensagem:

[ca.spottedleaf.moonrise.common.util.TickThread] Thread failed main thread check: Accessing poi chunk off-main, context=<Contexto da thread>

O que está por detrás: POI significa «Point of Interest» e designa locais importantes, como os postos de trabalho dos aldeões. Aqui, uma thread em segundo plano tenta aceder aos dados correspondentes de uma secção do mundo. O Paper só permite este acesso na thread de jogo responsável e cancela a ação em causa.

Como resolver:

  1. Abre o rasto de erro completo na Consola ou em Ficheiros, em logs/latest.log. São as linhas de chamadas por baixo da mensagem; verifica se algum plugin é referido.
  2. Cria uma cópia de segurança em Cópias de segurança. Atualiza o Paper em Versão e os plugins envolvidos em Plugins para versões compatíveis entre si.
  3. Reinicia o servidor por completo e observa se a mesma ação volta a desencadear o erro.
  4. Se a mensagem persistir sem relação com um plugin, envia ao Paper o rasto de erro limpo, a versão do servidor e os passos para o reproduzir. Se for indicado um plugin, comunica-a ao respetivo autor.

Os dados de jogador do LuckPerms ainda não estão prontos ao entrar

Este é o aspeto da mensagem:

Couldn't place player in world
java.lang.IllegalStateException: Capability has not been initialised

O que está por trás disto: A entrada falha numa consulta de permissões. O rasto do erro passa pelo LuckPerms; o seu armazenamento de dados por jogador, a chamada capability, ainda não está pronto neste momento. Por isso, o jogador em causa não é colocado com sucesso no mundo.

Como resolver:

  1. Na Consola ou em logs/latest.log, lê as mensagens do LuckPerms anteriores ao erro e anota os mods envolvidos.
  2. Verifica em Mods se o LuckPerms e o mod que faz a consulta são compatíveis com a tua versão de NeoForge e de Minecraft. Utiliza versões suportadas em conjunto.
  3. Reinicia completamente o servidor e testa novamente a entrada. Se o erro persistir, comunica-o aos autores dos mods envolvidos com o rasto do erro completo e as indicações de versão.

Uma consulta de fluidos não encontra o caldeirão esperado

Este é o aspeto da mensagem:

java.lang.IllegalStateException: Unexpected error: no cauldron at location BlockPos{<Posição>}

O que está por trás disto: Uma interface de fluidos espera um caldeirão na posição consultada, mas encontra outro estado de bloco. No rasto do erro, o Jade consulta esta interface para ler informações de fluidos. A consulta afetada é interrompida; por isso, podem faltar informações sobre este bloco.

Como resolver:

  1. Lê o rasto completo do erro em logs/latest.log e verifica em que ação sobre blocos a mensagem volta a surgir.
  2. Cria uma cópia de segurança em Cópias de segurança. Em Mods, acerta o Jade e os mods de fluidos envolvidos, bem como a versão de NeoForge, para versões suportadas em conjunto.
  3. Reinicia completamente e repete a ação. Se o erro persistir, comunica a ação exata e o rasto do erro aos autores envolvidos.

MoreRelics calcula um valor numérico inválido numa ação de combate

Como aparece a mensagem:

Exception caught during firing event: max is NaN

O que está por trás: NaN significa «Not a Number», um valor de cálculo inválido. O MoreRelics passa este valor, numa ação de combate, como limite máximo a uma verificação numérica. A verificação rejeita-o e o processamento do evento afetado é interrompido; o servidor continua depois a processar outros eventos.

Como resolver:

  1. Na Consola ou em logs/latest.log, lê o rasto de erro completo e anota a ação que o desencadeia.
  2. Cria uma cópia de segurança em Cópias de segurança. Em Mods, verifica se existe uma versão do MoreRelics compatível com o teu Modpack e com o NeoForge.
  3. Reinicia por completo e testa a mesma ação. Se o erro persistir, comunica-o ao autor com o rasto de erro, a seleção de mods e os itens ou efeitos utilizados.

O Citizens falha ao enviar dados de pacotes por causa de um valor vazio

Como aparece a mensagem:

java.lang.NullPointerException
    at Citizens-<Version>.jar//net.citizensnpcs.PacketEventsHook.<Method>(<File>:<Line>)

O que está por trás: Ao enviar dados de pacotes, o Citizens acede, através da sua ligação ao PacketEvents, a um valor em falta. O Java chama a este valor vazio null e termina com uma NullPointerException. O processamento do pacote afetado falha; as atualizações de NPCs, isto é, personagens controladas pelo computador, podem por isso ficar incompletas.

Como resolver:

  1. Lê o rasto de erro completo em logs/latest.log e anota em que ação do NPC o erro ocorre.
  2. Em Cópias de segurança, guarda o estado atual. Em Plugins, verifica as versões do Citizens, do PacketEvents e do software do teu servidor que são compatíveis entre si.
  3. Se necessário, substitui os ficheiros em Ficheiros, reinicia por completo e testa a mesma ação. Se o erro persistir, comunica ao autor o rasto de erro e as indicações de versão.

O NovaSync não encontra o auxiliar para as atualizações do sistema operativo

Como aparece a mensagem:

[NovaSyncPlugin] [os-updates] helper start failed subcmd=status err=IOException:Cannot run program "sudo": Exec failed, error: 2 (No such file or directory)

O que está por trás: O NovaSync tenta iniciar um programa auxiliar externo para as atualizações do sistema operativo. Para isso, o plugin chama o sudo, um programa para executar comandos com outros direitos de utilizador. O ambiente do servidor não encontra este programa, pelo que a preparação ou a consulta de estado da função de atualização falham. O servidor de jogo continua a funcionar.

Como resolver:

  1. Na Consola ou em Ficheiros, em logs/latest.log, lê a mensagem completa e anota a hora.
  2. Consulta o guia da tua versão instalada do NovaSync para ver os requisitos de os-updates e o auxiliar necessário.
  3. Abre um ticket e indica a hora da mensagem, bem como a versão do plugin, para esclarecer a disponibilidade do auxiliar no ambiente do teu servidor.

Bom saber: A mensagem diz respeito à função de atualização do sistema operativo do NovaSync, não à atualização dos teus plugins de Minecraft.

O ProtocolLib não consegue associar um relatório de erro

Este é o aspeto da mensagem:

[ProtocolLib] Error filtering reports: java.lang.IllegalArgumentException: Cannot find report name for Plugin %s tried to register listener for unknown packet %s

O que está por trás disto: O ProtocolLib ajuda outros plugins a processar pacotes de rede, as mensagens entre o servidor e o cliente de jogo. Aqui, falha adicionalmente a associação de um relatório de diagnóstico. O relatório diz respeito ao registo de um tipo de pacote desconhecido. O servidor continua a funcionar; a função de pacotes afetada e o respetivo diagnóstico têm de ser verificados.

Como resolver:

  1. Na Consola ou em logs/latest.log, lê as linhas imediatamente antes e depois da mensagem. Procura aí o plugin e o tipo de pacote envolvidos.
  2. Verifica as versões de servidor suportadas pelo ProtocolLib e por esse plugin. Atualiza ambos em Plugins para versões compatíveis.
  3. Para o servidor antes de substituir os ficheiros e reinicia-o depois por completo. Volta a testar a função anteriormente afetada.
  4. Se a mensagem persistir, envia ao autor do plugin o bloco de erro completo e as versões utilizadas.

O EliteMobs não consegue ativar a função de munições

Este é o aspeto da mensagem:

[EliteMobs] Cannot enable native ammunition for <Connection>: java.util.NoSuchElementException: packet_handler

O que está por trás disto: O EliteMobs tenta configurar a sua função nativa de munições para uma ligação. Um handler é uma etapa de processamento interna para dados de rede. A etapa esperada, com o nome packet_handler, não existe no local consultado. Por isso, esta funcionalidade parcial não é ativada; o servidor continua a funcionar.

Como resolver:

  1. Na Consola ou em logs/latest.log, lê as mensagens adjacentes. Presta atenção a erros anteriores na criação da ligação.
  2. Compara as versões de servidor suportadas pelo EliteMobs com a tua Versão. Verifica também as dependências indicadas pelo autor.
  3. Para o servidor e atualiza o EliteMobs em Plugins para uma versão compatível. Depois, reinicia o servidor por completo e testa a função afetada.
  4. Se o erro persistir, comunica-o ao autor do EliteMobs com o bloco de erro completo, a versão do servidor e a lista de plugins. Estes dados ajudam a delimitar a etapa de processamento em falta.

O LuckPerms bloqueia um login permitido de forma contraditória

Este é o aspeto da mensagem:

[LuckPerms] Player connection was re-allowed for <Player-ID>

O que está por trás disto: Durante uma entrada, os plugins tomaram decisões contraditórias. O LuckPerms bloqueia a ligação novamente permitida para proteger o seu processamento de permissões. A entrada afetada falha; o servidor continua a funcionar.

Como resolver:

  1. Na Consola ou em logs/latest.log, lê as mensagens imediatamente antes da entrada falhada. Procura erros de carregamento de dados e mensagens dos plugins de login.
  2. Se for mencionado um erro de base de dados ou de carregamento de dados, resolve primeiro esse erro. Depois, verifica qual plugin de login anula uma recusa anterior.
  3. Atualiza os componentes afetados em Plugins para versões compatíveis entre si e com a versão do servidor. Para o servidor antes da substituição e reinicia-o depois.
  4. Testa novamente a entrada. Se o conflito persistir, envia aos autores dos plugins envolvidos o bloco de erro completo e a lista de plugins.

Bom saber: Não desatives a verificação de login para contornar o conflito.

Apotheosis: uma ação sobre um bloco falha por causa de um item vazio

Este é o aspeto da mensagem:

Failed to handle packet <Packet>, suppressing error
java.lang.IllegalArgumentException: Expected resource to be non-empty: minecraft:air [0]
at <Loader>/dev.shadowsoffire.apotheosis.affix.salvaging.<Call>

O que está por trás: Numa ação sobre um bloco, o Apotheosis chega à sua função de desmontagem. Nesse processo, é passada uma pilha de itens vazia à interface de transferência do NeoForge, que exige um item existente. Por isso, a interação é cancelada, enquanto o servidor continua a funcionar. O stacktrace, ou seja, a cadeia de chamadas por baixo da mensagem de erro, passa aqui pelo Apotheosis e pelo NeoForge.

Como resolver:

  1. Guarda o estado atual em Cópias de segurança. Anota qual a ação sobre o bloco que desencadeia a mensagem e evita-a por agora.
  2. Abre a mensagem completa na Consola ou através de Ficheiros, em logs/latest.log. Guarda também as linhas anteriores ao erro.
  3. Verifica em Mods se o Apotheosis e as mods de que necessita são compatíveis com a tua versão do Minecraft e do NeoForge. Num Modpack, usa uma versão do pack que seja coerente. Pára o servidor antes de substituir os ficheiros e reinicia-o depois.
  4. Se a mensagem persistir, envia ao autor da mod o registo de erro completo, as versões instaladas e a ação que desencadeia o problema.

ProtocolLib: plugin consulta o UUID de um jogador temporário

Este é o aspeto da mensagem:

[<Plugin>] Unhandled exception occurred in onPacketSending(PacketEvent) for <Plugin>
java.lang.UnsupportedOperationException: The method getUniqueId is not supported for temporary players.

O que está por trás disto: o ProtocolLib disponibiliza objetos de jogador temporários durante o estabelecimento da ligação. O identificador único da conta, o UUID, ainda não pode ser consultado através desse objeto. Mesmo assim, um plugin tenta fazê-lo ao enviar um pacote. O respetivo handler de pacotes, ou seja, a função de processamento responsável, é interrompido por isso; o servidor continua a funcionar.

Como resolver:

  1. Lê na Consola qual é o plugin indicado depois de „for". Guarda o rasto de erro completo de logs/latest.log.
  2. Verifica em Plugins, para esse plugin e para o ProtocolLib, o suporte da Versão do teu servidor. Usa edições compatíveis entre si.
  3. Pára o servidor antes de substituir os ficheiros. Depois, reinicia-o por completo e testa novamente a entrada.
  4. Se o erro persistir, comunica-o ao autor do plugin afetado, com o rasto de erro completo, as versões instaladas e a ação que o desencadeia.

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.