Basic Troubleshooting
This guide will help you diagnose your server's problem before reporting it to PaperMC or the plugin's author.
Before following this guide, stop your server first. Modifying server files while it is still running will corrupt them. Only a full server shutdown can prevent this.
Also, if you don't follow this guide carefully or make a mistake while following this guide, you might corrupt your server. It is highly advised to back up your server before following this guide. It would be ideal to create a test server by copying your production server's file, but that's not always possible.
Read the error message
If your server encounters a problem, it will either print an error message on the server console, create a crash report and close itself, or do both.
If your server crashes, the crash report will be saved in the crash-report
directory.
If your server didn't crash, those error messages will be stored in the log
directory along with other messages.
Note that the logs older than the latest will be compressed and not stored as plain text files.
The first thing you have to do is diagnose those messages.
Case 01: Paper watchdog thread dump
If your error message looks like this, do not blindly report it to PaperMC as it says:
[00:00:00] [Paper Watchdog Thread/ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH - git-Paper-366 (MC: 1.19.3) ---
[00:00:00] [Paper Watchdog Thread/ERROR]: The server has not responded for 10 seconds! Creating thread dump
[00:00:00] [Paper Watchdog Thread/ERROR]: ------------------------------
This can be caused by various things. Maybe your server's hardware is not capable of running Minecraft server. Maybe one of the plugins you use is causing lag on your server.
The thread dump from Paper Watchdog can be found below that line. If you find any plugin's name in there, talk to the plugin's author about that, not PaperMC.
Case 02: Stack trace
Almost every problem you encounter will print error message lines, which are called "stack trace", on the server console. Examining the stack trace will help you find out what is causing problems on your server.
The stack trace starts with the error message, exception type, and exception message.
Both error messages and exception messages were put there by the developer of either your plugin or Paper. These messages tell you what problem your server experienced.
An exception type like java.lang.RuntimeException
tells you the type of the exception. This will help the developer (and you) understand the type of problem.
Many lines beginning with at
may appear beneath the exception message. These are the body of the stack trace. These lines tell you where the problem starts. The top line of the body of the stack trace will tell you exactly where the problem occurred and, if possible, display where it came from.
If you find any plugin's name in the stack trace, head to Check Plugin Updates and read from there. In most cases, the plugin, whose name is found on the stack trace, is causing the problem. If not, continue reading.
Here are some examples of stack traces.
Example 01: Server attempted to load chunk saved with newer version of minecraft!
[00:00:00 WARN]: java.lang.RuntimeException: Server attempted to load chunk saved with newer version of minecraft! 3218 > 3120
You tried to load the world generated with a higher version of Minecraft. You cannot do this. If you don't have any backup of your world before the chunk version update, you must use your updated world with a higher version of Minecraft.
Finding the culprit
If you can't find the name of any plugin in the thread dump or stack trace, try these steps.
Disable all plugins
To determine if it is a plugin or Paper itself that is causing problems, disable all of your plugins first.
You can disable all of your plugins by renaming the plugins
directory to something else, such as plugins-disabled
, or by archiving the plugins
directory and deleting it.
After that, try to run your server.
If the problem is resolved after removing the plugins, you know that it was a plugin that caused the issue. If you still experience problems, head to Paper Documentation. Maybe your server is misconfigured, and that is creating issues.
Binary search
To efficiently search for the plugin that is causing the issue, you can do the following:
- Split your plugins into two groups The size of the two groups can be different, but it is ideal if the difference is minimal. Make sure that plugins that depend on each other are grouped together.
- Disable one of the two groups of plugins
You can disable them by changing their extension from
.jar
to something else, such as.jar-disabled
, or move them outside theplugins
directory and into a temporary directory. - Run your server and check if the problem still exists If the problem is resolved, the plugin that caused the issue is one of the disabled plugins. If the problem is not resolved, the plugin that is causing the issue is one of the active plugins.
- Repeat from the start with the suspect plugin group Repeat the steps above with groups that have the plugin that is causing the issue.
Some plugins that you install are not a typical plugin, but a library. These are installed like plugins, however tend to offer few user-facing features and are relied upon by other plugins for their functionality. If you disable a library, plugins that depend on it will not work properly. Common examples of these libraries are ProtocolLib, Vault providers, permission plugins, etc.