Wenn ein Plugin oder eine Mod im laufenden Betrieb auf einen Programmfehler stößt, schreibt Java eine Fehlermeldung mit Stacktrace ins Log. Der Stacktrace ist die Liste der „at“-Zeilen unter der Fehlerzeile. Er zeigt, welcher Programmteil gerade lief, und verrät so meist das verantwortliche Plugin oder die Mod. Die meisten dieser Fehler legen den Server nicht lahm, aber eine Funktion fällt aus, und wiederholte Fehler füllen die Konsole.

Jeder Abschnitt unten behandelt eine Meldung: wie sie aussieht, was dahintersteckt und was du tun kannst. Die vollständige Meldung findest du in der Konsole oder unter Dateien in logs/latest.log. Lies dort auch die Zeilen direkt davor und danach. Bevor du Konfigurations- oder Weltdateien änderst oder Plugins austauschst, lege unter Sicherungen eine Sicherung an. Plugin-Dateien tauschst du am besten bei gestopptem Server aus.

NullPointerException: Plugin oder Mod greift auf einen fehlenden Wert zu

So sieht die Meldung aus:

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//<Paket>.<Klasse>.<Methode>(<Klasse>.java:<Zeile>)

Was dahintersteckt: Ein Plugin oder eine Mod wollte mit einem Objekt arbeiten, das an dieser Stelle nicht existiert. Java nennt diesen leeren Wert „null“. Hinter „Cannot invoke“ steht die aufgerufene Methode, hinter „because“ der fehlende Wert, im Beispiel die Zusatzdaten eines Gegenstands. Die „at“-Zeilen darunter heißen Stacktrace: die Kette der Aufrufe bis zum Fehler. Die erste nennt den Verursacher. Der Server läuft weiter, nur die betroffene Aktion bricht ab.

So behebst du es:

  1. Öffne die vollständige Meldung in der Konsole oder in logs/latest.log und lies die erste „at“-Zeile.
  2. Bei Plugins steht dort ein Dateiname wie <Plugin>.jar, bei Mods die Mod-Datei in eckigen Klammern. Stehen dort nur Server-Teile wie org.bukkit oder net.minecraft, lies weiter bis zum ersten Plugin- oder Mod-Namen.
  3. Aktualisiere dieses Plugin unter Plugins bzw. die Mod unter Mods. Selbst hochgeladene Dateien tauschst du unter Dateien in plugins/ oder mods/ aus.
  4. Bleibt der Fehler nach dem Update, melde ihn dem Autor mit der vollständigen Meldung und der Aktion, bei der er auftritt.

Gut zu wissen: Steht auf Mod-Servern pl:mixin:APP:<mod>.mixins.json in der Zeile, hat diese Mod die Stelle per Mixin (Eingriff in fremde Spielteile) verändert und ist ein guter zweiter Verdächtiger.

„Could not pass event“: Plugin stürzt bei einem Spiel-Ereignis ab

So sieht die Meldung aus:

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//<Paket>.<Klasse>.<Methode>(<Klasse>.java:<Zeile>)

Was dahintersteckt: Plugins reagieren auf Ereignisse (Events) wie einen Beitritt, einen Klick ins Inventar oder Schaden. Hat ein Plugin dabei eine Exception geworfen, also einen Java-Fehler, der den Ablauf abbricht, fängt der Server sie ab und schreibt diese Meldung. Nach „to“ stehen Plugin und Version, davor das Ereignis. Entscheidend ist die Zeile darunter: „NoSuchMethodError“ oder „NoSuchFieldError“ heißt, das Plugin ist für eine andere Server-Version gebaut und sucht eine Funktion, die es so nicht gibt. Andere Fehlerarten deuten meist auf einen Fehler im Plugin selbst. Der Server läuft weiter, die Funktion des Plugins fällt bei diesem Ereignis aus.

So behebst du es:

  1. Lies in der Konsole Plugin-Name und Version nach „to“ und die Fehlerzeile direkt darunter.
  2. Prüfe unter Version, welche Server-Version läuft, und suche auf der Plugin-Seite eine Fassung, die genau diese Version unterstützt.
  3. Spiele die neue Fassung unter Plugins ein und starte den Server neu.
  4. Bleibt der Fehler, melde ihn dem Plugin-Autor mit der Zeile „Could not pass event …“ und der Fehlerzeile darunter.

Ausführlich zu „NoSuchMethodError“ und „NoSuchFieldError“: Plugin passt nicht zur Server-Version.

„Task … generated an exception“: Plugin-Aufgabe scheitert im Hintergrund

So sieht die Meldung aus:

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

Was dahintersteckt: Plugins planen Aufgaben (Tasks), die regelmäßig laufen, zum Beispiel Partikel zeigen, Hologramme auffrischen oder Daten speichern. Eine dieser Aufgaben ist mit einem Fehler abgebrochen. Passiert das laufend, oft im Sekundentakt, ist das Plugin meist nicht mit der installierten Server-Version verträglich. Typisch ist das nach einem Server- oder Plugin-Update. Der Server läuft weiter, aber die Funktion des Plugins fällt teilweise aus und die Konsole läuft voll.

