Lorsqu'un plugin ou un mod rencontre une erreur de programmation pendant l'exécution, Java écrit un message d'erreur avec une stacktrace dans le log. La stacktrace est la liste des lignes « at » sous la ligne d'erreur. Elle indique quelle partie du programme était en cours d'exécution et révèle ainsi généralement le plugin ou le mod responsable. La plupart de ces erreurs ne paralysent pas le serveur, mais une fonction cesse de marcher, et les erreurs répétées remplissent la console.

Chaque section ci-dessous traite un message : à quoi il ressemble, ce qui se cache derrière et ce que tu peux faire. Tu trouves le message complet dans la Console ou sous Fichiers dans logs/latest.log. Lis aussi les lignes juste avant et juste après. Avant de modifier des fichiers de configuration ou de monde ou de remplacer des plugins, crée une sauvegarde sous Sauvegardes. Le mieux est de remplacer les fichiers de plugin lorsque le serveur est arrêté.

NullPointerException : un plugin ou un mod accède à une valeur manquante

Voici à quoi ressemble le message :

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//<Paquet>.<Classe>.<Méthode>(<Classe>.java:<Ligne>)

Ce qui se passe : un plugin ou un mod a voulu travailler avec un objet qui n'existe pas à cet endroit. Java appelle cette valeur vide « null ». Après « Cannot invoke » figure la méthode appelée, après « because » la valeur manquante, ici les données supplémentaires d'un objet. Les lignes « at » en dessous forment la stacktrace : la chaîne des appels jusqu'à l'erreur. La première désigne le responsable. Le serveur continue de tourner, seule l'action concernée est interrompue.

Voici comment la corriger :

  1. Ouvre le message complet dans la Console ou dans logs/latest.log et lis la première ligne « at ».
  2. Pour les plugins, on y trouve un nom de fichier comme <Plugin>.jar, pour les mods le fichier du mod entre crochets. Si seules des parties du serveur comme org.bukkit ou net.minecraft apparaissent, continue de lire jusqu'au premier nom de plugin ou de mod.
  3. Mets à jour ce plugin dans Plugins ou ce mod dans Mods. Les fichiers que tu as importés toi-même se remplacent dans Fichiers, dans plugins/ ou mods/.
  4. Si l'erreur persiste après la mise à jour, signale-la à l'auteur avec le message complet et l'action au cours de laquelle elle survient.

Bon à savoir : si pl:mixin:APP:<mod>.mixins.json figure dans la ligne sur les serveurs de mods, ce mod a modifié cet endroit via Mixin (intervention dans des parties du jeu tierces) et constitue un bon deuxième suspect.

« Could not pass event » : un plugin plante lors d'un événement du jeu

Voici à quoi ressemble le message :

Could not pass event PlayerInteractEvent to <Plugin> v<Version>
java.lang.NoSuchMethodError: 'java.util.Map org.bukkit.inventory.PlayerInventory.addItem(org.bukkit.inventory.ItemStack[])'
	at <Plugin>.jar//<Paquet>.<Classe>.<Méthode>(<Classe>.java:<Ligne>)

Ce qui se passe : les plugins réagissent à des événements (events) comme une connexion, un clic dans l'inventaire ou des dégâts. Si un plugin a alors levé une exception, c'est-à-dire une erreur Java qui interrompt le déroulement, le serveur l'intercepte et écrit ce message. Après « to » figurent le plugin et sa version, avant lui l'événement. La ligne en dessous est déterminante : « NoSuchMethodError » ou « NoSuchFieldError » signifie que le plugin est conçu pour une autre version du serveur et cherche une fonction qui n'existe pas ainsi. Les autres types d'erreurs indiquent généralement un bug dans le plugin lui-même. Le serveur continue de tourner, la fonction du plugin échoue lors de cet événement.

Voici comment la corriger :

  1. Dans la Console, lis le nom du plugin et sa version après « to » ainsi que la ligne d'erreur juste en dessous.
  2. Vérifie dans Version quelle version du serveur est utilisée et cherche sur la page du plugin une édition qui prend exactement cette version en charge.
  3. Installe la nouvelle édition dans Plugins et redémarre le serveur.
  4. Si l'erreur persiste, signale-la à l'auteur du plugin avec la ligne « Could not pass event … » et la ligne d'erreur en dessous.

Pour plus de détails sur « NoSuchMethodError » et « NoSuchFieldError » : Le plugin ne correspond pas à la version du serveur.

« Task … generated an exception » : une tâche de plugin échoue en arrière-plan

Voici à quoi ressemble le message :

[<Plugin>] Task #46 for <Plugin> v<Version> generated an exception
java.lang.IllegalArgumentException: missing required data class org.bukkit.Color

