Direct answer

A circular loading error means plugins have declared load relationships that form a loop, so no valid first plugin exists. Update the involved plugins, remove the incompatible one, or report the loop to their authors.

Diagnosis to use: A circular dependency means the plugin loader cannot decide which plugin must start first; it is not a player-connection problem.

Read the loop Paper prints

Paper shows the chain, for example Plugin1 → Plugin2 → Plugin3 → Plugin1. Start with the first plugins named in that loop and check for updates or known compatibility notes.

What to collect: Read the plugins named in the first cycle in logs/latest.log. Check each JAR’s plugin.yml or Paper plugin metadata for dependency names and load order. A hard depend is different from softdepend; either may contribute to a loop if declared incorrectly.

Why Paper stops instead of guessing

Picking an arbitrary order can make one plugin access another before it is ready. Paper’s newer plugin loader deliberately rejects cyclic loading rather than silently creating hard-to-debug behavior.

Legacy loading is a last resort

Paper documents -Dpaper.useLegacyPluginLoading=true as a fallback, but warns that it can cause unexpected loading issues and may not remain supported. Use it only as a temporary diagnostic/workaround after a backup, not as the preferred permanent fix.

Targeted repair: Use supported plugin releases whose declared dependencies can be ordered. Report the cycle to the plugin developers if both require each other. Do not rewrite a vendor JAR’s metadata on production to force it to load.

Verify after the change: Restart a test copy and confirm that every named plugin enables without cycle warnings, then test a feature requiring both plugins.

Keep dependency plugins together during testing

If you reproduce the issue on a test copy, do not separate a plugin from required library plugins during binary-search testing. That creates new dependency errors and hides the original loop.

Official references

These references were checked while preparing this fix. Version-specific behavior can change, so use the project documentation for your exact release when a detail differs.

Was this article helpful?
Help us improve this article

Tell us what is missing, unclear, outdated, or incorrect. You can also suggest something we should add.

What could we improve?
Do not include passwords, server IPs, or other private information.0 / 1000