So behebst du es:

  1. Lies den Plugin-Namen nach „for“ und die Fehlerzeile darunter.
  2. Prüfe unter Plugins, ob es für dieses Plugin eine neuere Fassung für deine Server-Version gibt, spiele sie ein und starte neu.
  3. Gibt es keine passende Fassung, deaktiviere das Plugin vorübergehend. Verschiebe dazu die .jar-Datei unter Dateien aus dem Ordner plugins/ in einen eigenen Ordner und starte neu. Der Dauerfehler bremst sonst den Server aus.
  4. Prüfe nach dem Neustart in der Konsole, ob die Meldung ausbleibt.

Gut zu wissen: Steht unter der Meldung „NoSuchMethodError“ oder „NoSuchFieldError“, ist es fast immer eine Versionsfrage. Andere Fehlerarten meldest du dem Autor, wenn auch die neueste Fassung sie zeigt.

Plugin-Befehl oder -Aufgabe bricht mit einem Fehler ab

So sieht die Meldung aus:

[Essentials] Command <Befehl> failed:
[<Plugin>] Plugin <Plugin> v<Version> generated an exception while executing task <Nummer>
Error executing task on Server

Was dahintersteckt: Ein Plugin ist bei einem Befehl oder einer geplanten Aufgabe mit einer Exception abgebrochen. Die drei Zeilen oben sind typische Formen dieser Meldung. Der Server läuft weiter, die betroffene Funktion des Plugins aber nicht. Die eigentliche Ursache steht in den Zeilen darunter, bei verschachtelten Fehlern in der Zeile „Caused by“. Steht dort „Cannot perform command async“, hat ein Plugin einen Befehl aus einem Hintergrund-Thread ausgelöst. Ein Thread ist ein paralleler Arbeitsstrang; Befehle darf aber nur der Haupt-Thread des Servers ausführen. Das ist ein Fehler im Plugin.

So behebst du es:

  1. Suche unter der Meldung die „Caused by“-Zeile bzw. die erste Zeile mit „Exception“ oder „Error“.
  2. Ermittle das Plugin: Es steht in der Meldung selbst oder in den „at“-Zeilen als <Plugin>.jar.
  3. Aktualisiere das Plugin unter Plugins auf eine Fassung für deine Server-Version und starte neu.
  4. Probiere den Befehl erneut. Bleibt der Fehler, melde ihn dem Autor mit Befehl, Uhrzeit und vollständiger Meldung.

Gut zu wissen: „NoSuchFieldError“ mit einem Partikel- oder Attributnamen bedeutet, dass das Plugin einen Namen nutzt, den deine Server-Version nicht mehr kennt. Dann hilft nur eine neuere Plugin-Fassung.

ClassCastException: Zwei Mods oder Plugins passen nicht zusammen

So sieht die Meldung aus:

java.lang.ClassCastException: class <PaketA>.<KlasseA> cannot be cast to class <PaketB>.<KlasseB>

Was dahintersteckt: Java arbeitet mit festen Datentypen. Hier hat eine Mod oder ein Plugin ein Objekt eines bestimmten Typs erwartet, von einer anderen Komponente aber einen anderen bekommen. Die Paketnamen vor den Klassennamen, etwa net.<autor>.<mod>, verraten meist, welche zwei Mods oder Plugins beteiligt sind. Typisch ist das, wenn eine Mod aktualisiert wurde und eine abhängige Mod nicht. Oft fällt nur eine Funktion aus, zum Beispiel Beute aus Truhen oder ein Klick im Inventar.

So behebst du es:

  1. Lies beide Klassennamen in der Meldung und ordne sie über die Paketnamen den Mods oder Plugins zu.
  2. Prüfe, welche der beiden zuletzt aktualisiert wurde.
  3. Bring beide auf zueinander passende Versionen: beide aktualisieren oder beide auf den vorherigen Stand zurücksetzen. Die Projektseiten nennen, was zusammenpasst.
  4. Läuft ein Modpack, aktualisiere besser das ganze Modpack statt einzelner Mods.
  5. Starte neu und prüfe, ob die Meldung beim selben Vorgang wiederkommt.

Mehr zu Mod-Konflikten: Mod-Fehler auf Forge, NeoForge und Fabric.

ArrayIndexOutOfBoundsException: Zugriff auf einen fehlenden Listeneintrag

So sieht die Meldung aus:

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

Was dahintersteckt: Ein Plugin oder eine Mod wollte einen Eintrag aus einer Liste lesen, die kürzer ist. Java zählt ab 0: „Index 3 … length 3“ heißt, es gibt nur die Einträge 0 bis 2. Häufige Auslöser sind ein Befehl mit zu wenigen Argumenten oder eine Konfigurationszeile, in der Werte fehlen. Ältere Plugins stolpern außerdem, wenn sie die Server-Version aus einem internen Namen herauslesen, den neuere Server-Versionen anders aufbauen. Dann steht in der „at“-Zeile oft etwas mit „Version“, wie im Beispiel. Der Server läuft weiter.