Ce qui se passe : les plugins planifient des tâches (tasks) qui s'exécutent régulièrement, par exemple afficher des particules, rafraîchir des hologrammes ou enregistrer des données. L'une de ces tâches s'est interrompue avec une erreur. Si cela se produit en continu, souvent à chaque seconde, le plugin n'est en général pas compatible avec la version du serveur installée. C'est typique après une mise à jour du serveur ou du plugin. Le serveur continue de tourner, mais la fonction du plugin est en partie défaillante et la console se remplit.

Voici comment la corriger :

  1. Lis le nom du plugin après « for » et la ligne d'erreur en dessous.
  2. Vérifie dans Plugins s'il existe une édition plus récente de ce plugin pour ta version du serveur, installe-la et redémarre.
  3. S'il n'existe pas d'édition adaptée, désactive temporairement le plugin. Pour cela, déplace le fichier .jar dans Fichiers du dossier plugins/ vers un dossier distinct et redémarre. Sinon, l'erreur permanente ralentit le serveur.
  4. Après le redémarrage, vérifie dans la Console que le message ne réapparaît pas.

Bon à savoir : si « NoSuchMethodError » ou « NoSuchFieldError » figure sous le message, il s'agit presque toujours d'une question de version. Pour les autres types d'erreurs, signale-les à l'auteur si la toute dernière édition les affiche aussi.

Une commande ou une tâche de plugin s'interrompt avec une erreur

Voici à quoi ressemble le message :

[Essentials] Command <Commande> failed:
[<Plugin>] Plugin <Plugin> v<Version> generated an exception while executing task <Numéro>
Error executing task on Server

Ce qui se passe : un plugin s'est interrompu avec une exception lors d'une commande ou d'une tâche planifiée. Les trois lignes ci-dessus sont des formes typiques de ce message. Le serveur continue de tourner, mais pas la fonction concernée du plugin. La cause réelle figure dans les lignes en dessous, pour les erreurs imbriquées dans la ligne « Caused by ». Si on y lit « Cannot perform command async », un plugin a déclenché une commande depuis un thread d'arrière-plan. Un thread est un fil d'exécution parallèle ; or seul le thread principal du serveur a le droit d'exécuter des commandes. C'est un bug du plugin.

Voici comment la corriger :

  1. Cherche sous le message la ligne « Caused by » ou la première ligne contenant « Exception » ou « Error ».
  2. Identifie le plugin : il figure dans le message lui-même ou dans les lignes « at » sous la forme <Plugin>.jar.
  3. Mets à jour le plugin dans Plugins vers une édition adaptée à ta version du serveur et redémarre.
  4. Réessaie la commande. Si l'erreur persiste, signale-la à l'auteur avec la commande, l'heure et le message complet.

Bon à savoir : « NoSuchFieldError » avec un nom de particule ou d'attribut signifie que le plugin utilise un nom que ta version du serveur ne connaît plus. Dans ce cas, seule une édition plus récente du plugin aide.

ClassCastException : deux mods ou plugins ne sont pas compatibles

Voici à quoi ressemble le message :

java.lang.ClassCastException: class <PaquetA>.<ClasseA> cannot be cast to class <PaquetB>.<ClasseB>

Ce qui se passe : Java travaille avec des types de données fixes. Ici, un mod ou un plugin attendait un objet d'un certain type, mais un autre composant lui en a fourni un différent. Les noms de paquets devant les noms de classes, par exemple net.<auteur>.<mod>, révèlent généralement quels deux mods ou plugins sont concernés. C'est typique quand un mod a été mis à jour et qu'un mod dépendant ne l'a pas été. Souvent, seule une fonction échoue, par exemple le butin des coffres ou un clic dans l'inventaire.

Voici comment la corriger :

  1. Lis les deux noms de classes dans le message et associe-les aux mods ou plugins grâce aux noms de paquets.
  2. Vérifie lequel des deux a été mis à jour en dernier.
  3. Mets les deux dans des versions compatibles entre elles : mets les deux à jour ou remets les deux à l'état précédent. Les pages des projets indiquent ce qui fonctionne ensemble.
  4. Si un Modpack est utilisé, mets plutôt à jour le modpack entier au lieu de mods individuels.
  5. Redémarre et vérifie si le message revient lors de la même action.

Plus d'informations sur les conflits de mods : Erreurs de mods sur Forge, NeoForge et Fabric.

ArrayIndexOutOfBoundsException : accès à une entrée de liste manquante

Voici à quoi ressemble le message :

java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
	at <Plugin>.jar//<Paquet>.Util.getBukkitVersion(Util.java:<Ligne>)

Ce qui se passe : un plugin ou un mod a voulu lire une entrée dans une liste plus courte. Java compte à partir de 0 : « Index 3 … length 3 » signifie qu'il n'y a que les entrées 0 à 2. Les déclencheurs fréquents sont une commande avec trop peu d'arguments ou une ligne de configuration où des valeurs manquent. Les anciens plugins trébuchent en outre quand ils lisent la version du serveur à partir d'un nom interne que les versions plus récentes du serveur construisent autrement. On trouve alors souvent dans la ligne « at » quelque chose avec « Version », comme dans l'exemple. Le serveur continue de tourner.

