LuckPerms

LuckPerms

41.4k Downloads

Standalone GUI editor

sgdc3 opened this issue ยท 28 comments

commented

It would be cool to provide a CLI and a GUI to manage permissions in large networks.

commented

Sure. A standalone client would be cool. I've actually been thinking about this a bit already, not sure how to approach it though. I'm not so good on making actual applications that are nice to use. Everything I make ends up looking like crap. ๐Ÿ˜‰

A CLI, I'm not so sure. It would be really easy to do, LuckPerms is super abstract, but I don't really see the use of it. You might as well just fire up a server and use the console.

I'm definitely not putting GUI's in-game, although I assume you didn't mean that.

I'll leave this open, it's definitely something I'm considering. Don't expect anything soon though. ๐Ÿ˜„

commented

I make a lot of JavaFX programs, and make also websites java based; so if you want, i could help ya out ๐Ÿ‘

commented

Yes! Would definitely be appreciated! ๐Ÿ˜„

I've started a bit of it, but it's all kinda trashy. I would really appreciate any sort of design concepts / code. Doing the behind the scenes / internal stuff is easy, as I've already got a lot of it written in the common module, so don't worry about that... The thing I'm finding hard is the actual interface design. I've been reading a lot of the Oracle docs, but not very well. ๐Ÿ˜‰

So yes! Definitely. I would be very grateful.

My initial throughts were:

  1. Some sort of login window. Select datastore type, input location of files / MySQL credentials, etc.
  2. A main table view. A list of users/groups on the left, and a table of:

Permission | Value | Server | World | Expiry time | Extra context

Then just additional buttons/windows to add or remove permission nodes from this main table, and then save the data back to the datastore.

Effectively meaning that the table would be a "live view", and changes made in the app would be pushed to the server immediately. Again, that code is already done internally, it's just the interface I'm struggling with.

If that sounds good, let me know. If you've thinking, uh oh, too much work, that's cool too. ๐Ÿ˜ƒ

commented

Yea!
Sounds deffently do-able!
Will look at it this weekend

commented

New --> Project from version control --> Git
Paste the URL of your fork, let it download, etc.
Make any changes you want, then VCS --> Commit changes.

Or yeah, just do it in any old project. As long as you license it under MIT, it's fine. :)

commented

i got many errors somehow on this method :/
will try again later...

commented

Eh, no worries, it doesn't matter.

Just to clarify, don't worry about doing any I/O or internal stuff. That has already been written, all that needs to be done now is the raw interface design.

All of the main internal managers are already done. https://github.com/lucko/LuckPerms/blob/master/standalone/src/main/java/me/lucko/luckperms/internal/StandaloneBase.java#L60-L67

I intend to also just re-use the datastore from the plugins. https://github.com/lucko/LuckPerms/blob/master/common/src/main/java/me/lucko/luckperms/storage/Datastore.java#L70-L90

commented

@lucko I have no clue how to setup my workspace with your program, i use Intillj IDEA... it may be setup for a diffrent setup or something?
but i make a standalone-standalone for now; and you are free to do whatever you want with it ;)

commented

Giving a headsup

Just got groups working,

  • add group
  • remove group
  • see all groups
  • add permission to group [server, world, all]
  • change existing permission of a group [server, world, all]
  • remove permission from a group
  • search for groups
  • search for permissions inside groups

Thats all done now... Will need to rewrite the internal part to your api. not a huge step, wrote for now my own hook into the database structure
But first im focussing on the user part of the permission plugin
after all of that will look into css & make everything look much better than it now does

commented

Looking good! ๐Ÿ‘

If easier, just exclude the DB stuff and just hardcode some examples. Totally up to you though, whatever you think is easiest.

Also seems that your implementation is lacking support for extra contexts, which I guess is something we can add when we/you integrate with common?

Again, I'm more than happy to help/do that bit. It'll only take an hour at max. The interface design is all that needs to be done. ๐Ÿ˜„

commented

Im currently working on a rewrite to the API layer of yours
the mysql hardcoded stuff was easier to test with, because our instance of LuckPerms is running on MySQL, so i can test live features

but the internal layer rewrite wass not that hard