So behebst du es:

  1. Lies die erste „at“-Zeile unter der Meldung. Sie nennt das Plugin bzw. die Mod.
  2. Trat der Fehler bei einem Befehl auf, prüfe in der Hilfe des Plugins, ob ein Argument fehlt.
  3. Hast du kurz vorher die Konfiguration geändert, vergleiche die betroffene Zeile mit der Vorlage auf der Plugin-Seite oder mit einer Sicherung.
  4. Aktualisiere das Plugin unter Plugins und starte neu. Bleibt der Fehler, melde ihn dem Autor.

Hilfe zu fehlerhaften Einstellungen: Konfigurationsdatei eines Plugins ist fehlerhaft.

NumberFormatException: Ein Text sollte eine Zahl sein

So sieht die Meldung aus:

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

Was dahintersteckt: Das Spiel, eine Mod oder ein Plugin wollte einen Textwert als Zahl lesen, und der Text war keine Zahl. In den Anführungszeichen steht, was tatsächlich ankam. Ursache kann eine Konfiguration, ein unerwarteter Datenwert oder ein Versions- bzw. Programmfehler sein. Zwei Fälle erkennst du am Wert: Ein Platzhalter mit Prozentzeichen wie oben wurde nicht ersetzt. Meist fehlt dann die passende Erweiterung für PlaceholderAPI, das Plugin, das solche Platzhalter füllt, oder das Plugin, das den Wert liefert. Ein Wort wie craftbukkit deutet darauf hin, dass ein älteres Plugin die Server-Version falsch ausliest.

So behebst du es:

  1. Prüfe den vollständigen Stacktrace und aktualisiere die dort genannte Komponente.
  2. Bei einem Platzhalter: Teste im Spiel mit /papi parse me <Platzhalter>, ob er einen Wert liefert. Falls nicht, installiere die passende PlaceholderAPI-Erweiterung, zum Beispiel mit /papi ecloud download <Name>, und lade sie mit /papi reload.
  3. Nennt die Meldung eine Datei oder Einstellung, vergleiche den Wert mit der Standardkonfiguration des Plugins.
  4. Starte neu und löse die Aktion erneut aus.

ArrayIndexOutOfBoundsException ohne weitere Angaben

So sieht die Meldung aus:

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

Was dahintersteckt: Ein Plugin oder eine Mod hat einen ungültigen Listenindex verwendet, wie im Abschnitt davor. Hier fehlen aber Index und Länge. Das kommt vor, wenn derselbe Fehler sehr oft auftritt: Java lässt die Details dann aus Leistungsgründen weg. Die Zeile davor verrät oft, welches Plugin gerade was tun wollte, im Beispiel einen Eintrag laden. Die erste Stacktrace-Zeile darunter, falls vorhanden, nennt den Verursacher.

So behebst du es:

  1. Lies die Zeile direkt vor der Meldung. Dort steht oft das Plugin in eckigen Klammern.
  2. Lies die erste Stacktrace-Zeile unter der Meldung.
  3. Fehlt beides, suche in logs/latest.log weiter oben das erste Auftreten. Dort steht der Fehler meist noch vollständig. Ältere Logs liegen gepackt im Ordner logs/.
  4. Aktualisiere das zuerst genannte Plugin bzw. die Mod. Nennt die Zeile davor einen bestimmten Eintrag, prüfe ihn in der Konfiguration des Plugins.
  5. Bleibt der Fehler, melde ihn dem Autor.

ExceptionInInitializerError: Plugin- oder Mod-Klasse lässt sich nicht einrichten

So sieht die Meldung aus:

Exception in thread "ForkJoinPool-3-worker-1" java.lang.ExceptionInInitializerError
Caused by: <Fehlerart>: <Meldung>

Was dahintersteckt: Java richtet jede Klasse, also jeden Baustein eines Programms, beim ersten Gebrauch einmal ein. Genau dabei ist eine Klasse eines Plugins oder einer Mod abgestürzt. Danach bleibt sie für diesen Serverlauf unbrauchbar, deshalb folgen oft weitere Fehler wie „NoClassDefFoundError“ mit demselben Klassennamen. Die eigentliche Ursache und meist auch das betroffene Plugin oder die Mod nennt die „Caused by“-Kette darunter. Je nachdem, wo es passiert, fällt eine Funktion aus oder das Plugin bzw. die Mod lädt gar nicht.

So behebst du es:

  1. Lies in der Konsole oder in logs/latest.log die erste „Caused by“-Zeile unter der Meldung.
  2. Ermittle aus den „at“-Zeilen darunter das Plugin oder die Mod, etwa am Dateinamen mit .jar.
  3. Aktualisiere es oder ersetze es durch eine Fassung, die zu deiner Server-Version und deiner Server-Software passt.
  4. Starte den Server neu. Die Klasse wird erst beim nächsten Start neu eingerichtet.