Voici comment la corriger :

  1. Lis la première ligne « at » sous le message. Elle indique le plugin ou le mod.
  2. Si l'erreur est survenue lors d'une commande, vérifie dans l'aide du plugin s'il manque un argument.
  3. Si tu as modifié la configuration peu avant, compare la ligne concernée avec le modèle sur la page du plugin ou avec une sauvegarde.
  4. Mets à jour le plugin dans Plugins et redémarre. Si l'erreur persiste, signale-la à l'auteur.

Aide sur les paramètres erronés : Le fichier de configuration d'un plugin est défectueux.

NumberFormatException : un texte aurait dû être un nombre

Voici à quoi ressemble le message :

java.lang.NumberFormatException: For input string: "%vault_eco_balance_fixed%"
java.lang.NumberFormatException: For input string: "craftbukkit"

Ce qui se cache derrière : Le jeu, un mod ou un plugin a voulu lire une valeur textuelle comme un nombre, et le texte n'était pas un nombre. Entre guillemets figure ce qui a réellement été reçu. La cause peut être une configuration, une valeur de données inattendue ou un bug de version ou de programme. Tu reconnais deux cas à la valeur : un placeholder avec des signes pourcentage, comme ci-dessus, n'a pas été remplacé. Le plus souvent, il manque alors l'extension adaptée pour PlaceholderAPI, le plugin qui remplit ces placeholders, ou le plugin qui fournit la valeur. Un mot comme craftbukkit indique qu'un ancien plugin lit mal la version du serveur.

Comment le résoudre :

  1. Vérifie la stacktrace complète et mets à jour le composant qui y est mentionné.
  2. Pour un placeholder : teste en jeu avec /papi parse me <Placeholder> s'il renvoie une valeur. Sinon, installe l'extension PlaceholderAPI adaptée, par exemple avec /papi ecloud download <Nom>, et charge-la avec /papi reload.
  3. Si le message mentionne un fichier ou un paramètre, compare la valeur avec la configuration par défaut du plugin.
  4. Redémarre et déclenche à nouveau l'action.

ArrayIndexOutOfBoundsException sans autre précision

Voici à quoi ressemble le message :

[<Plugin>] Error occurred while loading item: 2
java.lang.ArrayIndexOutOfBoundsException

Ce qui se cache derrière : Un plugin ou un mod a utilisé un index de liste invalide, comme dans la section précédente. Ici, toutefois, l'index et la longueur manquent. Cela arrive lorsque la même erreur se produit très souvent : Java omet alors les détails pour des raisons de performances. La ligne précédente révèle souvent quel plugin voulait faire quoi, dans l'exemple charger une entrée. La première ligne de stacktrace en dessous, si elle existe, désigne le responsable.

Comment le résoudre :

  1. Lis la ligne située juste avant le message. Le plugin y figure souvent entre crochets.
  2. Lis la première ligne de stacktrace sous le message.
  3. Si les deux manquent, cherche dans logs/latest.log, plus haut, la première occurrence. L'erreur y est généralement encore complète. Les anciens logs sont compressés dans le dossier logs/.
  4. Mets à jour le plugin ou le mod cité en premier. Si la ligne précédente mentionne une entrée précise, vérifie-la dans la configuration du plugin.
  5. Si l'erreur persiste, signale-la à l'auteur.

ExceptionInInitializerError : une classe de plugin ou de mod ne parvient pas à s'initialiser

Voici à quoi ressemble le message :

Exception in thread "ForkJoinPool-3-worker-1" java.lang.ExceptionInInitializerError
Caused by: <Type d'erreur>: <Message>

Ce qui se cache derrière : Java initialise une seule fois chaque classe, c'est-à-dire chaque brique d'un programme, lors de sa première utilisation. C'est précisément à ce moment qu'une classe d'un plugin ou d'un mod a planté. Elle reste ensuite inutilisable pour toute la durée de cette session du serveur, ce qui explique pourquoi d'autres erreurs suivent souvent, comme « NoClassDefFoundError » avec le même nom de classe. La véritable cause, et généralement aussi le plugin ou le mod concerné, est indiquée par la chaîne « Caused by » située en dessous. Selon l'endroit où cela se produit, soit une fonction ne marche plus, soit le plugin ou le mod ne se charge pas du tout.

Comment le résoudre :

  1. Dans la Console ou dans logs/latest.log, lis la première ligne « Caused by » sous le message.
  2. À partir des lignes « at » situées en dessous, identifie le plugin ou le mod, par exemple grâce au nom du fichier en .jar.
  3. Mets-le à jour ou remplace-le par une version compatible avec la version et le logiciel de ton serveur.
  4. Redémarre le serveur. La classe n'est réinitialisée qu'au prochain démarrage.

