Introduction:
First off, you might be asking “What are permissions?” Well, to put it simply, permissions in Minecraft allow certain players with certian permissions to run certain commands. For example, you wouldn’t want anyone to be able to run the command /ban, so we would only give admins permission to use that command. Traditionally this is done by adding ‘Server Operators’ or OPs, however, this approach cannot be finely tuned, so instead we are using a permissions plugin to manager permissions instead! The server stack uses LuckPerms across all servers and the Velocity Proxy to manage player and group permissions. I chose this plugin because it is regularly updated and has a user-friendly web permission editor. It also has quite a bit of helpful documentation. LuckPerms should be installed on the Velocity Proxy server as well as all child servers. If it is not, then permissions on the child servers will not function properly. LuckPerms also relies upon an external SQL database to store data in. This allows permission data to sync across all servers.
How to use LuckPerms:
Commands
The most used LuckPerms command is going to be /lp editor. This will return a link to the LuckPerms web editor that can be used to modify permissions for groups and players. In Minecraft, permissions use permission nodes. These nodes usually follow the pattern of [plugin name].[permission].[sub-permission], for example, if you want the permission to use the EssentialsX command /home, you would need the permission node essentials.home. A sub command example would be if you wanted permission to switch to any game mode, you would need the permission node essentials.gamemode.* (the star at the end denotes that you will receive all sub-permissions) whereas if you just wanted permission to switch to survival, you would need essentials.gamemode.survival. You can usually find a permission node page on a plugins respective documentation page if needed.
Groups
Groups are key in LuckPerms. They allow you to group (image that) players together. For example, you can have a group of verified server members that have access to basic commands, a moderator group that allows players to use commands such as /kick or /mute, and then an admin group that can use commands such as /ban or /kill. These groups can be assigned to players using the LuckPerms editor by simply selecting a player and then clicking the + next to the Parent Group button under the players name. Players can be in multiple groups. If there are conflicting permissions and a player is in both groups, they will receive the permissions of the group with the highest weight (more on that later!).
Prefixes and Suffixes
LuckPerms also allows for player prefixes and suffixes. This allows you to show [ADMIN] or [MEMBER] in front of or behind someone’s name if desired. These can be applied to either individual players or groups. Try not to make these too long as after a certain point it can get annoying. I would also suggest that you only do either a suffix or a prefix and not both. These can be applied either when a group is created or manually by applying the permission node prefix.100.&c[ADMIN] where you have prefix, then the wight of the prefix (more on this later) which in this case is 100, then the actual prefix, in this case &c [ADMIN] . The &c is a Minecraft color code for red, a full list of compatible color codes can be found here. Also notice that there is a space at the end, if there isn’t one, then the player name and prefix will not have a space between them, so it would look like [ADMIN]PLAYERNAME, which doesn’t work very well readability-wise. Adding a suffix is the same, you just replace prefix with suffix (WIth a space at the front rather than the back).
/op [PLAYERNAME], then that permission will override any set in LuckPerms. You really shouldn’t use the server operator system in the first place if you want to avoid any confusion.'*' PERMISSION! IT WILL CAUSE ISSUES!!Current Groups and their permissions:
Admin:
- * (Yes I know, do as I say not as I do, I'll fix this later...)
- displayname.Admin
- prefix.999.&r&l[&r&4ADMIN&r&l]&r
- weight.999
Officer:
- displayname.officer
- essentials.ban
- essentials.ban.exempt
- essentials.chat.ignoreexempt
- essentials.compass
- essentials.home.compass
- essentials.kick
- essentials.kick.exempt
- essentials.kickall
- essentials.sethome.multiple.unlimited
- essentials.spawn-on-join.exempt
- essentials.teleport.cooldown.bypass
- essentials.tempban
- essentials.tempbanip
- group.ieee-member
- prefix.100.&r&1[Officer]&r
- weight.100
Builder:
- plots.plot.24
- deluxehub.*
- essentials.*
- minecraft.*
- fawe.*
- simpleportals.*
- group.donor
- minecraft.stop
- prefix.80.&r&2[Builder]&r
- weight.80
VIP:
- plots.plot.12
- displayname.VIP
- group.ieee-member
- prefix.50.&r&l&2[$VIP$]&r
- weight.50
Alumni:
- group.ieee-member
- prefix.30.&r&c[Alumni]&r
- weight.30
Member:
- essentials.afk.auto
- essentials.balance
- essentials.balancetop
- essentials.delhome
- essentials.depth
- essentials.disposal
- essentials.msg
- essentials.msgtoggle
- essentials.pay
- essentials.payconfirmtoggle
- essentials.paytoggle
- essentials.sethome
- essentials.sethome.multiple.member
- plots.permpack.basicflags
- plots.permpack.basicinbox
- plots.plot.6
- displayname.member
- essentials.nick
- group.registered
- prefix.20.&rɵB[Member]&r
- weight.20
Registered:
- essentials.tpa
- essentials.tpacancel
- essentials.tpaccept
- essentials.tpahere
- essentials.tpr
- plots.permpack.basic
- plots.plot.2
- essentials.afk.auto
- essentials.hat
- essentials.spawn-on-join
- bukkit.command.paper.version
- bukkit.command.tps
- essentials.afk
- essentials.chat
- essentials.gc
- essentials.getpos
- essentials.help
- essentials.helpop
- essentials.ignore
- essentials.mail
- essentials.me
- essentials.motd
- essentials.ping
- essentials.realname
- essentials.rules
- essentials.sethome.multiple
- essentials.signs.break
- essentials.suicide
- essentials.teleport
- essentials.teleport.cooldown
- essentials.warpinfo
- group.default
- weight.10
Default:
- group.ieee-member *context
- group.admin *context
- weight.0