Bei Versionsfragen hilft: Plugin passt nicht zur Server-Version.

Interner Fehler in einem Plugin, etwa beim Speichern

So sieht die Meldung aus:

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

Was dahintersteckt: Ein Plugin ist bei einer eigenen Aufgabe auf einen Fehler gestoßen, etwa beim Speichern, beim Verarbeiten einer Nachricht oder beim Start. Plugin-Nachrichten sind Datenpakete, die zum Beispiel ein Proxy wie BungeeCord oder Velocity mit dem Server austauscht. Den Namen des Plugins zeigt die Meldung in eckigen Klammern oder am Zeilenanfang. Je nach Fehler fällt nur diese Aktion aus oder das Plugin schaltet sich ab. Geht es ums Speichern, kümmere dich zeitnah darum, damit keine Daten verloren gehen.

So behebst du es:

  1. Lies den Plugin-Namen und die Zeilen direkt unter der Meldung in der Konsole.
  2. Aktualisiere das Plugin unter Plugins und starte neu.
  3. Bleibt der Fehler, lege eine Sicherung an, entferne das Plugin testweise und prüfe, ob die Meldung verschwindet.
  4. Melde den Fehler dem Plugin-Autor mit den Zeilen aus der Konsole.

Scheitert das Speichern wiederholt: Plugin kann Datenbank oder Dateien nicht speichern.

Skript-Fehlerbericht mit #!#!: ein Script lädt nicht

So sieht die Meldung aus:

#!#! Current node: <Zeile aus der .sk-Datei>
#!#! End of Error.

Was dahintersteckt: Skript ist ein Plugin, mit dem du Serverfunktionen in einfachen Textdateien mit der Endung .sk schreibst. Stellt es beim Laden eines Scripts oder eines Addons einen schweren Fehler fest, schreibt es einen Bericht, dessen Zeilen alle mit #!#! beginnen. Häufige Ursachen: Ein Addon wie skript-reflect oder SkBee passt nicht zur installierten Skript-Version, oder eine Plugin-Datei wurde bei laufendem Server ersetzt. Dann steht „zip file closed“ im Bericht. Das betroffene Script funktioniert nicht, der Server läuft weiter.

So behebst du es:

  1. Lies im Bericht die Zeile „Current node“ (sie nennt die betroffene .sk-Datei) und die Zeile „Caused by“.
  2. Prüfe auf den Projektseiten, welche Addon-Versionen zu deiner Skript-Version passen, und bring Skript und Addons auf zueinander passende Stände.
  3. Tausche Plugin-Dateien nur bei gestopptem Server aus und starte den Server danach neu.
  4. Lade das Script mit /sk reload <datei> und lies die Ausgabe in der Konsole.

Gut zu wissen: Die Scripts liegen unter Dateien im Ordner plugins/Skript/scripts/. Sichere eine Datei, bevor du sie änderst.

IndexOutOfBoundsException: „must be less than size“

So sieht die Meldung aus:

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

Was dahintersteckt: Das Spiel, eine Mod oder ein Plugin hat einen Listeneintrag abgefragt, den es nicht gibt. „index (1) must be less than size (1)“ heißt: Die Liste hat genau einen Eintrag mit der Nummer 0, gefragt war Nummer 1. Eine Konfiguration kann beteiligt sein, die Meldung allein belegt das aber nicht. Steht „Caused by:“ davor, ist sie die Ursache eines Fehlers, der weiter oben gemeldet wurde. Was ausfällt, zeigt diese obere Meldung.

So behebst du es:

  1. Lies den vollständigen Stacktrace in logs/latest.log, auch die Fehlermeldung darüber.
  2. Suche die erste „at“-Zeile, die eine externe Komponente nennt, also ein Plugin oder eine Mod statt Java oder einer Bibliothek wie java.base oder com.google.common.
  3. Aktualisiere diese Komponente und starte neu.
  4. Nur wenn der Zusammenhang auf eine konkrete Liste verweist, etwa Menüeinträge oder Belohnungen, prüfe deren Konfiguration auf fehlende oder leere Einträge.

„Asynchronous Save Players“: Plugin speichert aus dem falschen Thread

So sieht die Meldung aus:

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

Was dahintersteckt: Ein Plugin hat das Speichern aller Spielerdaten aus einem Hintergrund-Thread angestoßen, also aus einem parallelen Arbeitsstrang neben dem Haupt-Thread, der die Welt berechnet. Das ist nicht vorgesehen. Paper blockiert den Thread, bis das Speichern durch ist, und schreibt diese Warnung. Das ist ein Fehler im Plugin, der kurze Ruckler verursachen kann. Der Server läuft weiter.