Pour les questions de version, ce guide t'aidera : Le plugin n'est pas compatible avec la version du serveur.

Erreur interne dans un plugin, par exemple lors de la sauvegarde

Voici à quoi ressemble le message :

[MultiWorld] ERROR HAPPEND: <Message>
Unable to save player profile for <Joueur>
<Plugin> v<Version> generated an exception whilst handling plugin message

Ce qui se cache derrière : Un plugin a rencontré une erreur lors d'une de ses propres tâches, par exemple en enregistrant, en traitant un message ou au démarrage. Les messages de plugin sont des paquets de données qu'un proxy comme BungeeCord ou Velocity échange par exemple avec le serveur. Le nom du plugin apparaît dans le message entre crochets ou au début de la ligne. Selon l'erreur, seule cette action échoue ou le plugin se désactive. S'il s'agit de l'enregistrement, occupe-t-en rapidement afin de ne pas perdre de données.

Comment le résoudre :

  1. Lis le nom du plugin et les lignes situées juste sous le message dans la Console.
  2. Mets à jour le plugin dans Plugins et redémarre.
  3. Si l'erreur persiste, crée une sauvegarde, retire le plugin pour tester et vérifie si le message disparaît.
  4. Signale l'erreur à l'auteur du plugin avec les lignes de la console.

Si l'enregistrement échoue de manière répétée : Le plugin ne peut pas enregistrer dans la base de données ou les fichiers.

Rapport d'erreur Skript avec #!#! : un script ne se charge pas

Voici à quoi ressemble le message :

#!#! Current node: <Ligne du fichier .sk>
#!#! End of Error.

Ce qui se cache derrière : Skript est un plugin qui te permet d'écrire des fonctions de serveur dans de simples fichiers texte portant l'extension .sk. Lorsqu'il détecte une erreur grave au chargement d'un script ou d'un addon, il écrit un rapport dont toutes les lignes commencent par #!#!. Causes fréquentes : un addon comme skript-reflect ou SkBee n'est pas compatible avec la version de Skript installée, ou un fichier de plugin a été remplacé alors que le serveur tournait. Dans ce cas, « zip file closed » apparaît dans le rapport. Le script concerné ne fonctionne pas, mais le serveur continue de tourner.

Comment le résoudre :

  1. Dans le rapport, lis la ligne « Current node » (elle indique le fichier .sk concerné) et la ligne « Caused by ».
  2. Vérifie sur les pages des projets quelles versions d'addons sont compatibles avec ta version de Skript, et mets Skript et les addons à des versions qui vont ensemble.
  3. Ne remplace les fichiers de plugin que lorsque le serveur est arrêté, puis redémarre-le.
  4. Recharge le script avec /sk reload <fichier> et lis la sortie dans la Console.

Bon à savoir : Les scripts se trouvent dans Fichiers, dans le dossier plugins/Skript/scripts/. Fais une copie de sauvegarde d'un fichier avant de le modifier.

IndexOutOfBoundsException : « must be less than size »

Voici à quoi ressemble le message :

Caused by: java.lang.IndexOutOfBoundsException: index (1) must be less than size (1)

Ce qui se cache derrière : Le jeu, un mod ou un plugin a demandé une entrée de liste qui n'existe pas. « index (1) must be less than size (1) » signifie : la liste contient exactement une entrée, portant le numéro 0, alors que le numéro 1 a été demandé. Une configuration peut être impliquée, mais le message seul ne le prouve pas. Si « Caused by: » figure devant, il est la cause d'une erreur signalée plus haut. Ce message du dessus montre ce qui ne fonctionne plus.

Comment le résoudre :

  1. Lis la stacktrace complète dans logs/latest.log, y compris le message d'erreur situé au-dessus.
  2. Cherche la première ligne « at » qui mentionne un composant externe, c'est-à-dire un plugin ou un mod plutôt que Java ou une bibliothèque comme java.base ou com.google.common.
  3. Mets à jour ce composant et redémarre.
  4. Seulement si le contexte renvoie à une liste concrète, par exemple des entrées de menu ou des récompenses, vérifie sa configuration à la recherche d'entrées manquantes ou vides.

« Asynchronous Save Players » : un plugin enregistre depuis le mauvais thread

Voici à quoi ressemble le message :

Asynchronous Save Players! Blocking thread until it returns
java.lang.IllegalStateException
	at io.papermc.paper.util.MCUtil.ensureMain(MCUtil.java:<Line>)

Ce qui se passe : un plugin a déclenché la sauvegarde de toutes les données des joueurs depuis un thread d'arrière-plan, c'est-à-dire depuis un fil d'exécution parallèle au thread principal qui calcule le monde. Ce n'est pas prévu. Paper bloque le thread jusqu'à la fin de la sauvegarde et écrit cet avertissement. C'est une erreur du plugin, qui peut provoquer de brèves saccades. Le serveur continue de tourner.

