LuckPerms插件
官网:LuckPerms
Spigot官网:LuckPerms | SpigotMC - High Performance Minecraft
mcbbs:因关站而无法找到
简介:在编者看来,LuckPerms插件是一个非常好用的权限插件,它能精确地将用户划分成几个组别,并分别给予权限,并且能够通过网页端进行管理与操作,而且这个插件还能够与其他插件进行良好的配套与应用,因此编者使用感觉良好
如果感觉很乱的话,请看左边的导航指引
本文篇幅有限,约8000字,大家如果有看不懂的可以去官网Wiki去找到详细的介绍
/lp
#显示 LuckPerms 的主命令帮助菜单。
/lp sync
#从权限数据库中同步最新的权限数据到当前服务器。
/lp info
#显示关于 LuckPerms 插件的一些基本信息。
/lp editor
#打开 LuckPerms Web 编辑器,便于在网页上管理权限。
/lp <on | record | off | upload> [filter]verbose
#控制详细模式,用于记录和显示权限检查的详细信息。这对排查权限问题非常有用。
#其中<on|record|off|upload>- 是启用/禁用日志记录,还是上传记录的输出
#[filter]- 用于对输出进行排序的过滤器
/lp [scope] [player]tree
#查看指定玩家的权限树结构。[scope]- 树的根(指定以包含所有权限)[player]- 要检查的在线玩家的名称
/lp [comparison] <permission>search
#搜索指定权限节点的应用情况。
/lp networksync
#在 BungeeCord 网络上同步权限数据。
/lp <file | code --upload> [--replace]import
#从文件或通过 Web 编辑器提供的代码导入权限数据。
/lp <file> [--upload]export
#导出权限数据到文件。
/lp reloadconfig
#重新加载 LuckPerms 的配置文件。
/lp bulkupdate
#执行批量更新操作,用于修改数据库中的大量权限记录。
/lp translations
#显示或修改插件的语言和翻译设置。
/lp <group> [weight] [displayname]creategroup
#创建一个新的权限组,可指定权重和显示名。
/lp <group>deletegroup
#删除一个权限组。
/lp listgroups
#列出所有的权限组。
/lp <track>createtrack
#创建一个新的权限轨道。轨道用于管理分层权限组。
/lp <track>deletetrack
#删除一个权限轨道。
/lp listtracks
#列出所有的权限轨道。
/lp user <user> info
#显示指定用户的详细信息,包括他们所拥有的权限、所在的组和元数据。
/lp user <user> permission
#显示或修改指定用户的权限。需要跟随额外的子命令来具体操作,如添加或删除权限。
/lp user <user> parent
#显示或修改指定用户所属的组。可以用于添加用户到特定组或从组中移除用户。
/lp user <user> meta
#显示或修改指定用户的元数据,例如设置额外的信息标签。
/lp user <user> editor
#生成一个 Web 编辑器的链接,用于在网页界面上编辑这个用户的权限。
/lp user <user> <track> [context...]promote
#在指定的权限轨道上提升用户。这通常意味着将用户移至轨道上的下一个权限组。
/lp user <user> <track> [context...]demote
#在指定的权限轨道上降低用户的等级。与提升相反,这通常意味着将用户移至轨道上的上一个权限组。
/lp user <user> showtracks
#显示用户当前所在的所有权限轨道。
/lp user <user> [context...]clear
#清除用户的所有权限、组父级关系和元数据。这是一个强大的命令,应谨慎使用。
/lp user <user> <user>clone
#克隆一个用户的所有数据到另一个用户。这将复制所有的权限、组和元数据。
/lp group <group> info
#显示指定用户组的详细信息,包括该组的权限、父级关系和元数据。
/lp group <group> permission
#显示或修改指定用户组的权限。这通常需要额外的子命令来具体添加或移除权限。
/lp group <group> parent
#显示或修改指定用户组的父级组。可以用于建立权限组之间的层级结构。
/lp group <group> meta
#显示或修改指定用户组的元数据,比如设置一些附加的信息标签。
/lp group <group> editor
#生成一个用于在网页界面编辑这个用户组权限的 Web 编辑器链接。
/lp group <group> [page] listmembers
#列出属于这个用户组的所有用户。
/lp group <group> <weight> setweight
#设置用户组的权重。权重用于确定在权限继承中的优先级。
/lp group <group> <name> [context...] setdisplayname
#设置用户组的显示名称,这个名称可能会在某些插件或命令中显示。
/lp group <group> showtracks
#显示这个用户组所属的所有权限轨道。
/lp group <group> [context...]clear
#清除该用户组的所有权限、父级关系和元数据。
/lp group <group> <new name> rename
#重命名用户组。
/lp group <group> <name of clone> clone
#克隆一个用户组及其所有数据到一个新的用户组。
/lp user/group <user|group> parent info [page] [sorting mode]
#显示用户/组的父组列表。(他们继承的组)
/lp user/group <user|group> parent set <group> [context...]
#设置用户/组的父级。与“parent add”命令不同,此命令将清除在给定上下文中设置的所有现有组。
#add 命令只需将组“添加”到用户/组拥有的现有组中。如果在没有上下文参数的情况下执行该命令,则此命令还将更新用户的主要组。
/lp user/group <user|group> parent add <group> [context...]
#将父级添加到用户/组。与“parent set”命令不同,此命令只会将给定的父命令与用户/组已有的父命令相加。不会从用户中删除任何现有父组,并且用户的主要组不会受到影响。
/lp user/group <user|group> parent remove <group> [context...]
#从用户/组中删除父级。
/lp user/group <user|group> parent settrack <track> <index|group> [context...]
#设置用户/组在给定轨道上的位置。其行为方式与 set 命令相同,只是它仅清除指定轨道上的现有组。其他父组不受影响。
/lp user/group <user|group> parent addtemp <group> <duration> [temporary modifier] [context...]
#临时将父级添加到用户/组。持续时间应为时间段,或权限到期时的 unix 时间戳。例如,“1mo3d13h45m”将设置权限在1个月3天13小时45分钟后过期,而“1482694200”将设置权限在2016年12月25日晚上7:30过期。
/lp user/group <user|group> parent removetemp <group> [duration] [context...]
#从用户/组中删除临时父级。
/lp user/group <user|group> parent clear [context...]
#删除用户或组拥有的所有父级。
#这会将他们重新添加到default组中。
/lp user/group <user|group> parent cleartrack <track> [context...]
#从给定轨道上的用户/组中删除所有父级。
/lp user <user> parent switchprimarygroup <group>
#此命令允许您更改用户的主要组。如果他们还不是指定组的成员,则会将其添加到该组中。这不应用作“parent set”命令的替代品。他们现有的主组不会作为父级被移除。(一个用户可以有多个父组)
/lp user/group <user|group> permission info [page] [sorting mode]
#显示用户/组拥有的权限节点列表。
/lp user/group <user|group> permission set <node> [true|false] [context...]
#使用“true”设置(或授予)用户/组的权限,授予权限。提供值“false”将否定权限。不添加任何上下文将在上下文中设置权限“全局”。这一条非常重要,因为涉及到权限给予。
/lp user/group <user|group> permission unset <node> [context...]
#与上文对应,解除权限
/lp user/group <user|group> permission settemp <node> <true|false> <duration> [temporary modifier] [context...]
#与上文对应,临时提供权限
#<node>- 要设置的权限节点
#<true|false>- 要设置权限的值
#<duration>- 权限到期前的持续时间
#[temporary modifier]- 应如何应用临时许可
#[context...]- 要设置权限的上下文
#持续时间应为时间段,或权限到期时的 unix 时间戳。例如,“1mo3d13h45m”将设置权限在1个月3天13小时45分钟后过期,而“1482694200”将设置权限在2016年12月25日晚上7:30过期。
#后面的这个例子是用的Unix 时间戳,即是指从 1970 年 1 月 1 日(UTC 时间)开始所经过的秒数。因此,一个特定的 Unix 时间戳代表了一个确切的时刻。需要手动计算。
/lp user/group <user|group> permission unsettemp <node> [duration] [context...]
#与上文对应,取消为用户/组设置临时权限。
/lp user/group <user|group> permission check <node>
#检查用户/组是否具有特定权限,提供有关影响检查结果的因素的有用信息。
/lp user/group <user|group> permission clear [context...]
#[context...]- 要过滤的上下文 后文会讲到
#删除用户或组的所有权限。
首先通过在服务器上执行命令来创建编辑器会话。 您可以运行不同的命令来打开具有不同作用域的会话
范围 | 命令 |
---|---|
所有组和联机/非默认用户: | /lp editor 或lp editor all |
所有组别: | /lp editor groups |
所有在线和非默认用户: | /lp editor users |
所有在线用户: | /lp editor online |
对于特定组: | /lp group <group> editor |
对于特定用户: | /lp user <user> editor |
对于仅具有特定权限的用户: | /lp editor users <filter> 或lp editor <filter> |
执行命令后,服务器将开始创建新会话。它应该只需要一秒钟左右(取决于您的连接速度)。
会话准备就绪后,您将收到一个链接。
要继续,请单击 URL,然后按“是”。
然后,您的默认 Web 浏览器应打开您创建的新编辑器会话。
要添加权限,请在“添加权限”输入框中键入要添加的节点,然后按 Enter。您可以对要添加具有相同属性的所有权限重复此操作。
键入时,编辑器将显示到目前为止与您的输入相匹配的建议列表。您可以通过箭头键或光标选择一个,然后通过按回车键或单击它来包含它。 输入权限后,单击“+”按钮进行添加。
您可以一次添加多个权限!只需将它们输入或复制/粘贴到框中,然后像往常一样添加它们。
要编辑表中的任何值,只需单击它即可。
要更改排序设置,请单击要作为排序依据的列标题。
编辑器允许您使用节点添加或更改有关组和球员的方面,例如权重和父母。
功能 | 节点 |
---|---|
要定义用户或组的父级,请执行以下操作: | group.<parentgroup> |
要设置组的显示名称,请执行以下操作: | displayname.<name> |
要设置组的权重: | weight.<weightnumber> |
要添加前缀: | prefix.<priority>.<prefix> |
要添加后缀: | suffix.<priority>.<suffix> |
要添加元: | meta.<key>.<value> |
完成对数据的更改后,需要将更改保存回服务器。
单击“保存”按钮,或使用键盘快捷键进行保存,编辑器将生成一个命令,您需要在游戏内或控制台中执行该命令才能应用您的更改。只需单击该命令即可将其复制到剪贴板。CTRL + S
运行该命令时,将显示更改的摘要。
LuckPerms 是一个高级且灵活的权限管理系统,用于 Minecraft 服务器。它提供了一种强大的特性叫做“上下文”(Context),这大大增加了权限管理的灵活性和精细度。上下文允许管理员为权限节点设置特定的条件,这些条件必须满足才能应用该权限。这意味着你可以根据玩家所处的环境或其他条件来动态地应用或限制权限。
在 LuckPerms 中,上下文是键值对的形式,用于定义权限应用的条件。例如,一个上下文可以是 `{world=nether}`,表示相关的权限仅在名为 "nether" 的世界中有效。上下文可以基于多种不同的条件,如玩家所在的世界、服务器、地区(如果使用区域管理插件)、游戏模式等。
1. 基于世界的权限:你可以为玩家在特定世界中设置特殊权限,比如只允许在 "survival" 世界使用某个命令。
2. 基于服务器的权限:在 BungeeCord 或其他代理服务器环境中,你可以为玩家在特定服务器上设置权限,使权限仅在连接到特定子服务器时生效。
3. 基于地区的权限:如果使用区域管理插件(如 WorldGuard),可以为处于特定区域内的玩家设置权限,如只允许在某个保护区域内建筑。
4. 基于游戏模式的权限:根据玩家的游戏模式(如生存模式、创造模式)应用或限制权限。
5. 基于时间的权限:虽然上下文本身不直接支持时间条件,但可以通过插件或脚本与上下文结合使用,来实现在特定时间段内应用权限。
在 LuckPerms 中设置带有上下文的权限通常使用以下命令格式:
/lp user <用户名> permission set <权限节点> true/false <上下文键>=<上下文值>
例如,要为玩家 "Steve" 在 "nether" 世界中赋予 "myplugin.fly" 权限,可以使用以下命令:
/lp user Steve permission set myplugin.fly true world=nether
LuckPerms 提供了一系列命令和工具来查看和管理与上下文相关的权限,包括通过 Web 编辑器进行可视化管理。
LuckPerms 默认提供了自己的五个上下文。其他插件也可以通过在 API 中注册来提供自己的上下文。ContextCalculator
上下文键 | 描述 | 例 |
---|---|---|
server |
玩家的当前服务器。此值由 LuckPerms 配置文件最顶部的服务器设置确定。 | server=survival |
world |
玩家的当前世界 - 此值仅从服务器检索。当 LuckPerms 在 BungeeCord/Velocity 代理上运行时,世界上下文值是指玩家当前连接到的子服务器。 | world=world_nether |
gamemode |
玩家当前的游戏模式。 | gamemode=creative |
dimension-type |
玩家当前所处的世界的维度。 | dimension-type=the_nether |
proxy |
仅当 LuckPerms 在安装了 RedisBungee 的 BungeeCord 代理上运行时,此上下文才适用。它指的是玩家当前连接到的代理。 | proxy=redisbungee1 |
除了 LuckPerms 提供的上下文外,还可以添加您自己的额外上下文。
上下文可以静态或动态提供。
静态上下文可以在插件目录中的文件中定义。(与主配置位于同一文件夹中)contexts.json/LuckPerms/
该文件包含两个属性,但我们只对名为 .static-contexts
例如,如果我们想添加我们自己的上下文 ,称为 ,以指示服务器类型以及服务器名称(LuckPerms 已经提供了),只需添加:"server-type"
{
"static-contexts": {
"server-type": "skyblock"
},
}
添加后,我们可以在定义 permissions/parents/meta 时使用上下文将这些值限制为特定的服务器类型。例如.server-type/lp user Luck parent add donor server-type=skyblock
您可以向此文件添加任意数量的上下文。
默认上下文允许您指定应用于命令的上下文,前提是您不将上下文添加到命令的末尾 - 例如 .您可以在文件中定义它们,与主配置位于同一文件夹中。/lp user Luck permission set example.permissioncontexts.yml
例如,要向文件添加默认上下文,只需在 static-contexts 部分下方添加:
{
"default-contexts": {
"world": "world_nether",
"server": "survival"
}
}
这意味着,对于服务器上已添加默认上下文的命令,除非另有指定,否则将使用可使用上下文执行的任何命令。/lpworld=world_nether,server=survival