So behebst du es:

  1. Lies die „at“-Zeilen unter der Meldung. Die ersten gehören zu Paper und Minecraft (io.papermc, net.minecraft); gesucht ist die erste „at“-Zeile, die ein Plugin nennt.
  2. Aktualisiere dieses Plugin unter Plugins und starte neu.
  3. Bleibt die Warnung, melde den Fehler dem Plugin-Autor mit der vollständigen Meldung.

Gut zu wissen: Eine einzelne Warnung kannst du gelassen sehen. Kommt sie regelmäßig und merken Spieler Ruckler, lohnt sich das Update.

„Unhandled exception executing command“: Plugin-Befehl bricht ab

So sieht die Meldung aus:

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

Was dahintersteckt: Ein Plugin hat beim Ausführen eines seiner Befehle einen Fehler geworfen. Befehl und Plugin stehen in der Meldung. Meist passt das Plugin nicht zur Serverversion oder zu einem anderen Plugin, von dem es abhängt. Wer den Befehl eingegeben hat, sieht im Chat meist nur einen allgemeinen Hinweis auf einen internen Fehler. Der Befehl wurde nicht ausgeführt, der Server läuft weiter.

So behebst du es:

  1. Lies die „Caused by“-Zeile unter der Meldung.
  2. Prüfe unter Version deine Serverversion und aktualisiere das Plugin unter Plugins auf eine Fassung dafür.
  3. Nennt die Fehlerzeile ein anderes Plugin, von dem das Plugin abhängt, bring dieses ebenfalls auf eine passende Version.
  4. Starte neu und teste den Befehl. Tritt der Fehler weiter auf, melde ihn mit dieser Zeile beim Plugin-Autor.

Mehr zu Abhängigkeiten: Plugin braucht ein anderes Plugin.

Befehlsfehler mit „[ACF]“ im Log

So sieht die Meldung aus:

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

Was dahintersteckt: Viele Plugins bauen ihre Befehle mit einer fertigen Bibliothek, dem Aikar Command Framework (ACF). Bricht ein Befehl mit einer Exception ab, gibt ACF den Fehler samt Stacktrace aus, jede Zeile mit dem Plugin-Namen davor. Der Name in der ersten Klammer ist also das betroffene Plugin, nicht ACF. Steht „IncompatibleClassChangeError“ oder „NoSuchMethod“ in der Ausgabe, passt das Plugin nicht zur Server-Version. Der Befehl wurde nicht ausgeführt, der Server läuft weiter.

So behebst du es:

  1. Lies den Plugin-Namen in der ersten eckigen Klammer und die erste Fehlerzeile mit „Exception“ oder „Error“.
  2. Aktualisiere das Plugin unter Plugins auf eine Version für deine Server-Version.
  3. Starte neu und teste den Befehl.
  4. Bleibt der Fehler, melde ihn dem Plugin-Autor mit der ersten Fehlerzeile.

Gut zu wissen: ACF musst du nicht selbst installieren oder aktualisieren. Es steckt im jeweiligen Plugin.

GravesX: Fehler in einer Hintergrundaufgabe

So sieht die Meldung aus:

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

Was dahintersteckt: GravesX legt beim Tod eines Spielers ein Grab mit seinen Gegenständen an. Das Plugin wirft in einer Hintergrundaufgabe eine NullPointerException, etwa beim Vergleich zweier Versionsnummern, wenn ein Wert („version2“) fehlt. Das ist ein Fehler im Plugin selbst, kein Server- oder Hosting-Problem. Der Server läuft normal weiter.

So behebst du es:

  1. Aktualisiere GravesX unter Plugins auf die neueste Version und starte neu.
  2. Prüfe in der Konsole, ob die Meldung wiederkommt.
  3. Besteht der Fehler weiter, melde ihn beim GravesX-Projekt mit der vollständigen Meldung.
  4. Willst du das Plugin bis zum Fix testweise deaktivieren, lass vorher offene Gräber leeren. Ohne das Plugin lassen sie sich nicht wie gewohnt öffnen.

FastAsyncWorldEdit: Befehl ist intern fehlgeschlagen

So sieht die Meldung aus:

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

Was dahintersteckt: FastAsyncWorldEdit (FAWE) ist eine schnelle Variante von WorldEdit, mit der du große Bereiche auf einmal bearbeitest. Bei einem Befehl ist FAWE auf einen fehlenden Wert gestoßen. Der Vorgang wurde nicht vollständig ausgeführt, die Änderung kann also nur zum Teil in der Welt angekommen sein. Der Server läuft weiter.

So behebst du es:

  1. Prüfe im Spiel, was der Befehl verändert hat. Mit //undo nimmst du den letzten Schritt bei Bedarf zurück.
  2. Aktualisiere FAWE unter Plugins auf eine Fassung für deine Server-Version und starte neu.
  3. Führe den Befehl erneut aus.
  4. Bleibt der Fehler, melde den vollständigen Stacktrace mit dem genauen Befehl an die FAWE-Entwickler.

Grundlagen zum Rückgängigmachen: WorldEdit: bauen und rückgängig machen.