Comment la corriger :

  1. Lis les lignes « at » sous le message. Les premières appartiennent à Paper et à Minecraft (io.papermc, net.minecraft) ; ce que tu cherches, c'est la première ligne « at » qui mentionne un plugin.
  2. Mets à jour ce plugin dans Plugins et redémarre.
  3. Si l'avertissement persiste, signale l'erreur à l'auteur du plugin avec le message complet.

Bon à savoir : tu peux rester serein face à un avertissement isolé. S'il revient régulièrement et que les joueurs remarquent des saccades, la mise à jour en vaut la peine.

« Unhandled exception executing command » : la commande d'un plugin échoue

Voici à quoi ressemble le message :

org.bukkit.command.CommandException: Unhandled exception executing command '<befehl>' in plugin <Plugin> v<Version>
Caused by: <ErrorType>: <Message>

Ce qui se passe : un plugin a généré une erreur en exécutant l'une de ses commandes. La commande et le plugin figurent dans le message. Le plus souvent, le plugin n'est pas compatible avec la version du serveur ou avec un autre plugin dont il dépend. La personne qui a saisi la commande ne voit généralement dans le chat qu'une indication générale d'erreur interne. La commande n'a pas été exécutée, le serveur continue de tourner.

Comment la corriger :

  1. Lis la ligne « Caused by » sous le message.
  2. Vérifie la version de ton serveur dans Version et mets à jour le plugin dans Plugins vers une édition adaptée.
  3. Si la ligne d'erreur mentionne un autre plugin dont dépend le plugin, mets-le aussi à une version compatible.
  4. Redémarre et teste la commande. Si l'erreur persiste, signale-la à l'auteur du plugin avec cette ligne.

Plus d'infos sur les dépendances : Un plugin a besoin d'un autre plugin.

Erreur de commande avec « [ACF] » dans le log

Voici à quoi ressemble le message :

[<Plugin>] [ACF] Exception in command: <befehl>
[<Plugin>] [ACF] java.lang.NoSuchMethodError: <Method>

Ce qui se passe : de nombreux plugins construisent leurs commandes avec une bibliothèque toute faite, l'Aikar Command Framework (ACF). Lorsqu'une commande échoue avec une exception, ACF affiche l'erreur avec la stacktrace, chaque ligne étant précédée du nom du plugin. Le nom entre les premiers crochets est donc le plugin concerné, pas ACF. Si « IncompatibleClassChangeError » ou « NoSuchMethod » apparaît dans la sortie, le plugin n'est pas compatible avec la version du serveur. La commande n'a pas été exécutée, le serveur continue de tourner.

Comment la corriger :

  1. Lis le nom du plugin dans les premiers crochets ainsi que la première ligne d'erreur contenant « Exception » ou « Error ».
  2. Mets à jour le plugin dans Plugins vers une version adaptée à la version de ton serveur.
  3. Redémarre et teste la commande.
  4. Si l'erreur persiste, signale-la à l'auteur du plugin avec la première ligne d'erreur.

Bon à savoir : tu n'as pas besoin d'installer ni de mettre à jour ACF toi-même. Il est intégré dans chaque plugin concerné.

GravesX : erreur dans une tâche d'arrière-plan

Voici à quoi ressemble le message :

[GravesX] Async task for GravesX v<Version> generated an exception
java.lang.NullPointerException: Cannot invoke "<Method>" because "version2" is null

Ce qui se passe : GravesX crée une tombe contenant les objets d'un joueur à sa mort. Le plugin génère une NullPointerException dans une tâche d'arrière-plan, par exemple lors de la comparaison de deux numéros de version, quand une valeur (« version2 ») est absente. C'est une erreur du plugin lui-même, pas un problème de serveur ou d'hébergement. Le serveur continue de tourner normalement.

Comment la corriger :

  1. Mets à jour GravesX dans Plugins vers la dernière version et redémarre.
  2. Vérifie dans la Console si le message revient.
  3. Si l'erreur persiste, signale-la au projet GravesX avec le message complet.
  4. Si tu veux désactiver le plugin à titre d'essai en attendant un correctif, fais d'abord vider les tombes ouvertes. Sans le plugin, elles ne peuvent pas être ouvertes comme d'habitude.

FastAsyncWorldEdit : la commande a échoué en interne

Voici à quoi ressemble le message :

An unexpected error while handling a FastAsyncWorldEdit command
java.lang.NullPointerException

Ce qui se passe : FastAsyncWorldEdit (FAWE) est une variante rapide de WorldEdit qui te permet de modifier de grandes zones d'un seul coup. Lors d'une commande, FAWE est tombé sur une valeur manquante. L'opération n'a pas été entièrement exécutée, la modification peut donc n'avoir été appliquée qu'en partie dans le monde. Le serveur continue de tourner.

