Als een plugin of mod tijdens het draaien een programmafout tegenkomt, schrijft Java een foutmelding met stacktrace naar het log. De stacktrace is de lijst met „at”-regels onder de foutregel. Hij laat zien welk programmadeel er draaide en wijst zo meestal naar de verantwoordelijke plugin of mod. De meeste van deze fouten leggen de server niet plat, maar een functie valt uit en herhaalde fouten vullen de console.
Elk onderstaand onderdeel behandelt één melding: hoe die eruitziet, wat erachter zit en wat je kunt doen. De volledige melding vind je in de Console of onder Bestanden in logs/latest.log. Lees daar ook de regels direct ervoor en erna. Maak een back-up onder Back-ups voordat je configuratie- of wereldbestanden wijzigt of plugins vervangt. Plugin-bestanden vervang je het best terwijl de server gestopt is.
NullPointerException: plugin of mod benadert een ontbrekende waarde
Zo ziet de melding eruit:
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//<Pakket>.<Class>.<Method>(<Class>.java:<Rule>)
Wat er aan de hand is: Een plugin of mod wilde werken met een object dat op deze plek niet bestaat. Java noemt deze lege waarde „null". Achter „Cannot invoke" staat de aangeroepen methode, achter „because" de ontbrekende waarde, in het voorbeeld de extra gegevens van een voorwerp. De „at"-regels eronder heten stacktrace: de keten van aanroepen tot aan de fout. De eerste noemt de veroorzaker. De server blijft draaien, alleen de betreffende actie wordt afgebroken.
Zo los je het op:
- Open de volledige melding in de Console of in
logs/latest.logen lees de eerste „at"-regel. - Bij plugins staat daar een bestandsnaam zoals
<Plugin>.jar, bij mods het modbestand tussen rechte haken. Staan daar alleen serveronderdelen zoalsorg.bukkitofnet.minecraft, lees dan verder tot de eerste naam van een plugin of mod. - Werk deze plugin bij onder Plugins of de mod onder Mods. Zelf geüploade bestanden vervang je onder Bestanden in
plugins/ofmods/. - Blijft de fout na de update bestaan, meld die dan bij de auteur met de volledige melding en de actie waarbij de fout optreedt.
Goed om te weten: Staat op modservers pl:mixin:APP:<mod>.mixins.json in de regel, dan heeft deze mod die plek via een mixin (ingreep in onderdelen van het spel van anderen) aangepast en is die een goede tweede verdachte.
„Could not pass event": plugin crasht bij een spelgebeurtenis
Zo ziet de melding eruit:
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//<Pakket>.<Class>.<Method>(<Class>.java:<Rule>)
Wat er aan de hand is: Plugins reageren op gebeurtenissen (events) zoals een join, een klik in het inventaris of schade. Heeft een plugin daarbij een exception gegooid, dus een Java-fout die het verloop afbreekt, dan vangt de server die op en schrijft deze melding. Na „to" staan plugin en versie, ervoor de gebeurtenis. Doorslaggevend is de regel eronder: „NoSuchMethodError" of „NoSuchFieldError" betekent dat de plugin voor een andere serverversie is gebouwd en een functie zoekt die zo niet bestaat. Andere soorten fouten wijzen meestal op een fout in de plugin zelf. De server blijft draaien, de functie van de plugin valt bij deze gebeurtenis uit.
Zo los je het op:
- Lees in de Console de pluginnaam en versie na „to" en de foutregel direct eronder.
- Controleer onder Versie welke serverversie draait en zoek op de pluginpagina een uitgave die precies deze versie ondersteunt.
- Installeer de nieuwe uitgave onder Plugins en start de server opnieuw op.
- Blijft de fout bestaan, meld die dan bij de pluginauteur met de regel „Could not pass event …" en de foutregel eronder.
Uitgebreid over „NoSuchMethodError" en „NoSuchFieldError": Plugin past niet bij de serverversie.
„Task … generated an exception": plugintaak mislukt op de achtergrond
Zo ziet de melding eruit:
[<Plugin>] Task #46 for <Plugin> v<Version> generated an exception
java.lang.IllegalArgumentException: missing required data class org.bukkit.Color
Wat er aan de hand is: Plugins plannen taken (tasks) die regelmatig draaien, bijvoorbeeld deeltjes tonen, hologrammen verversen of gegevens opslaan. Een van deze taken is met een fout afgebroken. Gebeurt dat voortdurend, vaak elke seconde, dan is de plugin meestal niet compatibel met de geïnstalleerde serverversie. Dat komt typisch voor na een server- of pluginupdate. De server blijft draaien, maar de functie van de plugin valt deels uit en de console loopt vol.
Zo los je het op:
- Lees de pluginnaam na „for" en de foutregel eronder.
- Controleer onder Plugins of er voor deze plugin een nieuwere uitgave voor jouw serverversie is, installeer die en start opnieuw op.
- Is er geen passende uitgave, deactiveer de plugin dan tijdelijk. Verplaats daarvoor het .jar-bestand onder Bestanden uit de map
plugins/naar een eigen map en start opnieuw op. De voortdurende fout vertraagt anders de server. - Controleer na het herstarten in de Console of de melding uitblijft.
Goed om te weten: Staat onder de melding „NoSuchMethodError" of „NoSuchFieldError", dan is het bijna altijd een kwestie van versies. Andere soorten fouten meld je bij de auteur als ook de nieuwste uitgave ze laat zien.
Plugincommando of -taak breekt af met een fout
Zo ziet de melding eruit:
[Essentials] Command <Commando> failed:
[<Plugin>] Plugin <Plugin> v<Version> generated an exception while executing task <Number>
Error executing task on Server
Wat er aan de hand is: Een plugin is bij een commando of een geplande taak met een exception afgebroken. De drie regels hierboven zijn typische vormen van deze melding. De server blijft draaien, de betreffende functie van de plugin niet. De eigenlijke oorzaak staat in de regels eronder, bij geneste fouten in de regel „Caused by". Staat daar „Cannot perform command async", dan heeft een plugin een commando vanuit een achtergrondthread geactiveerd. Een thread is een parallelle werkstroom; commando's mogen echter alleen door de hoofdthread van de server worden uitgevoerd. Dit is een fout in de plugin.
Zo los je het op:
- Zoek onder de melding de „Caused by"-regel of de eerste regel met „Exception" of „Error".
- Achterhaal de plugin: die staat in de melding zelf of in de „at"-regels als
<Plugin>.jar. - Werk de plugin bij onder Plugins naar een uitgave voor jouw serverversie en start opnieuw op.
- Probeer het commando opnieuw. Blijft de fout bestaan, meld die dan bij de auteur met commando, tijdstip en volledige melding.
Goed om te weten: „NoSuchFieldError" met de naam van een deeltje of attribuut betekent dat de plugin een naam gebruikt die jouw serverversie niet meer kent. Dan helpt alleen een nieuwere pluginuitgave.
ClassCastException: twee mods of plugins passen niet bij elkaar
Zo ziet de melding eruit:
java.lang.ClassCastException: class <PakketA>.<ClassA> cannot be cast to class <PakketB>.<ClassB>
Wat er aan de hand is: Java werkt met vaste gegevenstypen. Hier verwachtte een mod of plugin een object van een bepaald type, maar kreeg van een ander onderdeel een ander type. De pakketnamen vóór de klassenamen, bijvoorbeeld net.<auteur>.<mod>, verraden meestal welke twee mods of plugins erbij betrokken zijn. Dat komt typisch voor als een mod is bijgewerkt en een afhankelijke mod niet. Vaak valt maar één functie uit, bijvoorbeeld buit uit kisten of een klik in het inventaris.
Zo los je het op:
- Lees beide klassenamen in de melding en koppel ze via de pakketnamen aan de mods of plugins.
- Controleer welke van de twee het laatst is bijgewerkt.
- Breng beide op onderling passende versies: beide bijwerken of beide terugzetten naar de vorige stand. De projectpagina's vermelden wat bij elkaar past.
- Draait er een Modpack, werk dan liever het hele modpack bij in plaats van losse mods.
- Start opnieuw op en controleer of de melding bij dezelfde handeling terugkomt.
Meer over modconflicten: Modfouten op Forge, NeoForge en Fabric.
ArrayIndexOutOfBoundsException: toegang tot een ontbrekend lijstitem
Zo ziet de melding eruit:
java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at <Plugin>.jar//<Pakket>.Util.getBukkitVersion(Util.java:<Rule>)
Wat er aan de hand is: Een plugin of mod wilde een item uit een lijst lezen die korter is. Java telt vanaf 0: „Index 3 … length 3" betekent dat er alleen items 0 tot en met 2 zijn. Veelvoorkomende oorzaken zijn een commando met te weinig argumenten of een configuratieregel waarin waarden ontbreken. Oudere plugins struikelen bovendien als ze de serverversie uit een interne naam proberen te halen die nieuwere serverversies anders opbouwen. Dan staat er in de „at"-regel vaak iets met „Version", zoals in het voorbeeld. De server blijft draaien.
Zo los je het op:
- Lees de eerste „at"-regel onder de melding. Die noemt de plugin of mod.
- Trad de fout op bij een commando, controleer dan in de help van de plugin of er een argument ontbreekt.
- Heb je kort daarvoor de configuratie gewijzigd, vergelijk dan de betreffende regel met het voorbeeld op de pluginpagina of met een back-up.
- Werk de plugin bij onder Plugins en start opnieuw op. Blijft de fout bestaan, meld die dan bij de auteur.
Hulp bij foutieve instellingen: Configuratiebestand van een plugin is foutief.
NumberFormatException: een tekst had een getal moeten zijn
Zo ziet de melding eruit:
java.lang.NumberFormatException: For input string: "%vault_eco_balance_fixed%"
java.lang.NumberFormatException: For input string: "craftbukkit"
Wat erachter zit: De game, een mod of een plugin wilde een tekstwaarde als getal lezen, en de tekst was geen getal. Tussen de aanhalingstekens staat wat er daadwerkelijk binnenkwam. De oorzaak kan een configuratie, een onverwachte gegevenswaarde of een versie- of programmafout zijn. Twee gevallen herken je aan de waarde: een placeholder met procentteken zoals hierboven is niet vervangen. Meestal ontbreekt dan de bijbehorende extensie voor PlaceholderAPI, de plugin die zulke placeholders invult, of de plugin die de waarde levert. Een woord als craftbukkit wijst erop dat een oudere plugin de serverversie verkeerd uitleest.
Zo los je het op:
- Controleer de volledige stacktrace en update het daarin genoemde onderdeel.
- Bij een placeholder: test in het spel met
/papi parse me <Placeholder>of er een waarde terugkomt. Zo niet, installeer dan de passende PlaceholderAPI-extensie, bijvoorbeeld met/papi ecloud download <Naam>, en laad die met/papi reload. - Noemt de melding een bestand of instelling, vergelijk dan de waarde met de standaardconfiguratie van de plugin.
- Start opnieuw op en voer de actie nog een keer uit.
ArrayIndexOutOfBoundsException zonder verdere details
Zo ziet de melding eruit:
[<Plugin>] Error occurred while loading item: 2
java.lang.ArrayIndexOutOfBoundsException
Wat erachter zit: Een plugin of mod heeft een ongeldige lijstindex gebruikt, zoals in de vorige sectie. Hier ontbreken alleen index en lengte. Dat gebeurt wanneer dezelfde fout heel vaak optreedt: Java laat de details dan om prestatieredenen weg. De regel ervoor verraadt vaak welke plugin wat wilde doen, in het voorbeeld een item laden. De eerste stacktrace-regel eronder, als die er is, noemt de veroorzaker.
Zo los je het op:
- Lees de regel direct vóór de melding. Daar staat vaak de plugin tussen vierkante haken.
- Lees de eerste stacktrace-regel onder de melding.
- Ontbreekt beide, zoek dan in
logs/latest.loghoger op naar het eerste voorkomen. Daar staat de fout meestal nog volledig. Oudere logs staan ingepakt in de maplogs/. - Update de als eerste genoemde plugin of mod. Noemt de regel ervoor een bepaald item, controleer dat dan in de configuratie van de plugin.
- Blijft de fout, meld hem dan bij de auteur.
ExceptionInInitializerError: plugin- of modklasse kan niet worden geïnitialiseerd
Zo ziet de melding eruit:
Exception in thread "ForkJoinPool-3-worker-1" java.lang.ExceptionInInitializerError
Caused by: <Foorttype>: <Melding>
Wat erachter zit: Java initialiseert elke klasse, dus elke bouwsteen van een programma, één keer bij het eerste gebruik. Precies daarbij is een klasse van een plugin of mod gecrasht. Daarna blijft die klasse voor deze serversessie onbruikbaar, daarom volgen vaak meer fouten zoals „NoClassDefFoundError“ met dezelfde klassenaam. De eigenlijke oorzaak en meestal ook de betreffende plugin of mod staat in de „Caused by“-keten eronder. Afhankelijk van waar het gebeurt, valt een functie uit of laadt de plugin of mod helemaal niet.
Zo los je het op:
- Lees in de Console of in
logs/latest.logde eerste „Caused by“-regel onder de melding. - Achterhaal uit de „at“-regels eronder de plugin of mod, bijvoorbeeld aan de bestandsnaam met
.jar. - Update de plugin of mod, of vervang hem door een versie die past bij jouw serverversie en serversoftware.
- Start de server opnieuw op. De klasse wordt pas bij de volgende start opnieuw geïnitialiseerd.
Bij versievragen helpt dit: Plugin past niet bij de serverversie.
Interne fout in een plugin, bijvoorbeeld bij het opslaan
Zo ziet de melding eruit:
[MultiWorld] ERROR HAPPEND: <Melding>
Unable to save player profile for <Speler>
<Plugin> v<Versie> generated an exception whilst handling plugin message
Wat erachter zit: Een plugin is bij een eigen taak op een fout gestuit, bijvoorbeeld bij het opslaan, het verwerken van een bericht of bij het opstarten. Pluginberichten zijn datapakketten die bijvoorbeeld een proxy zoals BungeeCord of Velocity met de server uitwisselt. De naam van de plugin staat in de melding tussen vierkante haken of aan het begin van de regel. Afhankelijk van de fout valt alleen die actie uit of schakelt de plugin zichzelf uit. Gaat het om opslaan, pak het dan snel aan, zodat er geen gegevens verloren gaan.
Zo los je het op:
- Lees de pluginnaam en de regels direct onder de melding in de Console.
- Update de plugin onder Plugins en start opnieuw op.
- Blijft de fout, maak dan een back-up, verwijder de plugin als test en controleer of de melding verdwijnt.
- Meld de fout bij de pluginauteur met de regels uit de console.
Mislukt het opslaan herhaaldelijk: Plugin kan database of bestanden niet opslaan.
Skript-foutrapport met #!#!: een script wordt niet geladen
Zo ziet de melding eruit:
#!#! Current node: <Line from the .sk file>
#!#! End of Error.
Wat erachter zit: Skript is een plugin waarmee je servenfuncties in eenvoudige tekstbestanden met de extensie .sk schrijft. Als het bij het laden van een script of een addon een ernstige fout constateert, schrijft het een rapport waarvan alle regels met #!#! beginnen. Veelvoorkomende oorzaken: een addon zoals skript-reflect of SkBee past niet bij de geïnstalleerde Skript-versie, of een pluginbestand is vervangen terwijl de server draaide. Dan staat er „zip file closed“ in het rapport. Het betreffende script werkt niet, de server blijft draaien.
Zo los je het op:
- Lees in het rapport de regel „Current node“ (die noemt het betreffende .sk-bestand) en de regel „Caused by“.
- Controleer op de projectpagina's welke addon-versies bij jouw Skript-versie passen, en breng Skript en addons naar versies die bij elkaar passen.
- Vervang pluginbestanden alleen als de server gestopt is en start de server daarna opnieuw op.
- Laad het script met
/sk reload <bestand>en lees de uitvoer in de Console.
Goed om te weten: De scripts staan onder Bestanden in de map plugins/Skript/scripts/. Maak een back-up van een bestand voordat je het wijzigt.
IndexOutOfBoundsException: „must be less than size“
Zo ziet de melding eruit:
Caused by: java.lang.IndexOutOfBoundsException: index (1) must be less than size (1)
Wat erachter zit: De game, een mod of een plugin heeft een lijstitem opgevraagd dat niet bestaat. „index (1) must be less than size (1)“ betekent: de lijst heeft precies één item met nummer 0, gevraagd werd nummer 1. Een configuratie kan erbij betrokken zijn, maar de melding alleen bewijst dat niet. Staat er „Caused by:“ voor, dan is dit de oorzaak van een fout die hoger is gemeld. Wat uitvalt, laat die bovenste melding zien.
Zo los je het op:
- Lees de volledige stacktrace in
logs/latest.log, ook de foutmelding erboven. - Zoek de eerste „at“-regel die een extern onderdeel noemt, dus een plugin of mod in plaats van Java of een bibliotheek zoals
java.baseofcom.google.common. - Update dat onderdeel en start opnieuw op.
- Alleen als het verband naar een concrete lijst verwijst, bijvoorbeeld menu-items of beloningen, controleer dan de configuratie daarvan op ontbrekende of lege items.
„Asynchronous Save Players“: plugin slaat op vanuit de verkeerde thread
Zo ziet de melding eruit:
Asynchronous Save Players! Blocking thread until it returns
java.lang.IllegalStateException
at io.papermc.paper.util.MCUtil.ensureMain(MCUtil.java:<Line>)
Wat er achter zit: Een plugin heeft het opslaan van alle spelergegevens gestart vanuit een achtergrond-thread, dus vanuit een parallelle werkstroom naast de hoofd-thread die de wereld berekent. Dat is niet de bedoeling. Paper blokkeert de thread totdat het opslaan klaar is en schrijft deze waarschuwing. Dit is een fout in de plugin die korte haperingen kan veroorzaken. De server draait gewoon door.
Zo los je het op:
- Lees de „at“-regels onder de melding. De eerste horen bij Paper en Minecraft (
io.papermc,net.minecraft); je zoekt de eerste „at“-regel waarin een plugin wordt genoemd. - Werk deze plugin bij onder Plugins en start opnieuw.
- Blijft de waarschuwing komen, meld de fout dan bij de pluginauteur met de volledige melding.
Goed om te weten: Een enkele waarschuwing kun je gerust negeren. Komt hij regelmatig voor en merken spelers haperingen, dan loont het de moeite om te updaten.
„Unhandled exception executing command“: pluginopdracht breekt af
Zo ziet de melding eruit:
org.bukkit.command.CommandException: Unhandled exception executing command '<opdracht>' in plugin <Plugin> v<Versie>
Caused by: <Fouttype>: <Melding>
Wat er achter zit: Een plugin heeft bij het uitvoeren van een van zijn opdrachten een fout gegooid. Opdracht en plugin staan in de melding. Meestal past de plugin niet bij de serverversie of bij een andere plugin waarvan hij afhankelijk is. Wie de opdracht heeft ingevoerd, ziet in de chat meestal alleen een algemene melding over een interne fout. De opdracht is niet uitgevoerd, de server draait gewoon door.
Zo los je het op:
- Lees de „Caused by“-regel onder de melding.
- Controleer onder Versie je serverversie en werk de plugin onder Plugins bij naar een uitgave daarvoor.
- Noemt de foutregel een andere plugin waarvan de plugin afhankelijk is, breng die dan ook naar een passende versie.
- Start opnieuw en test de opdracht. Blijft de fout optreden, meld hem dan met deze regel bij de pluginauteur.
Meer over afhankelijkheden: Plugin heeft een andere plugin nodig.
Opdrachtfout met „[ACF]“ in de log
Zo ziet de melding eruit:
[<Plugin>] [ACF] Exception in command: <opdracht>
[<Plugin>] [ACF] java.lang.NoSuchMethodError: <Method>
Wat er achter zit: Veel plugins bouwen hun opdrachten met een kant-en-klare bibliotheek, het Aikar Command Framework (ACF). Breekt een opdracht af met een exception, dan toont ACF de fout inclusief stacktrace, elke regel met de pluginnaam ervoor. De naam in de eerste haakjes is dus de getroffen plugin, niet ACF. Staat er „IncompatibleClassChangeError“ of „NoSuchMethod“ in de uitvoer, dan past de plugin niet bij de serverversie. De opdracht is niet uitgevoerd, de server draait gewoon door.
Zo los je het op:
- Lees de pluginnaam in de eerste rechte haakjes en de eerste foutregel met „Exception“ of „Error“.
- Werk de plugin onder Plugins bij naar een versie voor jouw serverversie.
- Start opnieuw en test de opdracht.
- Blijft de fout, meld hem dan bij de pluginauteur met de eerste foutregel.
Goed om te weten: ACF hoef je niet zelf te installeren of bij te werken. Het zit in de betreffende plugin.
GravesX: fout in een achtergrondtaak
Zo ziet de melding eruit:
[GravesX] Async task for GravesX v<Versie> generated an exception
java.lang.NullPointerException: Cannot invoke "<Method>" because "version2" is null
Wat er achter zit: GravesX maakt bij de dood van een speler een graf met zijn spullen aan. De plugin gooit in een achtergrondtaak een NullPointerException, bijvoorbeeld bij het vergelijken van twee versienummers, wanneer een waarde („version2“) ontbreekt. Dit is een fout in de plugin zelf, geen server- of hostingprobleem. De server draait normaal door.
Zo los je het op:
- Werk GravesX onder Plugins bij naar de nieuwste versie en start opnieuw.
- Controleer in de Console of de melding terugkomt.
- Blijft de fout bestaan, meld hem dan bij het GravesX-project met de volledige melding.
- Wil je de plugin tot de fix als test uitschakelen, laat dan eerst openstaande graven leegmaken. Zonder de plugin kunnen ze niet op de gebruikelijke manier worden geopend.
FastAsyncWorldEdit: opdracht intern mislukt
Zo ziet de melding eruit:
An unexpected error while handling a FastAsyncWorldEdit command
java.lang.NullPointerException
Wat er achter zit: FastAsyncWorldEdit (FAWE) is een snelle variant van WorldEdit waarmee je grote gebieden in één keer bewerkt. Bij een opdracht is FAWE op een ontbrekende waarde gestuit. De bewerking is niet volledig uitgevoerd, dus de wijziging kan maar gedeeltelijk in de wereld terecht zijn gekomen. De server draait gewoon door.
Zo los je het op:
- Controleer in het spel wat de opdracht heeft veranderd. Met
//undomaak je indien nodig de laatste stap ongedaan. - Werk FAWE onder Plugins bij naar een uitgave voor jouw serverversie en start opnieuw.
- Voer de opdracht opnieuw uit.
- Blijft de fout, meld dan de volledige stacktrace met de exacte opdracht bij de FAWE-ontwikkelaars.
Basis voor het ongedaan maken: WorldEdit: bouwen en ongedaan maken.
Goed om te weten: Installeer FAWE niet naast de gewone WorldEdit. Samen werken ze niet goed; gebruik er maar één.
LibreLogin: opdracht intern mislukt
Zo ziet de melding eruit:
[LibreLogin] An unexpected exception occurred while performing command …
Wat er achter zit: LibreLogin is een loginplugin: spelers melden zich aan met een wachtwoord, vaak op servers in offlinemodus. Bij het uitvoeren van een van zijn opdrachten, bijvoorbeeld om in te loggen of te registreren, is de plugin met een onverwachte exception afgebroken. Voor de speler mislukt de opdracht. Gaat het om het inloggen, dan komt hij niet verder totdat de opdracht weer werkt. De server zelf draait gewoon door.
Zo los je het op:
- Lees in de Console de exception onder de melding en noteer welke opdracht het was.
- Werk LibreLogin onder Plugins bij en start opnieuw.
- Test de opdracht opnieuw met een speler.
- Blijft de fout, meld dan de exception samen met de opdracht bij de pluginauteur.
Noemt de exception een database: Plugin kan zijn database niet openen.
LibreLogin: netwerkhandler is dubbel geregistreerd
Zo ziet de melding eruit:
java.lang.IllegalArgumentException: Duplicate handler name: pe-decoder-librelogin
Wat erachter zit: Elke spelersverbinding loopt door een keten van verwerkingsstappen, de netwerkpipeline. LibreLogin of de bibliotheek PacketEvents probeert dezelfde stap, een decoder voor binnenkomende data, een tweede keer in te bouwen. Nieuwe verbindingen kunnen dan mislukken. Typische oorzaken zijn twee LibreLogin-bestanden in de pluginmap, niet bij elkaar passende versies van LibreLogin en PacketEvents of het herladen van plugins terwijl de server draait.
Zo los je het op:
- Open onder Bestanden de map
plugins/en controleer of LibreLogin er maar één keer in staat. Verwijder oudere kopieën nadat je een back-up hebt gemaakt. - Werk LibreLogin en, indien geïnstalleerd, PacketEvents samen bij.
- Stop de server en start hem volledig opnieuw op. Herladen met
/reloadof een pluginmanager is hier niet genoeg. - Test het joinen met een speler.
Meer over dubbele bestanden: Pluginbestand is beschadigd of dubbel.
LightAntiCheat-Plus: fout in een bewegingscontrole
Zo ziet de melding eruit:
[LightAntiCheat-Plus] Exception in event bus subscription: <Check>
java.lang.UnsupportedOperationException: remove
Wat erachter zit: LightAntiCheat-Plus is een anticheatplugin die onder andere de bewegingen van spelers controleert. Een van de controles probeert een lijst leeg te maken die niet gewijzigd kan worden. Dit is een fout in de plugin. De betreffende controle kan uitvallen of foute resultaten geven, dus cheats missen of eerlijke spelers ten onrechte verdenken. De server blijft draaien.
Zo los je het op:
- Werk LightAntiCheat-Plus bij onder Plugins en start opnieuw op.
- Blijft de melding komen, schakel dan tot de fix de betreffende controle SpeedD uit in de configuratie van de plugin. Je vindt die onder Bestanden in de map van de plugin onder
plugins/. Maak eerst een back-up van het bestand. - Start opnieuw op en controleer in de Console of de melding wegblijft.
- Schakel de controle weer in zodra er een gecorrigeerde versie is verschenen.
Goed om te weten: Zolang de melding verschijnt, moet je vermoedens van bewegingscheats met voorzichtigheid behandelen.
MagicSpells meldt een fout bij een spreuk
Zo ziet de melding eruit:
[MagicSpells] AN EXCEPTION HAS OCCURED:
[MagicSpells] This error has been saved in the errors folder.
Error saving spellbook for player '<Player>'
Wat erachter zit: MagicSpells is een plugin voor eigen spreuken. Het meldt een fout bij het uitvoeren of opslaan van spreuken, vaak door een item in de configuratie dat deze versie niet begrijpt. De effecten lopen via de bibliotheek EffectLib; meldingen met „Unexpected EffectLib Error” gaan over deze effecten. Daarnaast slaat MagicSpells een rapport op in de map plugins/MagicSpells/errors. Mislukt het opslaan van het spreukenboek (spellbook), dan wordt de stand van die speler niet opgeslagen.
Zo los je het op:
- Open onder Bestanden de map
plugins/MagicSpells/errorsen het nieuwste rapport. Daarin staan de spreuk en de instelling. - Controleer deze instelling in je spreukbestanden, bijvoorbeeld op typefouten of waarden uit een oudere MagicSpells-versie. Maak eerst een back-up van het bestand.
- Houd MagicSpells en EffectLib up-to-date en passend bij de serverversie.
- Start opnieuw op en test de spreuk.
SinglePlayerSleep: slapen in een bed werkt niet
Zo ziet de melding eruit:
[SinglePlayerSleep] INTERNAL ERROR: Unable to process PlayerBedEnterEvent
Wat erachter zit: SinglePlayerSleep laat de nacht voorbijgaan als één enkele speler slaapt, in plaats van dat iedereen naar bed moet. Bij het betreden van een bed is de plugin gecrasht. De slaapfunctie kan voor deze poging uitvallen, waardoor de nacht niet wordt overgeslagen. Meestal past de pluginversie niet bij de Minecraft-versie. De server blijft draaien.
Zo los je het op:
- Controleer onder Versie welke Minecraft-versie draait.
- Werk SinglePlayerSleep onder Plugins bij naar een versie voor deze Minecraft-versie en start opnieuw op.
- Test in het spel: ga 's nachts in bed liggen en controleer of de nacht voorbijgaat.
- Blijft de fout, meld dan de exception onder de melding bij de pluginauteur.
Meer hierover: Minecraft-gamerules uitgelegd.
Goed om te weten: Nieuwere Minecraft-versies hebben een eigen gamerule voor hoeveel procent van de spelers moet slapen. Die kan de plugin vervangen.
PacketEvents kan zich niet in de verbinding inpluggen
Zo ziet de melding eruit:
PacketEvents failed to add a decoder to the netty pipeline
Wat erachter zit: PacketEvents is een bibliotheek waarmee andere plugins, zoals anticheat- of loginplugins, netwerkpakketten kunnen meelezen. Daarvoor bouwt ze een eigen stap, een decoder, in de netwerkpipeline van elke verbinding. Netty is de netwerkbibliotheek waarmee de server verbindingen afhandelt. Het inbouwen is mislukt: een andere netwerkhandler of een niet-compatibele PacketEvents-versie blokkeert de verwachte volgorde. Plugins die op PacketEvents voortbouwen, werken dan niet goed voor deze verbinding.
Zo los je het op:
- Werk PacketEvents, Geyser en Floodgate, evenals login- en anticheatplugins, samen bij naar versies voor jouw serverversie.
- Controleer onder Bestanden in de map
plugins/dat er geen bestand dubbel staat. - Stop de server en start hem volledig opnieuw op, zonder herladen terwijl de server draait.
- Test het joinen met Java en, als je Geyser gebruikt, ook met Bedrock.
Voor Bedrock-spelers: Bedrock en Geyser: meldingen in het log.
StringIndexOutOfBoundsException: lege of te korte tekstwaarde
Zo ziet de melding eruit:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Wat erachter zit: Een plugin of mod wilde een bepaald teken uit een tekst lezen, bijvoorbeeld het eerste teken van een prefix. De tekst is echter korter, bij „length 0” zelfs leeg. Vaak is een verwachte configuratiewaarde leeg, zoals een prefix, een kleuraanduiding of een naam die alleen als '' is ingevuld. De server blijft draaien; de functie die de tekst nodig heeft, valt uit.
Zo los je het op:
- Lees in de stacktrace de eerste regel met de naam van een plugin of mod.
- Open onder Bestanden de configuratie van deze plugin in de map
plugins/<Plugin>/en zoek naar lege waarden zoals''of items zonder waarde. Maak eerst een back-up van het bestand. - Vul een geldige waarde in of neem de standaardwaarde over uit de sjabloon van de plugin.
- Werk de plugin bij en start opnieuw op.
Meer over foutieve instellingen: Configuratiebestand van een plugin is foutief.
„NoSuchFieldException: childHandler“: netwerkplugin past niet bij de server
Zo ziet de melding eruit:
java.lang.NoSuchFieldException: childHandler
Wat erachter zit: Netty is de netwerkbibliotheek waarmee de server verbindingen accepteert. Sommige plugins grijpen direct in op interne onderdelen ervan om zich in verbindingen te haken. Hier zoekt een netwerkplugin het interne veld „childHandler“, dat in de geïnstalleerde server- of Netty-versie niet beschikbaar is. De plugin is dus gebouwd voor een andere serverbuild. Meestal gaat het om netwerk-, proxy- of protocolplugins; hun functie valt uit.
Zo los je het op:
- Lees de stacktrace onder de melding en zoek de eerste netwerk-, proxy- of protocolplugin, bijvoorbeeld ViaVersion, ProtocolLib of Geyser.
- Controleer onder Versie welke serverversie er draait. De exacte uitvoering van de serversoftware (build) staat bovendien in de eerste regels van
logs/latest.log. - Werk de gevonden plugin bij naar een versie voor deze serverbuild en start opnieuw op.
- Is er nog geen passende versie, schakel de plugin dan tijdelijk uit totdat de auteur een update uitbrengt.
Uitgebreid: Plugin past niet bij de serverversie.
Tabsuggesties van een pluginopdracht werken niet
Zo ziet de melding eruit:
Unhandled exception during tab completion for command '<Opdracht>' in plugin <Plugin>
Wat erachter zit: Wanneer je op de Tab-toets drukt, vraagt Minecraft de verantwoordelijke plugin om mogelijke aanvullingen. Daarbij mislukt de suggestiefunctie van de plugin. De server blijft draaien, alleen de suggesties voor de betreffende opdracht ontbreken. Het foutspoor eronder, de zogenaamde stacktrace, toont de betrokken programma-aanroepen.
Zo los je het op:
- Lees de volledige melding in de Console of onder Bestanden in
logs/latest.log. Noteer de plugin, de opdracht en de eerste concrete foutmelding eronder. - Controleer onder Versie je serverversie en installeer onder Plugins een daarvoor geschikte uitgave van de genoemde plugin.
- Start de server volledig opnieuw op en test dezelfde opdracht opnieuw met de Tab-toets.
- Blijft de fout bestaan, stuur de pluginauteur dan het volledige foutspoor en beschrijf op welk punt de suggesties uitvallen.
StackOverflowError bij het evalueren van een zoekregel
Zo ziet de melding eruit:
Exception in thread "<Achtergrondtaak>" java.lang.StackOverflowError
Wat erachter zit: Een reguliere expressie is een zoekregel voor tekst, bijvoorbeeld voor opdrachtfilters. Java heeft bij het controleren van deze regel te veel in elkaar geneste aanroepen nodig en vult daarmee de aanroepstack. De genoemde achtergrondtaak wordt beëindigd en het werk ervan blijft onvolledig; de server blijft draaien. StackOverflowError is een andere fout dan een vol Java-geheugen.
Zo los je het op:
- Open het volledige foutspoor in de Console of onder Bestanden in
logs/latest.log. Zoek aan de hand van de threadnaam en de pluginaanroepen de verantwoordelijke plugin. - Maak een back-up van de instellingen ervan en controleer configureerbare zoek- of opdrachtregels. Vereenvoudig de regel die de fout veroorzaakt, als je die zelf hebt ingesteld.
- Werk de plugin onder Plugins bij naar een geschikte uitgave en start de server volledig opnieuw op.
- Is de regel vast ingebouwd, meld de auteur dan het volledige foutspoor en de invoer waarbij de fout optreedt.
Paper blokkeert „entity add“ vanuit een achtergrondthread
Zo ziet de melding eruit:
Thread <Thread> failed main thread check: entity add
Wat erachter zit: Paper controleert of wijzigingen aan de spelwereld op de juiste thread worden uitgevoerd. Een thread is een eigen uitvoeringsstroom van het programma. Hier probeert een achtergrondtaak een entiteit aan de wereld toe te voegen en wordt die door de beveiligingscontrole tegengehouden. De betreffende actie mislukt; de server blijft draaien.
Zo los je het op:
- Open in de Console of onder Bestanden het volledige foutspoor in
logs/latest.log. De ingekorte melding toont vaak alleen serveraanroepen. - Lees verder tot de eerste pluginaanroep en noteer welke actie de fout heeft veroorzaakt.
- Installeer onder Plugins een uitgave van deze plugin die bij je serverversie past en start de server volledig opnieuw op.
- Blijft de fout optreden, meld die dan bij de pluginauteur met het volledige foutspoor. De pluginaanroep moet naar de juiste thread worden verplaatst.
Goed om te weten: Laat de beveiligingscontrole ingeschakeld. Door die uit te schakelen wordt de foutieve toegang tot de wereld niet verholpen.
Staat jouw melding er niet bij?
Lees de hele melding, ook de regels ervoor. Daar staat vaak wat de plugin net wilde doen. In de stacktrace verraden de bestandsnamen in de „at”-regels, zoals <Plugin>.jar, en de pakketnamen de plugin of mod. Regels met java.base, net.minecraft, org.bukkit of io.papermc horen bij Java en de server. Maak een back-up, werk de veroorzaker bij en start opnieuw op. Kom je er niet uit, open dan een ticket en geef het tijdstip van de melding door.