Gut zu wissen: Installiere FAWE nicht zusätzlich zum normalen WorldEdit. Beide zusammen vertragen sich nicht; nutze nur eines.

LibreLogin: Befehl ist intern fehlgeschlagen

So sieht die Meldung aus:

[LibreLogin] An unexpected exception occurred while performing command …

Was dahintersteckt: LibreLogin ist ein Login-Plugin: Spieler melden sich mit einem Passwort an, oft auf Servern im Offline-Modus. Beim Ausführen eines seiner Befehle, etwa zum Anmelden oder Registrieren, ist es mit einer unerwarteten Exception abgebrochen. Für den Spieler schlägt der Befehl fehl. Trifft es das Anmelden, kommt er nicht weiter, bis der Befehl wieder klappt. Der Server selbst läuft weiter.

So behebst du es:

  1. Lies in der Konsole die Exception unter der Meldung und notiere, welcher Befehl es war.
  2. Aktualisiere LibreLogin unter Plugins und starte neu.
  3. Teste den Befehl mit einem Spieler erneut.
  4. Bleibt der Fehler, melde die Exception samt Befehl an den Plugin-Autor.

Nennt die Exception eine Datenbank: Plugin kann seine Datenbank nicht öffnen.

LibreLogin: Netzwerk-Handler ist doppelt registriert

So sieht die Meldung aus:

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

Was dahintersteckt: Jede Spielerverbindung läuft durch eine Kette von Verarbeitungsschritten, die Netzwerk-Pipeline. LibreLogin oder die Bibliothek PacketEvents versucht, denselben Schritt, einen Decoder für eingehende Daten, ein zweites Mal einzubauen. Neue Verbindungen können dann fehlschlagen. Typische Auslöser sind zwei LibreLogin-Dateien im Plugin-Ordner, unpassende Versionen von LibreLogin und PacketEvents oder ein Neuladen der Plugins im laufenden Betrieb.

So behebst du es:

  1. Öffne unter Dateien den Ordner plugins/ und prüfe, ob LibreLogin nur einmal vorhanden ist. Entferne ältere Kopien, nachdem du eine Sicherung angelegt hast.
  2. Aktualisiere LibreLogin und, falls installiert, PacketEvents gemeinsam.
  3. Stoppe den Server und starte ihn vollständig neu. Ein Neuladen mit /reload oder einem Plugin-Manager reicht hier nicht.
  4. Teste den Beitritt mit einem Spieler.

Mehr zu doppelten Dateien: Plugin-Datei ist beschädigt oder doppelt.

LightAntiCheat-Plus: Fehler in einer Bewegungsprüfung

So sieht die Meldung aus:

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

Was dahintersteckt: LightAntiCheat-Plus ist ein Anti-Cheat-Plugin, das unter anderem Spielerbewegungen prüft. Eine seiner Prüfungen versucht, eine Liste zu leeren, die sich nicht verändern lässt. Das ist ein Fehler im Plugin. Die betroffene Prüfung kann ausfallen oder falsche Ergebnisse liefern, also Cheats übersehen oder ehrliche Spieler zu Unrecht verdächtigen. Der Server läuft weiter.

So behebst du es:

  1. Aktualisiere LightAntiCheat-Plus unter Plugins und starte neu.
  2. Kommt die Meldung weiter, deaktiviere bis zum Fix die betroffene Prüfung SpeedD in der Konfiguration des Plugins. Du findest sie unter Dateien im Ordner des Plugins unter plugins/. Sichere die Datei vorher.
  3. Starte neu und prüfe in der Konsole, ob die Meldung ausbleibt.
  4. Schalte die Prüfung wieder ein, sobald eine korrigierte Fassung erschienen ist.

Gut zu wissen: Solange die Meldung erscheint, nimm Verdachtsfälle wegen Bewegung mit Vorsicht.

MagicSpells meldet einen Fehler bei einem Zauber

So sieht die Meldung aus:

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

Was dahintersteckt: MagicSpells ist ein Plugin für eigene Zauber. Es meldet einen Fehler beim Ausführen oder Speichern von Zaubern, häufig wegen eines Eintrags in seiner Konfiguration, den diese Version nicht versteht. Die Effekte laufen über die Bibliothek EffectLib; Meldungen mit „Unexpected EffectLib Error“ betreffen diese Effekte. Zusätzlich legt MagicSpells einen Bericht im Ordner plugins/MagicSpells/errors ab. Scheitert das Speichern des Zauberbuchs (spellbook), wird der Stand dieses Spielers nicht gesichert.

So behebst du es:

  1. Öffne unter Dateien den Ordner plugins/MagicSpells/errors und den neuesten Bericht. Er nennt den Zauber und die Einstellung.
  2. Prüfe diese Einstellung in deinen Zauber-Dateien, etwa auf Schreibfehler oder Werte aus einer älteren MagicSpells-Version. Sichere die Datei vorher.
  3. Halte MagicSpells und EffectLib aktuell und passend zur Server-Version.
  4. Starte neu und teste den Zauber.