Comment la corriger :

  1. Vérifie en jeu ce que la commande a modifié. Avec //undo, tu peux annuler la dernière étape si besoin.
  2. Mets à jour FAWE dans Plugins vers une édition adaptée à la version de ton serveur et redémarre.
  3. Exécute de nouveau la commande.
  4. Si l'erreur persiste, signale la stacktrace complète avec la commande exacte aux développeurs de FAWE.

Les bases pour annuler : WorldEdit : construire et annuler.

Bon à savoir : n'installe pas FAWE en plus du WorldEdit classique. Les deux ne font pas bon ménage ; utilise-en un seul.

LibreLogin : la commande a échoué en interne

Voici à quoi ressemble le message :

[LibreLogin] An unexpected exception occurred while performing command …

Ce qui se passe : LibreLogin est un plugin de connexion : les joueurs s'authentifient avec un mot de passe, souvent sur des serveurs en mode hors ligne. Lors de l'exécution de l'une de ses commandes, par exemple pour se connecter ou s'inscrire, il s'est interrompu avec une exception inattendue. Pour le joueur, la commande échoue. Si cela concerne la connexion, il ne peut pas avancer tant que la commande ne fonctionne pas de nouveau. Le serveur lui-même continue de tourner.

Comment la corriger :

  1. Dans la Console, lis l'exception sous le message et note de quelle commande il s'agissait.
  2. Mets à jour LibreLogin dans Plugins et redémarre.
  3. Teste de nouveau la commande avec un joueur.
  4. Si l'erreur persiste, signale l'exception avec la commande à l'auteur du plugin.

Si l'exception mentionne une base de données : Un plugin ne peut pas ouvrir sa base de données.

LibreLogin : le gestionnaire réseau est enregistré en double

Voici à quoi ressemble le message :

java.lang.IllegalArgumentException: Duplicate handler name: pe-decoder-librelogin

Ce qui se passe : Chaque connexion de joueur passe par une chaîne d'étapes de traitement, la pipeline réseau. LibreLogin ou la bibliothèque PacketEvents essaie d'intégrer une seconde fois la même étape, un décodeur pour les données entrantes. Les nouvelles connexions peuvent alors échouer. Les causes typiques sont deux fichiers LibreLogin dans le dossier des plugins, des versions de LibreLogin et de PacketEvents incompatibles entre elles ou un rechargement des plugins en cours de fonctionnement.

Comment résoudre le problème :

  1. Dans Fichiers, ouvre le dossier plugins/ et vérifie que LibreLogin n'est présent qu'une seule fois. Supprime les anciennes copies après avoir créé une sauvegarde.
  2. Mets à jour LibreLogin et, s'il est installé, PacketEvents en même temps.
  3. Arrête le serveur et redémarre-le complètement. Un rechargement avec /reload ou un gestionnaire de plugins ne suffit pas ici.
  4. Teste la connexion avec un joueur.

Plus d'informations sur les fichiers en double : Le fichier du plugin est corrompu ou en double.

LightAntiCheat-Plus : erreur dans une vérification de mouvement

Voici à quoi ressemble le message :

[LightAntiCheat-Plus] Exception in event bus subscription: <Check>
java.lang.UnsupportedOperationException: remove

Ce qui se passe : LightAntiCheat-Plus est un plugin anti-triche qui vérifie notamment les mouvements des joueurs. L'une de ses vérifications essaie de vider une liste qui ne peut pas être modifiée. C'est une erreur du plugin. La vérification concernée peut échouer ou donner de faux résultats, donc passer à côté de tricheurs ou soupçonner à tort des joueurs honnêtes. Le serveur continue de fonctionner.

Comment résoudre le problème :

  1. Mets à jour LightAntiCheat-Plus dans Plugins et redémarre.
  2. Si le message persiste, désactive jusqu'à la correction la vérification concernée SpeedD dans la configuration du plugin. Tu la trouves dans Fichiers, dans le dossier du plugin sous plugins/. Sauvegarde le fichier au préalable.
  3. Redémarre et vérifie dans la Console que le message ne réapparaît plus.
  4. Réactive la vérification dès qu'une version corrigée est disponible.

Bon à savoir : Tant que le message apparaît, traite avec prudence les soupçons liés aux mouvements.

MagicSpells signale une erreur sur un sort

Voici à quoi ressemble le message :

[MagicSpells] AN EXCEPTION HAS OCCURED:
[MagicSpells] This error has been saved in the errors folder.
Error saving spellbook for player '<Joueur>'

Ce qui se passe : MagicSpells est un plugin pour créer des sorts personnalisés. Il signale une erreur lors de l'exécution ou de l'enregistrement des sorts, souvent à cause d'une entrée de sa configuration que cette version ne comprend pas. Les effets passent par la bibliothèque EffectLib ; les messages contenant « Unexpected EffectLib Error » concernent ces effets. MagicSpells dépose en plus un rapport dans le dossier plugins/MagicSpells/errors. Si l'enregistrement du grimoire (spellbook) échoue, la progression de ce joueur n'est pas sauvegardée.