I rather make PR's instead of changing the code directly, so it gets a second look into it
and i got no haste

IRL i got less time than i tought, 40hours school, a day worth of homework and got scouts every weekend for 2 hours...
and i got a youtube channel.. and in my spare time i work on this :)

commented

Sure, I know the feeling. ๐Ÿ‘

Well, as I've said before, I'd love to help with the creation of it. I never intended to just completely offload it to someone else, although I didn't (and still don't) want to interfere with your work, if you'd rather just get on with it.

Two people working on it will surely make lighter work for yourself.

My only concern is licensing. I can't include/reference or contribute towards any of your code, as it is unlicensed and therefore all rights are reserved. As soon as you upload a license file to the repo, I'm happy to contribute. (I think doing it under MIT would make the most sense, as LuckPerms is licensed under this.)

I'm obviously very familiar with LuckPerms internals, so can maybe assist with the API layer.

Again, let me know your thoughts.

commented

Hey Could you build your 2.9 build to your maven?
I try now to add your API and Common stuff to mine code, but got stuck on the User implementation
because the 2.8 build has package constructors, but is abstract ๐Ÿ˜–

commented

Uh sure, I'll deploy that asap.

commented

I've just deployed 2.10 to my nexus server. Sorry for the delay. ๐Ÿ˜ข

commented

Wow, what a timing!
I just updated my pom like 2mins ago
np at all ;)

commented

Also, what are your plans for releasing it? I've been busy with IRL stuff as well as maintaining the plugin side of LuckPerms, so haven't really been able to pay much attention to your commits, but I see you're making great progress. I noticed there's no license currently, but I'd love to see it eventually merged into upstream?

The issue is, only the API module gets deployed to Nexus, as the common module changes with almost every release. I think you'd find it really useful to make use of commons for your internal stuff ๐Ÿ˜„ I'm happy to give you access to the repo if you'd like to push your changes directly to the main project.

It just means you haven't got to re-code all of the storage/management/calculation stuff. I see you've sorted MySQL, but I found that supporting JSON and YAML was a pretty huge refactor. I think it makes sense to use the existing abstraction rather than to just re-implement it. Also makes things 10x easier to maintain. ๐Ÿ˜ƒ

Anyways, let me know what you think.

commented

Well, i am missing a small thing now
A method or opening to see all users that are in a group

for the rest, im managing to get a lot done by api now
Got almost groups in now :D
took some time to get used to the API layer

Like the class User, its not implementing the interface User, that small things of API & Common are bit enoying to get used to. But i got there ;)

commented

Yeah, looking good. I've been a bit busy with other stuff recently, as I'm sure have you, so sorry for not really contributing much.

I'll try take a look at some point over the next few days. Thanks again for everything you're doing! ๐Ÿ˜„

commented

Progress?
Seems to be a very nice coming feature, can't wait for it :P

commented

You should test it. Compile it from here: https://github.com/LuckPerms/LuckPermsUI. I checked it and I really liked it, but it does not fully reload the config when you click the button. That is the only bug I found .

commented

Looks like Tim hasn't had as much time to work on it. I might try to pick up the development of it now I'm happier with the plugin's stability.

Hopefully it will become a really great feature that will distinguish LuckPerms from the others. Tim's certainly made a great start on it. ๐Ÿ‘

commented

:DDDDD

commented

Here's a screenshot @Eufranio. It's pretty basic ATM, but still a pretty good start IMO.

My fork of upstream is now at https://github.com/lucko/LuckPermsUI. I just managed to get it to compile with the latest 2.13 versions of luckperms-common, and intend to spend some time working on it over the next week or so.

commented

Sorry, my school testweek is this and next week, so had no time left for it last weeks :(

commented

No need to apologise. I'm incredibly grateful for the work you've put into it so far, and there's really no hurry with this. Good luck with your school stuff. :)

commented

Could you maybe post a alpha/testing release or a guide how to compile it? :) Then we user could start messing around with it a little bit.

Looking forward to it alot ๐Ÿ‘

commented

This has gone a bit stale - I honestly just don't have the time to work on it. The plugin will always take priority, but maybe in the future, this will get picked up again.

However, this side project now has it's own repo, so I'm going to move this issue there.