Throughout the Minecraft community, you’ve likely heard of server admins asking about, or blaming various issues on, plugins conflicts. You might be wondering what plugin conflicts actually are, what kinds of problems they can cause, how common they actually are, and what you can do about them. Throughout this article, all of these questions will be answered.
At its simplest, a plugin conflict is an issue caused by two plugins not behaving well together. A straightforward example would be two plugins trying to do the same thing, such as adding some text to the chat. If both of those plugins activate at once, suddenly that text is added twice. In most cases, conflicts aren’t a bug or a problem with either, they’re entirely expected behaviour. If you have two plugins that add text, the expected outcome is the text is added twice.
The more problematic form of plugin conflict is when one plugin causes another plugin to have an incorrect view of the Minecraft world. To use a real-world example, CraftBook has a feature that allows snow to realistically flow and disperse as it lands. The plugin FastAsyncWorldEdit had a bug where it broke block positions, meaning plugins would not have an accurate view of the location of blocks in the world. This caused CraftBook to try to set snow on top of blocks, but instead it would replace the block itself. Therefore, causing snow to slowly corrode the world rather than build up. While this is a more serious example, and caused by an actual bug in another plugin, these kinds of conflicts can cause major damage and be hard to pin down.
Another very common issue that is seen on servers, are servers using multiple world protection all applying at once. Well-written world protection plugins will never override existing protections, and just apply their own when told to and necessary. This means if you were to use MultiVerse and disable PvP on a world, you cannot create a region with WorldGuard that allows PvP. This is correct behaviour from both MultiVerse and WorldGuard, as it’s worse for a plugin to override the protection of another plugin. The most dangerous world protection plugin conflicts occur when plugins try to override protection, as this can cause situations where protections that were expected no longer exist, or protections are partially applied in a broken state. The correct solution is to use a single plugin to handle this, or to only let one plugin handle a specific type of protection.
In general cases, actual conflicts between plugins are rare. Due to the way the Bukkit API works, plugins can co-exist without causing conflicts in almost all circumstances. When plugins do the wrong thing or have major bugs that affect other plugins, more problematic conflicts can occur. If you’re using widely used and mature plugins, this is a rare issue. While being aware is important, it’s not something you should expect to see often.
A notable exception is with AntiCheat plugins. AntiCheat plugin developers often refuse to work with developers of other plugins to resolve issues, or even allow other developers to resolve them. Public AntiCheat plugins such as NoCheatPlus are usually well supported, however paid ones are generally very hostile to other developers.
If you’ve found an issue that you believe is caused by a conflict, and you know which plugins are conflicting, there are two easy paths to take. Report the issue to the developers of both plugins, or disable the conflicting functionality in one plugin when possible. For example, in the above example of two plugins adding text to the chat, disabling that feature in one of the plugins is a workable solution. If the issue is caused by a plugin doing something wrong, it’s generally best to switch to another plugin. Using reputable well-known plugins will reduce the risk of these sorts of bugs.
Sometimes two small plugins are too complex to have work well together, so switching to another plugin might be the ideal solution. This is one of many advantages of large plugins with many features, rather than multiple small plugins.
If you’re unsure on what plugin is actually causing the conflict, performing a binary search on your list of plugins can help narrow it down in a faster way. This process is described in this article. From then, you can use the above steps to try to find a solution.
If all else fails or you can’t get in touch with the plugin developers, the Paper Discord
#paper-help channel is a great resource.
Plugin conflicts are a commonly mentioned but often misunderstood concept amongst Minecraft server administrators. Many simple examples of conflicts are actually expected or correct behaviour to prevent more severe issues. If poorly written or buggy plugins are used however, more severe conflicts that are harder to find may occur. In saying this though, plugin conflicts are overall a rare occurrence on Bukkit-based servers due to the way Bukkit works.
This article is part of a series on how to run a Minecraft server. Click here to find out more