Comment résoudre le problème :

  1. Dans Fichiers, ouvre le dossier plugins/MagicSpells/errors et le rapport le plus récent. Il indique le sort et le paramètre concernés.
  2. Vérifie ce paramètre dans tes fichiers de sorts, par exemple pour repérer des fautes de frappe ou des valeurs d'une ancienne version de MagicSpells. Sauvegarde le fichier au préalable.
  3. Garde MagicSpells et EffectLib à jour et compatibles avec la version du serveur.
  4. Redémarre et teste le sort.

SinglePlayerSleep : dormir dans un lit ne fonctionne pas

Voici à quoi ressemble le message :

[SinglePlayerSleep] INTERNAL ERROR: Unable to process PlayerBedEnterEvent

Ce qui se passe : SinglePlayerSleep fait passer la nuit quand un seul joueur dort, au lieu d'exiger que tous aillent au lit. Le plugin a planté au moment où un lit a été utilisé. La fonction de sommeil peut échouer pour cette tentative, et la nuit n'est alors pas passée. Le plus souvent, la version du plugin ne correspond pas à la version de Minecraft. Le serveur continue de fonctionner.

Comment résoudre le problème :

  1. Vérifie dans Version quelle version de Minecraft est utilisée.
  2. Mets à jour SinglePlayerSleep dans Plugins vers une version compatible avec celle-ci et redémarre.
  3. Teste en jeu : couche-toi dans un lit la nuit et vérifie si la nuit passe.
  4. Si l'erreur persiste, signale l'exception figurant sous le message à l'auteur du plugin.

Plus d'informations : Les règles de jeu Minecraft expliquées.

Bon à savoir : Les versions récentes de Minecraft disposent d'une règle de jeu intégrée qui définit le pourcentage de joueurs devant dormir. Elle peut remplacer le plugin.

PacketEvents ne parvient pas à s'intégrer à la connexion

Voici à quoi ressemble le message :

PacketEvents failed to add a decoder to the netty pipeline

Ce qui se passe : PacketEvents est une bibliothèque grâce à laquelle d'autres plugins, par exemple des plugins anti-triche ou de connexion, lisent les paquets réseau. Pour cela, elle ajoute une étape propre, un décodeur, dans la pipeline réseau de chaque connexion. Netty est la bibliothèque réseau par laquelle le serveur gère les connexions. L'ajout a échoué : un autre gestionnaire réseau ou une version de PacketEvents incompatible bloque l'ordre attendu. Les plugins qui reposent sur PacketEvents ne fonctionnent alors pas correctement pour cette connexion.

Comment résoudre le problème :

  1. Mets à jour ensemble PacketEvents, Geyser et Floodgate ainsi que les plugins de connexion et anti-triche vers des versions adaptées à la version de ton serveur.
  2. Dans Fichiers, vérifie dans le dossier plugins/ qu'aucun fichier n'est présent en double.
  3. Arrête le serveur et redémarre-le complètement, sans rechargement à chaud.
  4. Teste la connexion avec Java et, si tu utilises Geyser, aussi avec Bedrock.

Pour les joueurs Bedrock : Bedrock et Geyser : messages dans le log.

StringIndexOutOfBoundsException : valeur de texte vide ou trop courte

Voici à quoi ressemble le message :

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

Ce qui se passe : Un plugin ou un mod a voulu lire un caractère précis dans un texte, par exemple le premier caractère d'un préfixe. Mais le texte est plus court, voire vide avec « length 0 ». Souvent, une valeur de configuration attendue est vide, par exemple un préfixe, un code couleur ou un nom saisi uniquement sous la forme ''. Le serveur continue de fonctionner ; la fonction qui a besoin du texte échoue.

Comment résoudre le problème :

  1. Dans la stacktrace, repère la première ligne contenant un nom de plugin ou de mod.
  2. Dans Fichiers, ouvre la configuration de ce plugin dans le dossier plugins/<Plugin>/ et cherche les valeurs vides comme '' ou les entrées sans valeur. Sauvegarde le fichier au préalable.
  3. Saisis une valeur valide ou reprends la valeur par défaut du modèle du plugin.
  4. Mets à jour le plugin et redémarre.

Plus d'informations sur les paramètres erronés : Le fichier de configuration d'un plugin est défectueux.

« NoSuchFieldException: childHandler » : le plugin réseau n'est pas compatible avec le serveur

Voici à quoi ressemble le message :

java.lang.NoSuchFieldException: childHandler

Ce qui se passe : Netty est la bibliothèque réseau par laquelle le serveur accepte les connexions. Certains plugins accèdent directement à des éléments internes de cette bibliothèque pour s'intégrer aux connexions. Ici, un plugin réseau recherche le champ interne « childHandler », qui n'est pas disponible dans la version du serveur ou de Netty installée. Le plugin a donc été conçu pour un autre build du serveur. Ce sont surtout les plugins réseau, proxy ou de protocole qui sont concernés ; leur fonction ne marche plus.

