permission 'purpur.joinfullserver' is not checked on join.
Spark link
https://spark.lucko.me/DSRzKkf9x7
Expected behavior
The player with the permission "purpur.joinfullserver" can actually join the full server.
Observed/Actual behavior
I only have luckperms installed, just clean purpur server install with no configs changed. (Only thing changed is: max-players=1 in server.properties for testing purposes)
I have the luckperms permission set: purpur.joinfullserver for my user
lp user <user> permission set purpur.joinfullserver true
also tried adding the permission to my users group "default", no difference.
lp group default permission set purpur.joinfullserver true
I also tried creating a new group and adding the permission in there with no luck.
When running lp verbose record <user> and joining the server (with open slots otherwise "server full" kick), these permissions are te the only permissions starting with purpur. :
[LP] VB > thijsjeboygaming - purpur.debug.f3n - false
[LP] VB > thijsjeboygaming - purpur.portal.instant - false
When running lp verbose record <user> and joining the server when it is full, the verbose command outputs nothing.
So i presume that it does not check the purpur.joinfullserver permission on join?
When running lp user <user> permission check purpur.joinfullserver:
[LP] Permission information for purpur.joinfullserver:
[LP] - thijsjeboygaming has purpur.joinfullserver set to true in context global.
[LP] - thijsjeboygaming inherits purpur.joinfullserver set to true from default in context global.
[LP]
[LP] Permission check for purpur.joinfullserver:
[LP] Result: true
[LP] Processor: common.DirectProcessor
[LP] Cause: 7847c8cb-0adb-4fcb-980b-a879536d6a0a has purpur.joinfullserver set to true in context global
[LP] Context: None
I am running the latest 1.21.1 Purpur version, and I can't seem to find anything in the configs.
The user can join the full server if they have OP.
Steps/models to reproduce
- Install the latest version of Purpur
- Install the Luckperms plugin
- Edit the
server.propertiesfile and setmax-players=1(assuming you have 2 accounts to test this with) - Use the Luckperms command:
lp user <user> permission set purpur.joinfullserver truein console - Join the server with the account that does not have this permission first.
- Join the server with the account that does have the permission as last.
You will see a The server is full! kick message on the account that has the purpur.joinfullserver = true permission.
Purpur version
version
[19:48:56 INFO]: Checking version, please wait...
[19:48:56 INFO]: Current Purpur Version: 1.21.1-2328-d49ca07 (MC: 1.21.1)*
* You are running the latest version
Agreements
- [X] I am running the latest version of Purpur available from https://purpurmc.org/downloads.
- [X] I have searched for and ensured there isn't already an open issue regarding this.
- [ ] I ticked all the boxes without actually reading them
- [X] My version of Minecraft is supported by Purpur.
Other
Other people in the Discord server also have the same problem that I have described.
Can confirm that it's still an issue on 1.21.3.
LuckPerms doesn't get around to loading the player's perms in time for the check to process. Will look into this more at a later date.
This issue still exists on 1.21.1
1.21.1 is not a supported version. I'm pretty sure it's still an issue on 1.21.4 and 1.21.5 - If this issue gets fixed, it will not get backported to previous versions.
I can confirm that this bug still exists on the latest build of Purpur for 1.21.7.
I did a test using a server with no plugins installed. Unfortunately, this issue doesn't just occur with LuckPerms; the feature is broken entirely.
For the test, I used the "permissions.yml" file to force the permission node to be set to "true" for all players. When I tried to join the server as a regular player and an operator, it still stated that the server was full. The same thing also occurred when I set the permission node to be granted to operators and tried to join the server with operator privileges.
Idk. if this sounds a terribly bad idea but what if we stored if a player has had that permission in the previous session.
When the player joins the game next time then the server could let the player temporarily in but kick the player afterwards if that "cache" exists.
That would fix the issue for most servers.
This will actually be fixed using the new configuration api, I saw Owen from Paper talking to Luckperms on how they would do that.
Oh, interesting! That would be the best solution. Are there any commits in any branch yet or something like that so that we can track that?
It's been added, but might change most of times as it's the final version. You can check their discord in paper feedback channel for more information.