我在 LuckPerms 里处理默认和默认组的方法可能是整个插件里最不受喜爱的特性了。最新我做了一些添加/调整,做了一些替代的特性,允许最大程度的控制像其他权限插件的方法,希望这会成为插件最好的方面,而不是最差的方面。
从何开始
这是我的想法。
你的服务器的用户可以分为两种。
- 基础玩家
- 加入不同的组的玩家,或者有他们特别权限的玩家。
你不希望浪费宝贵的硬盘空间来存储第一种玩家,你只希望存储你的职员,或者有特殊等级的玩家。平凡的"成员"就只是平凡,没有必要存储他们的信息。
下一个问题是如何确定一个用户是"平凡的"或不是,想象一下情景。
- 默认的组设置为"默认",当玩家加入,他们被设置为"默认",并被保存。
- 过了一会儿,你想将默认的组更改为"成员"。
- 接着你的老的成员全部在"默认"组里,剩下的人都在"成员",这不好。
甚至我们没有"平凡"的用户,这个问题依然会出现。
- 默认组设置为"默认"
- 你想给 "Notch" 一个特殊的 "essentials.fly" 权限,Notch 的权限被保存,标记为"默认组"的成员,有特殊的飞行权限。
- 接着你编辑了默认的组,所有的"平凡的"成员全部进入了新的组,但是 Notch 还是默认组的。
因为这个原因,我让默认的组不可配置,这让所有对我的事情都简单了 10 倍,这意味着我可以写有效率的存储系统,并且不用担心一些稀有的情况下服务器的管理员更改了默认组,但是,我知道这对一些人很反感。
这对一些等级插件也有问题,如果你想要一个"主"组,并且分离"升级"组,你需要多于一个的默认组。
这里是你的选项。
继续使用默认组,但是只是更改"显示名"
我非常推荐这个做法,因为你继续使用默认组。
如果你只是想简单的更改默认组的显示名,(比如在 Vault),我推荐你配置一个 group-name-rewrite
规则,通过添加这些到你的 config.yml
/luckperms.conf
来实现。
# Rewrites group names. The underlying name of the group does not change, just the output in commands / placeholders / Vault.
group-name-rewrite:
default: Member
你也可以使用这个:https://github.com/lucko/LuckPerms/wiki/Primary-Groups
配置继承
这个选项意味着所有的用户都还在"默认"的组里,但是这个默认组作为父组,这样他就可以将配置继承给不同的组。
/luckperms creategroup member
/luckperms group default parents add member
配置默认分配
如果你有更多的特殊需要,你可以使用这个选项,但是,这将否定我们在这个页面的第一节讨论的存储空间规划,所有的用户都会被存储,无论是"平凡的"成员还是不是。
注意:查看 "Default Assignments" 章节
接下来的规则将会创建一个不同的默认的组。
default-assignments:
my-defaults-rule:
if:
has-true: <group.default>
take:
- group.default
give:
- group.member
set-primary-group: member
放入以后,每次玩家登入时,插件会检测这个玩家是不是"默认"组的成员,如果是,插件将会把玩家从"默认"组移除,将他们添加至"成员"组,将他们的主组也设置为"成员"组。
这个系统非常强力,允许你配置按你自己的需求而定的默认组,记住你可以将玩家添加至不止一个的"默认"组。