Cuando un plugin o un mod se topa con un error de programa durante el funcionamiento, Java escribe un mensaje de error con un stacktrace en el log. El stacktrace es la lista de líneas „at“ que aparece debajo de la línea del error. Muestra qué parte del programa se estaba ejecutando y, por lo general, delata el plugin o el mod responsable. La mayoría de estos errores no paralizan el servidor, pero una función deja de funcionar, y los errores repetidos llenan la consola.
Cada apartado de abajo trata un mensaje: qué aspecto tiene, qué hay detrás y qué puedes hacer. Encontrarás el mensaje completo en la Consola o en Archivos, dentro de logs/latest.log. Lee también las líneas justo anteriores y posteriores. Antes de modificar archivos de configuración o del mundo, o de reemplazar plugins, crea una copia en Copias de seguridad. Lo mejor es reemplazar los archivos de los plugins con el servidor detenido.
NullPointerException: un plugin o un mod accede a un valor inexistente
Así se ve el mensaje:
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//<Paquete>.<Clase>.<Método>(<Clase>.java:<Línea>)
Qué hay detrás: Un plugin o un mod quería trabajar con un objeto que en ese punto no existe. Java llama a ese valor vacío «null». Después de «Cannot invoke» aparece el método al que se llamó y después de «because» el valor que falta, en el ejemplo los datos adicionales de un objeto. Las líneas «at» de debajo se llaman stacktrace: la cadena de llamadas hasta el error. La primera señala al causante. El servidor sigue funcionando, solo se interrumpe la acción afectada.
Cómo solucionarlo:
- Abre el mensaje completo en la Consola o en
logs/latest.logy lee la primera línea «at». - En el caso de los plugins, ahí aparece un nombre de archivo como
<Plugin>.jar; en el de los mods, el archivo del mod entre corchetes. Si solo aparecen partes del servidor comoorg.bukkitonet.minecraft, sigue leyendo hasta el primer nombre de plugin o de mod. - Actualiza ese plugin en Plugins o ese mod en Mods. Los archivos que hayas subido tú mismo los sustituyes en Archivos, dentro de
plugins/omods/. - Si el error persiste después de la actualización, repórtalo al autor con el mensaje completo y la acción en la que aparece.
Conviene saber: Si en servidores con mods aparece pl:mixin:APP:<mod>.mixins.json en la línea, ese mod ha modificado esa parte mediante Mixin (una intervención en partes del juego ajenas) y es un buen segundo sospechoso.
«Could not pass event»: un plugin falla durante un evento del juego
Así se ve el mensaje:
Could not pass event PlayerInteractEvent to <Plugin> v<Versión>
java.lang.NoSuchMethodError: 'java.util.Map org.bukkit.inventory.PlayerInventory.addItem(org.bukkit.inventory.ItemStack[])'
at <Plugin>.jar//<Paquete>.<Clase>.<Método>(<Clase>.java:<Línea>)
Qué hay detrás: Los plugins reaccionan a eventos como una conexión, un clic en el inventario o el daño. Si un plugin ha lanzado una excepción durante uno de ellos, es decir, un error de Java que interrumpe el proceso, el servidor la captura y escribe este mensaje. Después de «to» aparecen el plugin y la versión, y antes de eso, el evento. Lo decisivo es la línea de debajo: «NoSuchMethodError» o «NoSuchFieldError» significa que el plugin está compilado para otra versión del servidor y busca una función que no existe así. Otros tipos de error suelen indicar un fallo en el propio plugin. El servidor sigue funcionando, pero la función del plugin falla en ese evento.
Cómo solucionarlo:
- En la Consola, lee el nombre y la versión del plugin después de «to» y la línea de error justo debajo.
- Comprueba en Versión qué versión del servidor está en uso y busca en la página del plugin una edición que admita exactamente esa versión.
- Sube la nueva edición en Plugins y reinicia el servidor.
- Si el error persiste, repórtalo al autor del plugin con la línea «Could not pass event …» y la línea de error de debajo.
Más detalles sobre «NoSuchMethodError» y «NoSuchFieldError»: El plugin no es compatible con la versión del servidor.
«Task … generated an exception»: una tarea del plugin falla en segundo plano
Así se ve el mensaje:
[<Plugin>] Task #46 for <Plugin> v<Versión> generated an exception
java.lang.IllegalArgumentException: missing required data class org.bukkit.Color
Qué hay detrás: Los plugins programan tareas (tasks) que se ejecutan con regularidad, por ejemplo mostrar partículas, actualizar hologramas o guardar datos. Una de esas tareas se ha interrumpido con un error. Si ocurre continuamente, a menudo cada segundo, el plugin normalmente no es compatible con la versión del servidor instalada. Es algo típico después de una actualización del servidor o del plugin. El servidor sigue funcionando, pero la función del plugin falla en parte y la consola se llena de mensajes.
Cómo solucionarlo:
- Lee el nombre del plugin después de «for» y la línea de error de debajo.
- Comprueba en Plugins si existe una edición más reciente de ese plugin para tu versión del servidor, súbela y reinicia.
- Si no hay ninguna edición adecuada, desactiva el plugin temporalmente. Para ello, mueve el archivo .jar en Archivos desde la carpeta
plugins/a una carpeta aparte y reinicia. De lo contrario, el error continuo ralentiza el servidor. - Después del reinicio, comprueba en la Consola que el mensaje ya no aparece.
Conviene saber: Si debajo del mensaje aparece «NoSuchMethodError» o «NoSuchFieldError», casi siempre es una cuestión de versión. Los demás tipos de error repórtalos al autor si también aparecen con la edición más reciente.
Un comando o una tarea del plugin se interrumpe con un error
Así se ve el mensaje:
[Essentials] Command <Comando> failed:
[<Plugin>] Plugin <Plugin> v<Versión> generated an exception while executing task <Número>
Error executing task on Server
Qué hay detrás: Un plugin se ha interrumpido con una excepción durante un comando o una tarea programada. Las tres líneas de arriba son formas típicas de este mensaje. El servidor sigue funcionando, pero la función afectada del plugin no. La causa real está en las líneas de debajo; en el caso de errores anidados, en la línea «Caused by». Si ahí aparece «Cannot perform command async», un plugin ha lanzado un comando desde un hilo en segundo plano. Un hilo (thread) es una línea de trabajo paralela; sin embargo, los comandos solo puede ejecutarlos el hilo principal del servidor. Se trata de un error del plugin.
Cómo solucionarlo:
- Busca debajo del mensaje la línea «Caused by» o la primera línea con «Exception» o «Error».
- Identifica el plugin: aparece en el propio mensaje o en las líneas «at» como
<Plugin>.jar. - Actualiza el plugin en Plugins a una edición para tu versión del servidor y reinicia.
- Prueba el comando de nuevo. Si el error persiste, repórtalo al autor con el comando, la hora y el mensaje completo.
Conviene saber: «NoSuchFieldError» con el nombre de una partícula o de un atributo significa que el plugin usa un nombre que tu versión del servidor ya no reconoce. En ese caso, solo ayuda una edición más reciente del plugin.
ClassCastException: dos mods o plugins no son compatibles entre sí
Así se ve el mensaje:
java.lang.ClassCastException: class <PaqueteA>.<ClaseA> cannot be cast to class <PaqueteB>.<ClaseB>
Qué hay detrás: Java trabaja con tipos de datos fijos. Aquí un mod o un plugin esperaba un objeto de un tipo determinado, pero otro componente le ha entregado uno distinto. Los nombres de paquete delante de los nombres de clase, por ejemplo net.<author>.<mod>, suelen indicar qué dos mods o plugins están implicados. Es algo típico cuando se ha actualizado un mod y otro que depende de él no. A menudo solo falla una función, por ejemplo el botín de los cofres o un clic en el inventario.
Cómo solucionarlo:
- Lee los dos nombres de clase del mensaje y asígnalos a los mods o plugins mediante los nombres de paquete.
- Comprueba cuál de los dos se actualizó en último lugar.
- Lleva ambos a versiones que sean compatibles entre sí: actualiza los dos o devuelve los dos a la versión anterior. Las páginas de los proyectos indican qué combinaciones son compatibles.
- Si usas un Modpack, es mejor actualizar el modpack completo en lugar de mods sueltos.
- Reinicia y comprueba si el mensaje vuelve a aparecer en la misma acción.
Más sobre conflictos de mods: Errores de mods en Forge, NeoForge y Fabric.
ArrayIndexOutOfBoundsException: acceso a una entrada de lista inexistente
Así se ve el mensaje:
java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at <Plugin>.jar//<Paquete>.Util.getBukkitVersion(Util.java:<Línea>)
Qué hay detrás: Un plugin o un mod quería leer una entrada de una lista que es más corta. Java cuenta desde 0: «Index 3 … length 3» significa que solo existen las entradas de la 0 a la 2. Los desencadenantes habituales son un comando con muy pocos argumentos o una línea de configuración a la que le faltan valores. Además, los plugins antiguos tropiezan cuando leen la versión del servidor a partir de un nombre interno que las versiones más recientes del servidor construyen de otra forma. Entonces en la línea «at» suele aparecer algo con «Version», como en el ejemplo. El servidor sigue funcionando.
Cómo solucionarlo:
- Lee la primera línea «at» debajo del mensaje. Indica el plugin o el mod.
- Si el error apareció con un comando, comprueba en la ayuda del plugin si falta algún argumento.
- Si has cambiado la configuración poco antes, compara la línea afectada con la plantilla de la página del plugin o con una copia de seguridad.
- Actualiza el plugin en Plugins y reinicia. Si el error persiste, repórtalo al autor.
Ayuda con ajustes incorrectos: El archivo de configuración de un plugin es incorrecto.
NumberFormatException: un texto debería ser un número
Así se ve el mensaje:
java.lang.NumberFormatException: For input string: "%vault_eco_balance_fixed%"
java.lang.NumberFormatException: For input string: "craftbukkit"
Qué hay detrás: El juego, un mod o un plugin quiso leer un valor de texto como número, y el texto no era un número. Entre las comillas aparece lo que llegó realmente. La causa puede ser una configuración, un valor de datos inesperado o un error de versión o de programa. Dos casos se reconocen por el valor: un marcador de posición con signo de porcentaje, como el de arriba, no se ha sustituido. Normalmente falta entonces la extensión adecuada de PlaceholderAPI, el plugin que rellena esos marcadores, o el plugin que proporciona el valor. Una palabra como craftbukkit indica que un plugin antiguo lee mal la versión del servidor.
Cómo solucionarlo:
- Revisa el stacktrace completo y actualiza el componente que se menciona en él.
- Si se trata de un marcador de posición: prueba en el juego con
/papi parse me <marcador>si devuelve un valor. Si no, instala la extensión de PlaceholderAPI adecuada, por ejemplo con/papi ecloud download <nombre>, y cárgala con/papi reload. - Si el mensaje menciona un archivo o un ajuste, compara el valor con la configuración predeterminada del plugin.
- Reinicia y vuelve a ejecutar la acción.
ArrayIndexOutOfBoundsException sin más detalles
Así se ve el mensaje:
[<Plugin>] Error occurred while loading item: 2
java.lang.ArrayIndexOutOfBoundsException
Qué hay detrás: Un plugin o un mod ha usado un índice de lista no válido, como en la sección anterior. Aquí, sin embargo, faltan el índice y la longitud. Esto ocurre cuando el mismo error se produce con mucha frecuencia: entonces Java omite los detalles por motivos de rendimiento. La línea anterior suele indicar qué plugin quería hacer qué, en el ejemplo cargar una entrada. La primera línea del stacktrace de debajo, si existe, nombra al causante.
Cómo solucionarlo:
- Lee la línea inmediatamente anterior al mensaje. Ahí suele aparecer el plugin entre corchetes.
- Lee la primera línea del stacktrace bajo el mensaje.
- Si faltan ambas, busca en
logs/latest.log, más arriba, la primera aparición. Ahí el error suele estar aún completo. Los registros antiguos están comprimidos en la carpetalogs/. - Actualiza el plugin o el mod mencionado primero. Si la línea anterior nombra una entrada concreta, revísala en la configuración del plugin.
- Si el error persiste, comunícaselo al autor.
ExceptionInInitializerError: no se puede inicializar la clase de un plugin o mod
Así se ve el mensaje:
Exception in thread "ForkJoinPool-3-worker-1" java.lang.ExceptionInInitializerError
Caused by: <Tipo de error>: <Mensaje>
Qué hay detrás: Java inicializa cada clase, es decir, cada componente de un programa, una sola vez la primera vez que se usa. Justo en ese momento ha fallado una clase de un plugin o de un mod. Después queda inutilizable durante esa ejecución del servidor, por eso a menudo siguen más errores como «NoClassDefFoundError» con el mismo nombre de clase. La causa real y, normalmente, también el plugin o el mod afectado los indica la cadena «Caused by» que aparece debajo. Según dónde ocurra, deja de funcionar una función o el plugin o el mod no se carga en absoluto.
Cómo solucionarlo:
- En la Consola o en
logs/latest.log, lee la primera línea «Caused by» bajo el mensaje. - A partir de las líneas «at» que hay debajo, identifica el plugin o el mod, por ejemplo por el nombre del archivo con
.jar. - Actualízalo o sustitúyelo por una versión que encaje con la versión de tu servidor y con tu software de servidor.
- Reinicia el servidor. La clase solo se inicializa de nuevo en el próximo arranque.
Si tienes dudas con las versiones, te ayuda esto: El plugin no es compatible con la versión del servidor.
Error interno en un plugin, por ejemplo al guardar
Así se ve el mensaje:
[MultiWorld] ERROR HAPPEND: <Mensaje>
Unable to save player profile for <Jugador>
<Plugin> v<Versión> generated an exception whilst handling plugin message
Qué hay detrás: Un plugin ha encontrado un error en una tarea propia, por ejemplo al guardar, al procesar un mensaje o al iniciarse. Los mensajes de plugin son paquetes de datos que, por ejemplo, un proxy como BungeeCord o Velocity intercambia con el servidor. El nombre del plugin aparece en el mensaje entre corchetes o al principio de la línea. Según el error, solo falla esa acción o el plugin se desactiva. Si se trata de guardar, ocúpate pronto para no perder datos.
Cómo solucionarlo:
- Lee el nombre del plugin y las líneas justo debajo del mensaje en la Consola.
- Actualiza el plugin en Plugins y reinicia.
- Si el error persiste, crea una copia de seguridad, quita el plugin como prueba y comprueba si el mensaje desaparece.
- Comunica el error al autor del plugin con las líneas de la consola.
Si el guardado falla repetidamente: El plugin no puede guardar la base de datos o los archivos.
Informe de error de Skript con #!#!: un script no se carga
Así se ve el mensaje:
#!#! Current node: <Línea del archivo .sk>
#!#! End of Error.
Qué hay detrás: Skript es un plugin con el que escribes funciones del servidor en archivos de texto sencillos con la extensión .sk. Si detecta un error grave al cargar un script o un addon, escribe un informe cuyas líneas empiezan todas por #!#!. Causas frecuentes: un addon como skript-reflect o SkBee no es compatible con la versión de Skript instalada, o se ha sustituido un archivo de plugin con el servidor en marcha. En ese caso aparece «zip file closed» en el informe. El script afectado no funciona, pero el servidor sigue en marcha.
Cómo solucionarlo:
- En el informe, lee la línea «Current node» (indica el archivo .sk afectado) y la línea «Caused by».
- Comprueba en las páginas de los proyectos qué versiones de los addons encajan con tu versión de Skript, y lleva Skript y los addons a versiones compatibles entre sí.
- Sustituye los archivos de plugin solo con el servidor detenido y reinícialo después.
- Carga el script con
/sk reload <archivo>y lee la salida en la Consola.
Conviene saber: Los scripts están en Archivos, en la carpeta plugins/Skript/scripts/. Haz una copia de un archivo antes de modificarlo.
IndexOutOfBoundsException: «must be less than size»
Así se ve el mensaje:
Caused by: java.lang.IndexOutOfBoundsException: index (1) must be less than size (1)
Qué hay detrás: El juego, un mod o un plugin ha consultado una entrada de lista que no existe. «index (1) must be less than size (1)» significa: la lista tiene exactamente una entrada, la número 0, y se pidió la número 1. Puede estar implicada una configuración, pero el mensaje por sí solo no lo demuestra. Si delante pone «Caused by:», es la causa de un error notificado más arriba. Lo que deja de funcionar lo muestra ese mensaje superior.
Cómo solucionarlo:
- Lee el stacktrace completo en
logs/latest.log, incluido el mensaje de error de encima. - Busca la primera línea «at» que nombre un componente externo, es decir, un plugin o un mod en lugar de Java o una biblioteca como
java.baseocom.google.common. - Actualiza ese componente y reinicia.
- Solo si el contexto apunta a una lista concreta, por ejemplo entradas de menú o recompensas, revisa su configuración en busca de entradas que falten o estén vacías.
«Asynchronous Save Players»: el plugin guarda desde el hilo equivocado
Así se ve el mensaje:
Asynchronous Save Players! Blocking thread until it returns
java.lang.IllegalStateException
at io.papermc.paper.util.MCUtil.ensureMain(MCUtil.java:<Línea>)
Qué hay detrás: Un plugin ha iniciado el guardado de los datos de todos los jugadores desde un hilo en segundo plano, es decir, desde un hilo de trabajo paralelo al hilo principal que calcula el mundo. Esto no está previsto. Paper bloquea el hilo hasta que termina el guardado y escribe esta advertencia. Se trata de un error del plugin que puede causar pequeños tirones. El servidor sigue funcionando.
Así lo solucionas:
- Lee las líneas «at» que hay debajo del mensaje. Las primeras pertenecen a Paper y Minecraft (
io.papermc,net.minecraft); lo que buscas es la primera línea «at» que menciona un plugin. - Actualiza ese plugin en Plugins y reinicia.
- Si la advertencia persiste, informa del error al autor del plugin con el mensaje completo.
Bueno saber: Puedes tomarte con calma una advertencia aislada. Si aparece con regularidad y los jugadores notan tirones, merece la pena actualizar.
«Unhandled exception executing command»: un comando de un plugin se interrumpe
Así se ve el mensaje:
org.bukkit.command.CommandException: Unhandled exception executing command '<comando>' in plugin <Plugin> v<Versión>
Caused by: <Tipo de error>: <Mensaje>
Qué hay detrás: Un plugin ha lanzado un error al ejecutar uno de sus comandos. El comando y el plugin aparecen en el mensaje. Normalmente el plugin no es compatible con la versión del servidor o con otro plugin del que depende. Quien ha escrito el comando suele ver en el chat solo un aviso general de un error interno. El comando no se ha ejecutado, pero el servidor sigue en marcha.
Cómo solucionarlo:
- Lee la línea «Caused by» bajo el mensaje.
- Comprueba tu versión del servidor en Versión y actualiza el plugin en Plugins a una versión adecuada para ella.
- Si la línea de error menciona otro plugin del que depende el plugin, actualízalo también a una versión compatible.
- Reinicia y prueba el comando. Si el error sigue apareciendo, repórtalo al autor del plugin con esa línea.
Más sobre dependencias: El plugin necesita otro plugin.
Error de comando con «[ACF]» en el registro
Así se ve el mensaje:
[<Plugin>] [ACF] Exception in command: <comando>
[<Plugin>] [ACF] java.lang.NoSuchMethodError: <Método>
Qué hay detrás: Muchos plugins crean sus comandos con una biblioteca ya hecha, el Aikar Command Framework (ACF). Si un comando se interrumpe con una excepción, ACF muestra el error junto con el stacktrace, con el nombre del plugin delante de cada línea. Por tanto, el nombre del primer corchete es el plugin afectado, no ACF. Si en la salida aparece «IncompatibleClassChangeError» o «NoSuchMethod», el plugin no es compatible con la versión del servidor. El comando no se ha ejecutado, pero el servidor sigue funcionando.
Así lo solucionas:
- Lee el nombre del plugin en el primer corchete y la primera línea de error con «Exception» o «Error».
- Actualiza el plugin en Plugins a una versión para la versión de tu servidor.
- Reinicia y prueba el comando.
- Si el error persiste, infórmalo al autor del plugin con la primera línea de error.
Bueno saber: No tienes que instalar ni actualizar ACF por tu cuenta. Viene incluido en cada plugin.
GravesX: error en una tarea en segundo plano
Así se ve el mensaje:
[GravesX] Async task for GravesX v<Versión> generated an exception
java.lang.NullPointerException: Cannot invoke "<Método>" because "version2" is null
Qué hay detrás: GravesX crea una tumba con los objetos de un jugador cuando muere. El plugin lanza una NullPointerException en una tarea en segundo plano, por ejemplo al comparar dos números de versión cuando falta un valor («version2»). Es un error del propio plugin, no un problema del servidor ni del alojamiento. El servidor sigue funcionando con normalidad.
Así lo solucionas:
- Actualiza GravesX en Plugins a la última versión y reinicia.
- Comprueba en la Consola si el mensaje vuelve a aparecer.
- Si el error continúa, infórmalo al proyecto GravesX con el mensaje completo.
- Si quieres desactivar el plugin como prueba hasta que haya una corrección, vacía antes las tumbas abiertas. Sin el plugin no se pueden abrir de la forma habitual.
FastAsyncWorldEdit: el comando ha fallado internamente
Así se ve el mensaje:
An unexpected error while handling a FastAsyncWorldEdit command
java.lang.NullPointerException
Qué hay detrás: FastAsyncWorldEdit (FAWE) es una variante rápida de WorldEdit con la que editas grandes áreas de una sola vez. Con un comando, FAWE se ha encontrado con un valor que faltaba. La operación no se ha ejecutado por completo, así que el cambio puede haber llegado al mundo solo en parte. El servidor sigue funcionando.
Así lo solucionas:
- Comprueba en el juego qué ha cambiado el comando. Con
//undopuedes deshacer el último paso si hace falta. - Actualiza FAWE en Plugins a una edición para la versión de tu servidor y reinicia.
- Ejecuta el comando de nuevo.
- Si el error persiste, informa a los desarrolladores de FAWE con el stacktrace completo y el comando exacto.
Fundamentos para deshacer cambios: WorldEdit: construir y deshacer.
Bueno saber: No instales FAWE además del WorldEdit normal. Los dos juntos no son compatibles; usa solo uno.
LibreLogin: el comando ha fallado internamente
Así se ve el mensaje:
[LibreLogin] An unexpected exception occurred while performing command …
Qué hay detrás: LibreLogin es un plugin de inicio de sesión: los jugadores se identifican con una contraseña, a menudo en servidores en modo offline. Al ejecutar uno de sus comandos, por ejemplo para iniciar sesión o registrarse, se ha interrumpido con una excepción inesperada. Para el jugador el comando falla. Si afecta al inicio de sesión, no puede avanzar hasta que el comando vuelva a funcionar. El servidor en sí sigue funcionando.
Así lo solucionas:
- Lee en la Consola la excepción que hay debajo del mensaje y anota qué comando era.
- Actualiza LibreLogin en Plugins y reinicia.
- Prueba el comando de nuevo con un jugador.
- Si el error persiste, informa de la excepción junto con el comando al autor del plugin.
Si la excepción menciona una base de datos: El plugin no puede abrir su base de datos.
LibreLogin: el manejador de red está registrado por duplicado
Así se ve el mensaje:
java.lang.IllegalArgumentException: Duplicate handler name: pe-decoder-librelogin
Qué hay detrás: Cada conexión de un jugador pasa por una cadena de pasos de procesamiento, el pipeline de red. LibreLogin o la biblioteca PacketEvents intenta incorporar por segunda vez el mismo paso, un decoder para los datos entrantes. Entonces las conexiones nuevas pueden fallar. Los desencadenantes típicos son dos archivos de LibreLogin en la carpeta de plugins, versiones incompatibles de LibreLogin y PacketEvents o una recarga de los plugins con el servidor en marcha.
Así lo solucionas:
- En Archivos, abre la carpeta
plugins/y comprueba que LibreLogin solo aparezca una vez. Elimina las copias antiguas después de crear una copia de seguridad. - Actualiza LibreLogin y, si lo tienes instalado, PacketEvents al mismo tiempo.
- Detén el servidor y reinícialo por completo. Una recarga con
/reloado con un gestor de plugins no basta aquí. - Prueba la entrada con un jugador.
Más sobre archivos duplicados: El archivo del plugin está dañado o duplicado.
LightAntiCheat-Plus: error en una comprobación de movimiento
Así se ve el mensaje:
[LightAntiCheat-Plus] Exception in event bus subscription: <Check>
java.lang.UnsupportedOperationException: remove
Qué hay detrás: LightAntiCheat-Plus es un plugin anti-cheat que, entre otras cosas, comprueba los movimientos de los jugadores. Una de sus comprobaciones intenta vaciar una lista que no se puede modificar. Es un error del plugin. La comprobación afectada puede dejar de funcionar o dar resultados falsos, es decir, pasar por alto trampas o sospechar injustamente de jugadores honestos. El servidor sigue funcionando.
Así lo solucionas:
- Actualiza LightAntiCheat-Plus en Plugins y reinicia.
- Si el mensaje sigue apareciendo, desactiva hasta la corrección la comprobación afectada SpeedD en la configuración del plugin. La encuentras en Archivos, en la carpeta del plugin dentro de
plugins/. Haz antes una copia del archivo. - Reinicia y comprueba en la Consola que el mensaje ya no aparezca.
- Vuelve a activar la comprobación en cuanto haya una versión corregida.
Conviene saber: Mientras aparezca el mensaje, trata con cautela los casos sospechosos por movimiento.
MagicSpells informa de un error en un hechizo
Así se ve el mensaje:
[MagicSpells] AN EXCEPTION HAS OCCURED:
[MagicSpells] This error has been saved in the errors folder.
Error saving spellbook for player '<Player>'
Qué hay detrás: MagicSpells es un plugin para hechizos personalizados. Informa de un error al ejecutar o guardar hechizos, a menudo por una entrada de su configuración que esta versión no entiende. Los efectos funcionan mediante la biblioteca EffectLib; los mensajes con «Unexpected EffectLib Error» se refieren a esos efectos. Además, MagicSpells guarda un informe en la carpeta plugins/MagicSpells/errors. Si falla el guardado del libro de hechizos (spellbook), no se guarda el progreso de ese jugador.
Así lo solucionas:
- En Archivos, abre la carpeta
plugins/MagicSpells/errorsy el informe más reciente. Indica el hechizo y el ajuste. - Revisa ese ajuste en tus archivos de hechizos, por ejemplo por errores de escritura o valores de una versión anterior de MagicSpells. Haz antes una copia del archivo.
- Mantén MagicSpells y EffectLib actualizados y compatibles con la versión del servidor.
- Reinicia y prueba el hechizo.
SinglePlayerSleep: dormir en la cama no funciona
Así se ve el mensaje:
[SinglePlayerSleep] INTERNAL ERROR: Unable to process PlayerBedEnterEvent
Qué hay detrás: SinglePlayerSleep hace que pase la noche cuando duerme un solo jugador, en lugar de que tengan que acostarse todos. Al entrar en una cama, el plugin ha fallado. La función de dormir puede dejar de funcionar en ese intento y la noche no se salta. Normalmente la versión del plugin no coincide con la versión de Minecraft. El servidor sigue funcionando.
Así lo solucionas:
- Comprueba en Versión qué versión de Minecraft se está ejecutando.
- Actualiza SinglePlayerSleep en Plugins a una versión para esa versión y reinicia.
- Prueba en el juego: acuéstate de noche y comprueba si pasa la noche.
- Si el error persiste, comunica la excepción que aparece bajo el mensaje al autor del plugin.
Más información: Reglas de juego de Minecraft explicadas.
Conviene saber: Las versiones más recientes de Minecraft tienen una regla de juego propia que define qué porcentaje de jugadores debe dormir. Puede sustituir al plugin.
PacketEvents no puede engancharse a la conexión
Así se ve el mensaje:
PacketEvents failed to add a decoder to the netty pipeline
Qué hay detrás: PacketEvents es una biblioteca con la que otros plugins, por ejemplo de anti-cheat o de inicio de sesión, leen paquetes de red. Para ello incorpora un paso propio, un decoder, en el pipeline de red de cada conexión. Netty es la biblioteca de red con la que el servidor gestiona las conexiones. La incorporación ha fallado: otro manejador de red o una versión incompatible de PacketEvents bloquea el orden esperado. Los plugins que se basan en PacketEvents no funcionan correctamente para esa conexión.
Así lo solucionas:
- Actualiza al mismo tiempo PacketEvents, Geyser y Floodgate, así como los plugins de inicio de sesión y anti-cheat, a versiones para la versión de tu servidor.
- En Archivos, comprueba en la carpeta
plugins/que ningún archivo esté duplicado. - Detén el servidor y reinícialo por completo, sin recargar con el servidor en marcha.
- Prueba la entrada con Java y, si usas Geyser, también con Bedrock.
Para jugadores de Bedrock: Bedrock y Geyser: mensajes en el log.
StringIndexOutOfBoundsException: valor de texto vacío o demasiado corto
Así se ve el mensaje:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Qué hay detrás: Un plugin o un mod quería leer un carácter concreto de un texto, por ejemplo el primer carácter de un prefijo. Pero el texto es más corto; con «length 0» incluso está vacío. Con frecuencia, un valor de configuración esperado está vacío, como un prefijo, un color o un nombre que solo está escrito como ''. El servidor sigue funcionando; la función que necesita el texto deja de funcionar.
Así lo solucionas:
- En el stacktrace, lee la primera línea que contenga el nombre de un plugin o de un mod.
- En Archivos, abre la configuración de ese plugin en la carpeta
plugins/<Plugin>/y busca valores vacíos como''o entradas sin valor. Haz antes una copia del archivo. - Introduce un valor válido o usa el valor predeterminado de la plantilla del plugin.
- Actualiza el plugin y reinicia.
Más sobre ajustes erróneos: El archivo de configuración de un plugin es incorrecto.
«NoSuchFieldException: childHandler»: el plugin de red no es compatible con el servidor
Así se ve el mensaje:
java.lang.NoSuchFieldException: childHandler
Qué hay detrás: Netty es la biblioteca de red con la que el servidor acepta conexiones. Algunos plugins acceden directamente a partes internas de ella para engancharse a las conexiones. Aquí, un plugin de red busca el campo interno «childHandler», que no está disponible en la versión del servidor o de Netty instalada. Es decir, el plugin está compilado para otra build del servidor. Normalmente afecta a plugins de red, proxy o protocolo; su función deja de funcionar.
Así lo solucionas:
- Lee el stacktrace debajo del mensaje y busca el primer plugin de red, proxy o protocolo, por ejemplo ViaVersion, ProtocolLib o Geyser.
- Comprueba en Versión qué versión del servidor está en ejecución. La versión exacta del software del servidor (build) también aparece en las primeras líneas de
logs/latest.log. - Actualiza el plugin encontrado a una versión para esta build del servidor y reinicia.
- Si todavía no existe una versión adecuada, desactiva el plugin temporalmente hasta que el autor lo actualice.
Más detalles: El plugin no es compatible con la versión del servidor.
Las sugerencias con Tab de un comando de plugin no funcionan
Así se ve el mensaje:
Unhandled exception during tab completion for command '<Comando>' in plugin <Plugin>
Qué hay detrás: Al pulsar la tecla Tab, Minecraft pregunta al plugin responsable por las posibles sugerencias. En ese momento falla la función de sugerencias del plugin. El servidor sigue funcionando; solo faltan las sugerencias del comando afectado. El rastro de error que aparece debajo, el llamado stacktrace, muestra las llamadas de programa implicadas.
Cómo solucionarlo:
- Lee el mensaje completo en la Consola o en Archivos dentro de
logs/latest.log. Anota el plugin, el comando y el primer mensaje de error concreto que aparece debajo. - Comprueba tu versión del servidor en Versión e instala en Plugins una edición adecuada del plugin mencionado.
- Reinicia el servidor por completo y prueba de nuevo el mismo comando con la tecla Tab.
- Si el error persiste, envía al autor del plugin el rastro de error completo y describe en qué punto fallan las sugerencias.
StackOverflowError al evaluar una regla de búsqueda
Así se ve el mensaje:
Exception in thread "<Tarea en segundo plano>" java.lang.StackOverflowError
Qué hay detrás: Una expresión regular es una regla de búsqueda para texto, por ejemplo para filtros de comandos. Al comprobar esta regla, Java necesita demasiadas llamadas anidadas y llena la pila de llamadas. La tarea en segundo plano indicada se termina y su trabajo queda incompleto; el servidor sigue funcionando. StackOverflowError es un error distinto de que la memoria de Java esté llena.
Cómo solucionarlo:
- Abre el rastro de error completo en la Consola o en Archivos dentro de
logs/latest.log. Busca el plugin responsable a partir del nombre del hilo y de las llamadas del plugin. - Haz una copia de seguridad de sus ajustes y revisa las reglas de búsqueda o de comandos configurables. Simplifica la regla que provoca el fallo, si la has configurado tú.
- Actualiza el plugin en Plugins a una edición adecuada y reinicia el servidor por completo.
- Si la regla está integrada de forma fija, informa al autor con el rastro de error completo y la entrada con la que ocurre.
Paper bloquea «entity add» desde un hilo en segundo plano
Así se ve el mensaje:
Thread <Hilo> failed main thread check: entity add
Qué hay detrás: Paper comprueba si los cambios en el mundo del juego se ejecutan en el hilo correcto. Un hilo es una línea de ejecución propia del programa. Aquí una tarea en segundo plano intenta añadir una entidad al mundo y la comprobación de protección la detiene. La acción afectada falla; el servidor sigue funcionando.
Cómo solucionarlo:
- Abre el rastro de error completo en
logs/latest.log, en la Consola o en Archivos. El mensaje abreviado suele mostrar solo llamadas del servidor. - Sigue leyendo hasta la primera llamada del plugin y anota qué acción provocó el error.
- Instala en Plugins una edición de este plugin adecuada para la versión de tu servidor y reinicia el servidor por completo.
- Si el error sigue apareciendo, infórmale al autor del plugin con el rastro de error completo. La llamada del plugin debe trasladarse al hilo correcto.
Conviene saber: Deja activa la comprobación de protección. Desactivarla no soluciona el acceso erróneo al mundo.
¿Tu mensaje no aparece aquí?
Lee el mensaje completo, incluidas las líneas anteriores. Ahí suele figurar lo que el plugin estaba intentando hacer. En el stacktrace, los nombres de archivo de las líneas „at“, por ejemplo <Plugin>.jar, y los nombres de paquete delatan el plugin o el mod. Las líneas con java.base, net.minecraft, org.bukkit o io.papermc pertenecen a Java y al servidor. Crea una copia de seguridad, actualiza al causante y reinicia. Si no avanzas, abre un ticket e indica la hora del mensaje.