A plugin fails while handling something in game
A plugin threw an error while handling a server event, or could not listen to an event the server does not have, so part of that plugin does not work.
PluginsPaper, Spigot, Bukkit, Velocity, BungeeCord, Waterfall[20:13:51 ERROR]: Could not pass event PlayerJoinEvent to WelcomeKit v1.8.0
java.lang.NullPointerException: Cannot invoke "org.bukkit.Location.getWorld()" because "spawn" is null
at WelcomeKit-1.8.0.jar//dev.example.welcomekit.JoinListener.onJoin(JoinListener.java:44) ~[WelcomeKit-1.8.0.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21.1-R0.1-SNAPSHOT.jar:?]Your log will have other names, versions and times. Search a line of it from all failures.
What it means
Plugins react to events: a player joining, a block breaking, a chat message, the proxy starting. The server calls each plugin’s listener for the event. When a listener throws an error, the server logs it and goes on with the next listener, so the game keeps running but what that plugin should have done for that event did not happen. Because it happens every time the event fires, the same error can fill the log.
A second form is printed at start: a plugin asks to listen to an event the server does not have. That event belongs to a newer server version than the one running, and the plugin’s listener is not registered at all.
Why it happens
- The plugin is built for another server version. It expects classes or behaviour of a newer or older Minecraft version. The “does not exist” form always means the plugin needs a newer server.
- A configuration value it relies on is missing. A spawn point, a world name or a message the plugin’s code reads without checking it, as in the example above.
- A conflict with another plugin. Another plugin changed or cancelled the event in a way this one does not expect.
- A bug in the plugin. The exception’s first lines show the plugin’s own class and line.
How to fix
- Find the event and the plugin in the error, then read the first lines of the exception under it.
- Update the plugin to the latest build for your server software and Minecraft version.
- If the error names a setting or a world, check the plugin’s configuration in its folder under
plugins/(take a copy first) and restart the server. - For the “does not exist” form, use a build of the plugin made for your Minecraft version, or update the server. Updating the Minecraft version changes the world, so take a backup first.
- If the plugin is up to date and configured, send its author the error with the lines under it, the event and your server version.
In Perland
The issue appears in the server’s Diagnosis tab with the plugin, its version and the event it failed on, merged into one entry however many times it happened. Plugin Studio can update the plugin or remove it, and the plugin’s configuration files open in Plugin Studio’s config studio or in the Files tab.
References
Details the diagnosis reports
Perland's server diagnosis returns this failure as the code plugin_event_error with these parameters, each present only when the log names it.
| Parameter | Meaning |
|---|---|
event | The event the plugin was handling or tried to listen to, such as `PlayerJoinEvent` or `ProxyInitializeEvent`. |
plugin | The plugin that failed, by its name (its id on Velocity). |
version | The plugin's version as the log prints it. Absent on Velocity 3, which prints no version here. |
Log lines this page covers
Could not pass event ... to ... v...Plugin ... v... has failed to register events for class ... because ... does not existCouldn't pass ... to ...