- Why PermissionsEx is terrible
- A lot of people ask me “Why do you say PermissionsEx is bad?” and I often have to explain these same facts. So instead, here is a simple description of the troubles of PEX.
- There is a tl;dr at the bottom
- Overrides Bukkit functionality
- Bukkit’s permissions API (nicknamed superperms) was designed as a system for plugin compatibility in the rather important field of determining if a user should be able to perform an action or access a function, without having configurations spread across all your plugins or needing to find a plugin compatible with your permissions system
- PEX decided it was above this idea, and instead of working with the system it works against it. PEX injects its own code into the Bukkit server, and as a result has broken itself and Bukkit many times. The system is implemented poorly, through some nasty reflection that isn’t even cleaned up properly on shutdown. PEX attempts to re-route all permissions checks through its own system; instead of working with Bukkit it actively works against it.
- Things PermissionsEx has broken
- As previously mentioned, PermissionsEx injects itself into the Bukkit system. Here are some of the PEX surprises that have been troublesome or are actively causing problems for server admins.
- At one time, PEX broke OPs. Not all Bukkit users are aware, but plugins are able to define what permission nodes an OP is granted. PEX decided that OPs shouldn’t get to decide, and successfully broke the system of defining what nodes an OP receives. This bug was known for a month before it was patched, and took two updates to be fixed.
- Another feature of the Bukkit permissions system, is that you can define one permission node as having “children” nodes. This way, if you gave somebody “example.fruit” you could define them as also having “example.bananas” and “example.apples” as a way of permission node inheritance. This system wasn’t good enough for PermissionsEx, so the author left it broken for months before finally fixing the mistake. During this time, many server admins were confused as to why their permissions setup wasn’t working. This known bug and intentional breaking of Bukkit was simply considered a feature. Currently, unpatched, when PEX encounters a cyclical inheritance structure (A inherits B, B inherits A) it will simply crash after a period of time.
- Not happy with breaking its own system, PermissionsEX - due to the poor implementation of reflection it uses - additionally breaks all other plugins checking on any user permissions when it crashes. This crashing conveniently happens any time a server admin uses the Bukkit /reload command, a built-in feature to the server that has existed before PEX was created, as well as other situations involving permissions configuration formatting issues. Thus, any time you reload your server not only does PEX break but your other plugins start spewing errors as well.
- Lastly, PermissionsEx still breaks important parts of the Bukkit API. Not all of the permission-check based Bukkit methods function on PEX, crippling some plugins for server administrators running PEX. As of today (July 24) there are still broken Bukkit methods in PEX that are unpatched.
- Want to see PEX fail to send messages yourself? Give yourself the node “fail.ure” and run /fail with this plugin: https://github.com/mbax/FailPlugin/downloads
- Then, run it with any other permissions plugin and watch it work.
- There exist reported errors and crashes to the PermissionsEx project that have been untouched for several months. There are a hundred active issue tickets on its github that are primarily untouched. While many of these are user error, some are not, yet none receive replies. When bugs are brought before the PEX author, the response has in the past been denial that it could possibly be a PEX problem.
- A bugfix was submitted to PEX’s modifyworld plugin for a tiny error of permission checking, that broke protection of certain blocks. This fix remained untouched for two months before being applied to the codebase.
- Do you really want to use a plugin that sits around with unpatched bugs for months?
- PEX breaks Bukkit code
- PEX crashes, unpatched for months
- PEX breaks plugins
- Oh god get off PEX
- Below this line is under construction
- So what do I switch to?
- You have several options:
- Converter from PEX: Yes! Just run /permissions import pex
- Converter from PEX:
- Converter from PEX:
- Converter from PEX: