LuckPerms | An advanced permissions plugin

The latest version is API 5.

The debug option was moved to a command. See /lp verbose

Have you tried reading the wiki?

example : /lp group member permission set test1.permission true HomeZone
HomeZone is another world. I have one server.

This example correct or false ?

Should be: /lp group member permission set test1.permission true global HomeZone

Ok. Thank you very much. I am Thailand.

Hi again, thanks for the speedy reply before, it worked great! However regarding OP, I tried adding enabled-ops=true on an empty line within the config and it didn’t work. In order for users to have access to all commands, do I have to give them the permission node luckperms.* ? Or does that only apply for LuckPerms commands. Thank you for any help you provide!

The OP system does not work when you have a permissions plugin installed. If you want to give someone access to all permissions, you can grant them a * permission.

Quick question:
Is it possible to give a permission to promote and demote only a specific track?
Example:
I have two tracks, member which contains guest>member, and staff which contains member>support>mod>admin
I want mods to be able to promote guests to members, but I don’t want them to be able to promote beyond the member level (i.e. only admins can promote a user from member to support to mod and so on).

TL;DR Is it possible to add a permission node like luckperms.user.promote.<track> or even more specifically luckperms.user.promote.<track>.<max promote-to level> (highest position in the ladder a user can promote another user to).

1 Like

I’m keen on changing the format of an existing Luckperms file from the default H2 to something more user-readable (and editable), like json. Unfortunately I didn’t see anything in the Wiki that looked like it could do this neatly.
I notice that Luckperms has import and export commands; can these be used to change the default database format, by e.g. exporting, changing default file format, and re-importing?

Check out the changing storage type page on the wiki.
Essentially you export the permissions you currently have to a file, then shut down the server. Go to luckperms.conf and change storage-method-"h2" to whatever you want. I changed mine to yaml. Next you start the server back up and import the permissions from the file you exported earlier. This will re-generate any permissions you had before in the new format.

After I did that there were several yml files created in my luckperms folder that I was able to edit manually. The main thing if you’re going to edit permissions by hand is that you still need to use the /lp commands to generate the groups / parents / tracks before the yml files are created (each group, user, track, etc. has it’s own yml file). You’ll also have to do /lp sync to reload the luckperms plugin or restart your server after you’ve edited a permissions file to apply any changes made.

From my luckperms.conf:
# Which storage method the plugin should use.
# Currently supported: mysql, postgresql, sqlite, h2, json, yaml, mongodb
# Fill out connection info below if you’re using MySQL, PostgreSQL or MongoDB
storage-method=“yaml”

1 Like

Thanks! I don’t know how I missed it, I was wondering about those commands…

I did it, it seems to have worked, but not without spitting a few errors.

[10:04:14] [pool-2-thread-4/INFO]: [LP] (Import) → Starting import process.
[10:04:14] [pool-2-thread-4/INFO]: [LP] (Import) → 0 percent complete - 1/144 operations complete with 0 errors.
[10:04:15] [pool-2-thread-4/INFO]: [LP] (Import) COMPLETED - took 0.217 seconds - 144 errors.
[10:04:15] [pool-2-thread-4/INFO]: [LP] (Import) ------------> Showing Error #1 <------------
[LP] (Import) Whilst executing: Command #1
[LP] (Import) Command: creategroup admin
[LP] (Import) Type: INVALID_ARGS
[LP] (Import) Output:
[10:04:15] [pool-2-thread-4/INFO]: [LP] (Import) → [LP] That group already exists!
[10:04:15] [pool-2-thread-4/INFO]: [LP] (Import) <------------------------------------------>
[10:04:15] [pool-2-thread-4/INFO]: [LP] (Import) ------------> Showing Error #2 <------------
[LP] (Import) Whilst executing: Command #2
[LP] (Import) Command: creategroup vip
[LP] (Import) Type: INVALID_ARGS

… and a string more. I’ll give it some more testing to see if anything actually broke …

Are you sure you actually switched storage options?

Aye aye. I just checked the config file to be sure. Before this, it was all H2, now it’s all json.
Everything seems to be intact, but it did report 144 errors :confused:

Okay, did you reboot the server after changing the option? It looks like it was trying to override existing data.

Yeah, I edited the file while the server was down. It was an older version of SpongeForge I was using (Beta 1878), so I’ve updated it and Forge. Luckperms v. 2.14.10 (and I’m updating that now too).
EDIT: Fixed. Somehow it wasn’t letting the files get created, but all was good when I updated.

Is there a way to migrate over from Pex2.0 easily? If not, that’s fine as well. Also, I cannot for the life of me figure out how to OP on this plugin. Thank you for any help you can provide :slight_smile:

Indeed there is. Look ye here: Migration ¡ lucko/LuckPerms Wiki ¡ GitHub

Thank you! The issue is, when I use the migration, it says it migrated over the groups and perms, but nothing actually is migrated. There are no perms carried over at all. Any ideas?

Not sure if this is a luckperm or nuclues issue.
I been using the parent add command to add ranks to players but when i do
/lp group [user] meta set home-count [number]
to allow certain groups to set multiple homes, it only allows them to set 1 home which is the default.
I found out that the home-count command only applies to primary group not to other parent groups

Hi,

Just restarted my server after trying to configure some permissions… I get the following errors in my console:

10.01 21:14:58 [Server] INFO [luckperms]: Loading configuration...
10.01 21:14:58 [Server] INFO [luckperms]: Detecting storage method...
10.01 21:14:58 [Server] INFO [luckperms]: Loading dependencies...
10.01 21:14:58 [Server] INFO [luckperms]: Identified the following dependencies: []
10.01 21:14:58 [Server] INFO [luckperms]: Initializing storage backings...
10.01 21:14:58 [Server] INFO [luckperms]: Initialising storage provider...
10.01 21:14:58 [Server] INFO [luckperms]: Registering commands...
10.01 21:14:58 [Server] INFO [luckperms]: Loading internal permission managers...
10.01 21:14:58 [Server] INFO [luckperms]: Registering PermissionService...
10.01 21:14:58 [Server] INFO [luckperms]: Registering API...
10.01 21:14:58 [Server] ERROR [STDERR]: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.lambda$null$10(YAMLBacking.java:266)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.doRead(YAMLBacking.java:82)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.lambda$loadGroup$11(YAMLBacking.java:265)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.call(YAMLBacking.java:66)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.loadGroup(YAMLBacking.java:263)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.ArrayList.forEach(ArrayList.java:1249)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.loadAllGroups(YAMLBacking.java:285)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at org.spongepowered.api.scheduler.Task$Builder.lambda$execute$0(Task.java:138)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at org.spongepowered.common.scheduler.SchedulerBase.lambda$startTask$0(SchedulerBase.java:183)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.lang.Thread.run(Thread.java:745)
10.01 21:14:58 [Server] ERROR [STDERR]: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.lambda$null$10(YAMLBacking.java:266)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.doRead(YAMLBacking.java:82)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.lambda$loadGroup$11(YAMLBacking.java:265)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.call(YAMLBacking.java:66)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.loadGroup(YAMLBacking.java:263)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.ArrayList.forEach(ArrayList.java:1249)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at me.lucko.luckperms.common.storage.backing.YAMLBacking.loadAllGroups(YAMLBacking.java:285)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at org.spongepowered.api.scheduler.Task$Builder.lambda$execute$0(Task.java:138)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at org.spongepowered.common.scheduler.SchedulerBase.lambda$startTask$0(SchedulerBase.java:183)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
10.01 21:14:58 [Server] ERROR [STDERR]: 	at java.lang.Thread.run(Thread.java:745)

Tim, Just stop, then restart the server. I get that too if I change storage type and there isn’t any data yet.