A248 / LibertyBans

The be-all, end-all of discipline.
https://ci.hahota.net:8443/job/LibertyBans/
GNU Affero General Public License v3.0
169 stars 42 forks source link

[Feature Request]: Exempts #131

Closed BlueTree242 closed 1 year ago

BlueTree242 commented 2 years ago

I have confirmed that ...

Description

Hello! Libertybans is really a good plugin but 1 thing is missing, which is exempt system. And no im not talking about the permission-based one in advancedban, libertybans could implement it in a better way. And using the luckperms api, using the weight and a config option to enable exempts it makes it easier to setup the exempts, as many servers already have weight on their luckperms group.

This way you can easily prevent your mods from banning all your admins while you are offline and abusing hard.

Second, luckperms api can be used at any time on any platform (with uuid), if possible it would be great to make punishments removed (with config option) if the operator is no longer higher than the target in weight (ik many may may not like this, so leave the config option)

With a permission like libertybans.exempt.bypassall the player is considered unpunishable, just like advancedban. You can still check permissions thru luckperms api anyway on login for ban removing feature.

I recommend the option for exempts to be disabled by default to prevent a big mess with servers with no weight in their groups

Other Plugins Not everyone uses luckperms, im not sure if other plugins support weight but anyway you can also add option in config either LUCKPERMS or PERMS this will simply make plugin do what advancedban do + a better one

After a feature like this is added there is no reason for anyone no excuse for those advancedban lovers!

A248 commented 2 years ago

I very much like this idea - it seems a better way to implement exempt permissions. I've a particular affinity, perhaps a weakness, to improvements to the status quo.

This will probably be implemented as follows:

These addons may be maintained and developed separately. Their separate release cycle would allow us to isolate breaking changes in other plugins from affecting the mainstay of LibertyBans, instead confining any consequences to the addons. For example, if LuckPerms releases a new major API version, its corresponding addon would need a new release, but the main plugin would not.

Second, luckperms api can be used at any time on any platform (with uuid), if possible it would be great to make punishments removed (with config option) if the operator is no longer higher than the target in weight

We cannot do this due to the lack of an effective method to "listen" to permission changes. Even if there were, I would be reluctant to make a feature which is prone to surprises.

BlueTree242 commented 2 years ago

hey remember not everyone will notice these addons would exist

A248 commented 2 years ago

We can advertise the addons in the feature list. It should be relatively simple to mention that LibertyBans has the exemption feature, then direct users to install the relevant addon. For example:

Features

BlueTree242 commented 2 years ago

good idea, i think im gonna try to be the first to make it

Folas1337 commented 2 years ago

May I throw in BungeePerms which is what I'm using on Velocity? It very much sounds like I'd be left out as I can neither use LuckPerms addon, nor the vault addon and could not use this feature at all 😦

I know it's a hassle to add even more permission plugins but I'd really like to use this feature and also like improvements to what seems established. Fingers crossed you will make this become a reality!

~Folas1337

A248 commented 2 years ago

Yes, I knew I was opening a can of worms when I suggested we depend on specific permission plugins.

I would much rather have a unified API for offline player permission checks. It used to be that, when users asked me about exempt permissions, I would insist on the need for a unified permissions API.

The reason LuckPerms needs its own addon is that the LuckPerms feature of group weights is not found in other permission plugins. For BungeePerms, however, the exempt addon will be based on permissions and therefore should be based on unified permissions API. This way, I won't have to keep writing addons for every permissions plugin in existence.

So, the answer is that while we will support BungeePerms, it may require some effort and collaboration with the BungeePerms maintainers.

Gyztor commented 2 years ago

For something like this you could also do what premium vanish does and do weight by permission, so depending on the weight number for the permission (i.e. libertybans.exempt.weight.1 ) you will bypass the need for needing luckperms for something like this and would allow you to use your own api, it would require more setup but that wouldn't matter as long as the documentation explains it well enough for people to be able to fully understand

Gyztor commented 2 years ago

May I throw in BungeePerms which is what I'm using on Velocity? It very much sounds like I'd be left out as I can neither use LuckPerms addon, nor the vault addon and could not use this feature at all frowning

I know it's a hassle to add even more permission plugins but I'd really like to use this feature and also like improvements to what seems established. Fingers crossed you will make this become a reality!

~Folas1337

also luckperms now has a velocity branch now too so you should be able to use it: https://download.luckperms.net/1438/velocity/LuckPerms-Velocity-5.4.30.jar

Folas1337 commented 2 years ago

OK even I switched to LuckPerms by now, can we finally get this? It's been half a year and it's ridiculous how this is still not a thing...

BlueTree242 commented 2 years ago

I will make an addon to provide that i guess..

Folas1337 commented 2 years ago

I'm going to be honest and say that it's quite ridiculous that it needs an addon for an exempt permission but if that's what the developer wants because he rather questions an API that doesn't exist than make something that at least satisfies some people, so be it.

A248 commented 2 years ago

Please, be patient. I can see why you might think installing an addon is arbitrary or unnecessary, but it greatly simplifies my work here. There is no performance cost or other overhead from installing addons -- they hook directly into the main LibertyBans core with no intermediaries.

Placing exempt permissions into an addon is a design decision, nothing else. It provides better organization of additional features, that's all. In a large plugin like LibertyBans with only a few maintainers, it is very important that we keep the codebase organized and maintainable. Code organization allows us to implement new features more easily and solve bugs rather quickly.

Folas1337 commented 1 year ago

Since we can now have addons, could someone be so kind and create one for this? I'd really appreciate that :)

A248 commented 1 year ago

Since you asked nicely, I have decided to implement this as a Christmas present.

Folas1337 commented 1 year ago

Since you asked nicely, I have decided to implement this as a Christmas present.

Woohoo, huge success 🎉🎉 Thank you so much. I know I can be a pain in the butt yet also nice if I think it's suitable :)