
Standalone GUI editor
Closed this issue ยท 28 comments
It would be cool to provide a CLI and a GUI to manage permissions in large networks.
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. ๐
I make a lot of JavaFX programs, and make also websites java based; so if you want, i could help ya out ๐
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:
- Some sort of login window. Select datastore type, input location of files / MySQL credentials, etc.
- 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. ๐
@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 ;)
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. :)
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
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
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. ๐
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 ๐
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.
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 :)
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.
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 ;)
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! ๐
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 .
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. ๐
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.
Sorry, my school testweek is this and next week, so had no time left for it last weeks :(
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. :)
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 ๐