Start with the log, not the plugin list
The server log tells you whether a plugin failed to load, which class was missing and
which file caused the exception. Open logs/latest.log and search for the
plugin name or for words such as Could not load, Unsupported,
NoClassDefFoundError or Exception.
Read the first error, not the last one. Later lines are often consequences of the first failure. If the server will not start at all, the useful line is usually within the last screen of output before it exits.
Change one thing at a time. If you update Java, replace two plugins and edit a config in the same restart, you will not know which change fixed or caused the problem.
The plugin does not appear in /plugins
Check these in order:
- Wrong folder. The JAR must be directly inside the server's
plugins/folder, not in a subfolder and not in the server root. - Nested archive. If you downloaded a ZIP, extract it. A ZIP placed in
plugins/is ignored. - Duplicate versions. Two JARs of the same plugin can prevent one from enabling. Remove the older file.
- No restart. Plugins are loaded at startup. Copying a JAR into a running server does nothing until you restart.
- Java too old. These builds require Java 17 or newer. An older runtime can fail before the plugin registers.
Version and API errors
A plugin compiled for Minecraft 1.21.x will not run on a 1.20.x server. The console may
report an unsupported API version, a missing class or a NoSuchMethodError.
Check the compatibility table before changing configs:
| Plugin | Supported Minecraft |
|---|---|
| UltraTreeFeller 1.1.0 | 1.21.x |
| AutoRefill 1.1.0 | 1.21.x |
| FerKunG Stacker 1.3.0 | 1.20.x – 1.21.x |
If you run 1.20.x, use FerKunG Stacker and skip the other two until you upgrade the
server. Do not edit api-version in plugin.yml to force a load;
it may start but fail later with harder-to-diagnose errors.
The server crashes after installing a plugin
- Stop the server completely.
- Move the newest JAR out of
plugins/. - Start the server again.
- If it starts, the new plugin is the cause. Check its version and the log entry that names it.
- If it still fails, restore the
plugins/folder and world from your backup.
A crash on startup is usually easier to recover from than a corrupted world. That is why the install guide puts the backup before the file copy.
Lag when someone fells a large tree
UltraTreeFeller removes logs in batches. A large tree, or several players felling at once, can briefly exceed what the server can process in a tick.
- Lower
blocks_per_tickfrom20to10or5. - Lower
max_logs_per_treefrom250to100. - Keep
require_leaves: trueso only natural trees are affected. - Disable particles or sound if the client effects are part of the stutter.
If the whole server freezes for several seconds, check whether the world is on a slow disk or whether another plugin is also reacting to block breaks. The log and a timing profiler will show more than guessing at config values.
Items are not stacking
FerKunG Stacker only merges items that are eligible under the current config:
stack-all: falsemeans only items listed underitemsare stacked.- The item may be in
blacklist. preserve-custom-metadata: truekeeps renamed, enchanted or lore-tagged items separate, even when the material matches.- The drops may be farther apart than
stacking-radius. - Tools, armour and other unstackable items are never merged.
Test with plain, newly dropped items before changing the radius. Raising the radius to cover a large farm increases the scan area and can cost more than it saves.
AutoRefill does not refill the hand
- Check
enabled: trueinplugins/AutoRefill/config.yml. - Check whether the item is listed under
ignored-items. - Confirm the player has
autorefill.use; it defaults to true, but a permissions plugin may override it. - Make sure there is another matching stack in the inventory. AutoRefill moves items; it does not create them.
After editing the config, run /autorefill reload or restart the server. If
the command is not recognized, the plugin did not enable; go back to the log.
Players cannot connect
| Symptom | Check |
|---|---|
| Works on the same PC but not from another device | Windows Firewall, the PC's LAN IP and whether the server is bound to the right interface. |
| Works on LAN but not from the internet | Router port forward for TCP 25565, public IP and carrier-grade NAT. |
| Connection times out | Port forward, ISP blocking and whether the server is actually listening. |
| “Failed to verify username” | online-mode and the player's Microsoft account session. |
| “You are not whitelisted” | Add the exact player name and run whitelist on. |
Test locally first, then LAN, then the internet. If the local connection fails, port forwarding is not the problem yet.
Restoring a world backup
- Stop the server and confirm it has exited.
- Rename the current world folders instead of deleting them, for example
world_broken. - Copy the backup world folders back into the server directory.
- Start the server and check the console for chunk or region errors.
- Join and verify the spawn, inventory and recent builds before deleting the renamed copy.
Restore the matching plugins/ folder too if the backup was taken before a
plugin change. A world from a newer Minecraft version may not open on an older server.
Asking for help without wasting time
When you open an issue on the FerNode repository, include:
- Server platform and exact version, for example Paper 1.21.4 build number.
- Plugin name and version.
- Java version from
java -version. - The first error from
logs/latest.log, with any IP addresses or tokens removed. - What you changed immediately before the problem appeared.
That is usually enough to identify the cause without a back-and-forth. Never post your hosting password, console access or private server address.
OutOfMemoryError and heap size
java.lang.OutOfMemoryError: Java heap space means the server ran out of the
memory it was allowed to use. It is not a signal to add a huge number and move on; it is
a signal to find what is consuming memory.
Common causes, roughly in order of frequency:
- Too little heap for the player count. Each player loads chunks and entity data.
- View and simulation distance too high. Chunks stay loaded longer and cost more memory.
- Entity or item buildup. Large farms, dropped items and mob piles grow without a cleanup.
- A plugin leak. A plugin keeps references to players or worlds that should be gone.
- A very large world with many loaded chunks.
Raise -Xmx only after leaving room for the operating system. On an 8 GB
machine, a 6 GB heap leaves little for Windows and can make things worse through
swapping. Then reduce view distance and check for entity buildup before raising it again.
Restarting hides the symptom. If memory climbs until the server dies every few hours, a bigger heap only delays the crash. Take a heap dump or use a profiler and find the object that keeps growing.
Port already in use
java.net.BindException: Address already in use means another process is
listening on the same port. Usually it is a second copy of the server that did not fully
shut down, or two servers configured for 25565.
On Windows, find the process holding the port:
netstat -ano | findstr :25565
The last column is the process ID. Check it in Task Manager before ending it. If you
intentionally run two servers, give the second one a different server-port
and forward that port instead.
On a hosted server, a bind error can also mean the port is reserved by the panel. Use the port the host assigned rather than changing it yourself.
Corrupt chunks and region files
Signs of chunk corruption include players falling through the world, a region that will
not load, or log lines such as Chunk file at ... is missing or
Region file ... is truncated.
Common causes:
- The server was killed or lost power while writing chunks.
- The world was copied while the server was still running.
sync-chunk-writeswas disabled to improve performance.- The disk is failing or full.
Restoring the affected world folder from a backup is the reliable fix. Deleting a region file makes the server regenerate that area, which removes both the corruption and every build inside it. Only do that if you accept the loss and have a backup of the rest.
Prevent the next one: stop the server cleanly, keep sync-chunk-writes on
unless you understand the trade-off, and never copy a live world.
When two plugins disagree
Two plugins can listen to the same event: a block break, an inventory click or a player join. One may cancel the event or change the result, and the other may act on the result before or after it. The symptom is usually a feature that works alone but stops working when another plugin is installed.
Common examples:
- A region-protection plugin cancels block breaks, so tree felling appears to do nothing in protected areas.
- Two stacking plugins both try to merge drops, producing odd counts or duplicate items.
- An anti-cheat plugin flags fast inventory moves from an automatic refill.
- Two plugins register the same command name, so only one of them responds.
To confirm a conflict, stop the server, remove one of the two plugins and reproduce the behaviour. If the feature works, the problem is the interaction, not the config. Then read both plugins' documentation for a world or region exclusion, and configure one of them to stay out of the other's way rather than disabling a feature you need.