Voici comment le corriger :

  1. Lis la stacktrace sous le message et repère le premier plugin réseau, proxy ou de protocole, par exemple ViaVersion, ProtocolLib ou Geyser.
  2. Vérifie dans Version quelle version du serveur est en cours d'exécution. La version exacte du logiciel serveur (build) figure aussi dans les premières lignes de logs/latest.log.
  3. Mets à jour le plugin trouvé vers une version adaptée à ce build du serveur, puis redémarre.
  4. S'il n'existe pas encore de version compatible, désactive temporairement le plugin jusqu'à ce que son auteur publie une mise à jour.

Pour plus de détails : Le plugin n'est pas compatible avec la version du serveur.

Les suggestions par tabulation d'une commande de plugin ne fonctionnent pas

Voici à quoi ressemble le message :

Unhandled exception during tab completion for command '<Command>' in plugin <Plugin>

Ce qui se cache derrière : Quand tu appuies sur la touche Tab, Minecraft demande au plugin concerné les compléments possibles. La fonction de suggestion du plugin échoue alors. Le serveur continue de tourner, seules les suggestions de la commande concernée manquent. La trace d'erreur en dessous, appelée stacktrace, montre les appels de programme impliqués.

Voici comment la corriger :

  1. Lis le message complet dans la Console ou sous Fichiers dans logs/latest.log. Note le plugin, la commande et le premier message d'erreur concret qui suit.
  2. Vérifie la version de ton serveur sous Version et installe sous Plugins une version adaptée du plugin en question.
  3. Redémarre complètement le serveur et teste à nouveau la même commande avec la touche Tab.
  4. Si l'erreur persiste, envoie la trace d'erreur complète à l'auteur du plugin et décris à quel endroit les suggestions ne fonctionnent pas.

StackOverflowError lors de l'évaluation d'une règle de recherche

Voici à quoi ressemble le message :

Exception in thread "<BackgroundTask>" java.lang.StackOverflowError

Ce qui se cache derrière : Une expression régulière est une règle de recherche pour du texte, par exemple pour des filtres de commandes. Pour vérifier cette règle, Java a besoin de trop d'appels imbriqués et remplit ainsi la pile d'appels. La tâche d'arrière-plan indiquée est arrêtée et son travail reste incomplet ; le serveur continue de tourner. StackOverflowError est une erreur différente d'une mémoire Java saturée.

Voici comment la corriger :

  1. Ouvre la trace d'erreur complète dans la Console ou sous Fichiers dans logs/latest.log. Repère le plugin concerné grâce au nom du thread et aux appels du plugin.
  2. Sauvegarde ses paramètres et vérifie les règles de recherche ou de commande configurables. Simplifie la règle à l'origine du problème, si tu l'as définie toi-même.
  3. Mets à jour le plugin sous Plugins vers une version adaptée et redémarre complètement le serveur.
  4. Si la règle est intégrée en dur, signale à l'auteur la trace d'erreur complète et l'entrée qui provoque l'erreur.

Paper bloque « entity add » depuis un thread d'arrière-plan

Voici à quoi ressemble le message :

Thread <Thread> failed main thread check: entity add

Ce qui se cache derrière : Paper vérifie que les modifications du monde de jeu sont exécutées sur le bon thread. Un thread est un fil d'exécution propre du programme. Ici, une tâche d'arrière-plan essaie d'ajouter une entité au monde et est stoppée par la vérification de protection. L'action concernée échoue ; le serveur continue de tourner.

Voici comment la corriger :

  1. Dans la Console ou sous Fichiers, ouvre la trace d'erreur complète dans logs/latest.log. Le message abrégé n'affiche souvent que des appels du serveur.
  2. Continue de lire jusqu'au premier appel du plugin et note quelle action a déclenché l'erreur.
  3. Installe sous Plugins une version de ce plugin adaptée à la version de ton serveur et redémarre complètement le serveur.
  4. Si l'erreur persiste, signale-la à l'auteur du plugin avec la trace d'erreur complète. L'appel du plugin doit être déplacé vers le bon thread.

Bon à savoir : Laisse la vérification de protection activée. La désactiver ne corrige pas l'accès fautif au monde.

Ton message n'y figure pas ?

Lis le message en entier, y compris les lignes qui le précèdent. On y voit souvent ce que le plugin essayait de faire. Dans la stacktrace, les noms de fichiers dans les lignes « at », par exemple <Plugin>.jar, et les noms de packages indiquent le plugin ou le mod. Les lignes avec java.base, net.minecraft, org.bukkit ou io.papermc appartiennent à Java et au serveur. Crée une sauvegarde, mets à jour le responsable et redémarre. Si tu ne t'en sors pas, ouvre un ticket et indique l'heure du message.