SinglePlayerSleep: Schlafen im Bett klappt nicht

So sieht die Meldung aus:

[SinglePlayerSleep] INTERNAL ERROR: Unable to process PlayerBedEnterEvent

Was dahintersteckt: SinglePlayerSleep lässt die Nacht vergehen, wenn ein einzelner Spieler schläft, statt dass alle ins Bett müssen. Beim Betreten eines Betts ist das Plugin abgestürzt. Die Schlaf-Funktion kann für diesen Versuch ausfallen, die Nacht wird dann nicht übersprungen. Meist passt die Plugin-Fassung nicht zur Minecraft-Version. Der Server läuft weiter.

So behebst du es:

  1. Prüfe unter Version, welche Minecraft-Version läuft.
  2. Aktualisiere SinglePlayerSleep unter Plugins auf eine Fassung für diese Version und starte neu.
  3. Teste im Spiel: nachts ins Bett legen und prüfen, ob die Nacht vergeht.
  4. Bleibt der Fehler, melde die Exception unter der Meldung an den Plugin-Autor.

Mehr dazu: Minecraft-Gameregeln erklärt.

Gut zu wissen: Neuere Minecraft-Versionen haben eine eigene Spielregel dafür, wie viel Prozent der Spieler schlafen müssen. Sie kann das Plugin ersetzen.

PacketEvents kann sich nicht in die Verbindung einklinken

So sieht die Meldung aus:

PacketEvents failed to add a decoder to the netty pipeline

Was dahintersteckt: PacketEvents ist eine Bibliothek, über die andere Plugins, etwa Anti-Cheat- oder Login-Plugins, Netzwerkpakete mitlesen. Dafür baut sie einen eigenen Schritt, einen Decoder, in die Netzwerk-Pipeline jeder Verbindung ein. Netty ist die Netzwerkbibliothek, über die der Server Verbindungen abwickelt. Das Einbauen ist gescheitert: Ein anderer Netzwerk-Handler oder eine unverträgliche PacketEvents-Version blockiert die erwartete Reihenfolge. Plugins, die auf PacketEvents aufbauen, arbeiten dann für diese Verbindung nicht richtig.

So behebst du es:

  1. Aktualisiere PacketEvents, Geyser und Floodgate sowie Login- und Anti-Cheat-Plugins gemeinsam auf Fassungen für deine Server-Version.
  2. Prüfe unter Dateien im Ordner plugins/, dass keine Datei doppelt liegt.
  3. Stoppe den Server und starte ihn vollständig neu, ohne Neuladen im laufenden Betrieb.
  4. Teste den Beitritt mit Java und, falls du Geyser nutzt, auch mit Bedrock.

Für Bedrock-Spieler: Bedrock und Geyser: Meldungen im Log.

StringIndexOutOfBoundsException: leerer oder zu kurzer Textwert

So sieht die Meldung aus:

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

Was dahintersteckt: Ein Plugin oder eine Mod wollte ein bestimmtes Zeichen aus einem Text lesen, zum Beispiel das erste Zeichen eines Präfixes. Der Text ist aber kürzer, bei „length 0“ sogar leer. Häufig ist ein erwarteter Konfigurationswert leer, etwa ein Präfix, eine Farbangabe oder ein Name, der nur als '' eingetragen ist. Der Server läuft weiter; die Funktion, die den Text braucht, fällt aus.

So behebst du es:

  1. Lies im Stacktrace die erste Zeile mit einem Plugin- oder Mod-Namen.
  2. Öffne unter Dateien die Konfiguration dieses Plugins im Ordner plugins/<Plugin>/ und suche leere Werte wie '' oder Einträge ohne Wert. Sichere die Datei vorher.
  3. Trage einen gültigen Wert ein oder übernimm den Standardwert aus der Vorlage des Plugins.
  4. Aktualisiere das Plugin und starte neu.

Mehr zu fehlerhaften Einstellungen: Konfigurationsdatei eines Plugins ist fehlerhaft.

„NoSuchFieldException: childHandler“: Netzwerk-Plugin passt nicht zum Server

So sieht die Meldung aus:

java.lang.NoSuchFieldException: childHandler

Was dahintersteckt: Netty ist die Netzwerkbibliothek, über die der Server Verbindungen annimmt. Manche Plugins greifen direkt auf interne Teile davon zu, um sich in Verbindungen einzuklinken. Hier sucht ein Netzwerk-Plugin das interne Feld „childHandler“, das in der installierten Server- oder Netty-Version nicht verfügbar ist. Das Plugin ist also für einen anderen Server-Build gebaut. Betroffen sind meist Netzwerk-, Proxy- oder Protokoll-Plugins; ihre Funktion fällt aus.

So behebst du es:

  1. Lies den Stacktrace unter der Meldung und suche das erste Netzwerk-, Proxy- oder Protokoll-Plugin, zum Beispiel ViaVersion, ProtocolLib oder Geyser.
  2. Prüfe unter Version, welche Server-Version läuft. Die genaue Fassung der Server-Software (Build) steht außerdem in den ersten Zeilen von logs/latest.log.
  3. Aktualisiere das gefundene Plugin auf eine Version für diesen Server-Build und starte neu.
  4. Gibt es noch keine passende Fassung, deaktiviere das Plugin vorübergehend, bis der Autor nachzieht.

Ausführlich: Plugin passt nicht zur Server-Version.

Tab-Vorschläge eines Plugin-Befehls funktionieren nicht

So sieht die Meldung aus:

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

Was dahintersteckt: Beim Drücken der Tab-Taste fragt Minecraft das zuständige Plugin nach möglichen Ergänzungen. Dabei schlägt die Vorschlagsfunktion des Plugins fehl. Der Server läuft weiter, nur die Vorschläge für den betroffenen Befehl fehlen. Die Fehlerspur darunter, der sogenannte Stacktrace, zeigt die beteiligten Programmaufrufe.

So behebst du es:

  1. Lies die vollständige Meldung in der Konsole oder unter Dateien in logs/latest.log. Notiere das Plugin, den Befehl und die erste konkrete Fehlermeldung darunter.
  2. Prüfe unter Version deine Server-Version und installiere unter Plugins eine dafür geeignete Ausgabe des genannten Plugins.
  3. Starte den Server vollständig neu und teste denselben Befehl erneut mit der Tab-Taste.
  4. Bleibt der Fehler, schicke dem Plugin-Autor die vollständige Fehlerspur und beschreibe, an welcher Stelle die Vorschläge ausfallen.

StackOverflowError beim Auswerten einer Suchregel

So sieht die Meldung aus:

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

Was dahintersteckt: Ein regulärer Ausdruck ist eine Suchregel für Text, etwa für Befehlsfilter. Java benötigt beim Prüfen dieser Regel zu viele ineinander verschachtelte Aufrufe und füllt damit den Aufrufstapel. Die genannte Hintergrundaufgabe wird beendet und ihre Arbeit bleibt unvollständig; der Server läuft weiter. StackOverflowError ist ein anderer Fehler als ein voller Java-Arbeitsspeicher.

So behebst du es:

  1. Öffne die vollständige Fehlerspur in der Konsole oder unter Dateien in logs/latest.log. Suche anhand des Thread-Namens und der Plugin-Aufrufe das zuständige Plugin.
  2. Sichere dessen Einstellungen und prüfe konfigurierbare Such- oder Befehlsregeln. Vereinfache die auslösende Regel, sofern du sie selbst eingestellt hast.
  3. Aktualisiere das Plugin unter Plugins auf eine passende Ausgabe und starte den Server vollständig neu.
  4. Ist die Regel fest eingebaut, melde dem Autor die vollständige Fehlerspur und die Eingabe, bei der sie auftritt.

Paper blockiert „entity add“ aus einem Hintergrund-Thread

So sieht die Meldung aus:

Thread <Thread> failed main thread check: entity add

Was dahintersteckt: Paper prüft, ob Änderungen an der Spielwelt auf dem richtigen Thread ausgeführt werden. Ein Thread ist ein eigener Ausführungsstrang des Programms. Hier versucht eine Hintergrundaufgabe, ein Wesen zur Welt hinzuzufügen, und wird durch die Schutzprüfung gestoppt. Die betroffene Aktion scheitert; der Server läuft weiter.

So behebst du es:

  1. Öffne in der Konsole oder unter Dateien die vollständige Fehlerspur in logs/latest.log. Die verkürzte Meldung zeigt oft nur Server-Aufrufe.
  2. Lies weiter bis zum ersten Plugin-Aufruf und notiere, welche Aktion den Fehler ausgelöst hat.
  3. Installiere unter Plugins eine zu deiner Server-Version passende Ausgabe dieses Plugins und starte den Server vollständig neu.
  4. Tritt der Fehler weiter auf, melde ihn dem Plugin-Autor mit der vollständigen Fehlerspur. Der Plugin-Aufruf muss auf den richtigen Thread verlegt werden.

Gut zu wissen: Lass die Schutzprüfung aktiv. Ihr Abschalten behebt den fehlerhaften Zugriff auf die Welt nicht.

Deine Meldung ist nicht dabei?

Lies die ganze Meldung, auch die Zeilen davor. Dort steht oft, was das Plugin gerade tun wollte. Im Stacktrace verraten die Dateinamen in den „at“-Zeilen, etwa <Plugin>.jar, und die Paketnamen das Plugin oder die Mod. Zeilen mit java.base, net.minecraft, org.bukkit oder io.papermc gehören zu Java und zum Server. Lege eine Sicherung an, aktualisiere den Verursacher und starte neu. Kommst du nicht weiter, öffne ein Ticket und nenne die Uhrzeit der Meldung.