权限
CloudHologram 的权限分两种,不要搞混:
| 种类 | 作用 | 怎么设定 |
|---|---|---|
| 指令权限 | 谁可以执行 /clh … 指令(建立、修改看板) | 权限插件(例如 LuckPerms)给玩家或群组节点,见本页前半 |
| 观看权限 | 谁看得到某个看板或某一行 | 看板或行的 permission 设定,见 观看权限 |
只想让管理员用全部指令,给一个节点就够了:
/lp group admin permission set cloudhologram.admin true
OP 默认就有全部指令权限,不用另外设定。
权限是怎么检查的
先搞懂这 5 条规则,后面的表就很好读:
-
dh.admin通吃。有dh.admin(或包含它的cloudhologram.admin)的人,执行任何指令都跳过权限检查。 -
一层一层检查。执行
/clh hologram create时,插件依序检查:- 主指令
/clh:要有dh.default或dh.command.decentholograms(dh.default默认所有人都有,所以这层通常不用管); - 群组
hologram:要有dh.command.holograms; - 子指令
create:要有dh.command.holograms.create。
三层都要通过。只给
dh.command.holograms.create的玩家,打/clh hologram create会在第二层被挡下。 - 主指令
-
群组节点包含底下全部子节点。例如
dh.command.holograms已经包含dh.command.holograms.create、.delete等全部看板指令。想「给一个群组、但禁止其 中几个」,就给群组节点再把不要的设为false(见 LuckPerms 范例)。 -
主指令底下的快捷指令只检查自己的节点。
/clh create、/clh delete这类直接挂在/clh底下的快捷写法(列表见 看板),以及 快捷指令 的click、style等,只需要通过第 1 层与自己的节点,不需要群组节点。 -
默认值:除了
dh.default是「所有人」,其他节点都是「OP」。每个指令检查的节点都在plugin.yml宣告过,所以都会被上一层的群组节点带出来。
另外:
- 没有
dh.admin的玩家打/clh(不加子指令)只会看到版本资讯;有dh.admin才会提示使用帮助指令。 - 控制台拥有全部权限。
总权限
| 权限 | 默认 | 包含 | 说明 |
|---|---|---|---|
cloudhologram.admin | OP | dh.admin | CloudHologram 全部管理权限。建议给管理员这一个就好 |
dh.admin | OP | dh.command | DecentHolograms 原本的管理节点,直接沿用。有它就跳过所有指令权限检查(规则 1) |
dh.command | OP | 下面全部「主指令」节点与 6 个群组节点(看板、行、页、功能、Display、性能分析) | 全部指令 |
dh.default | 所有人 | dh.command.decentholograms、dh.command.version | 能打 /clh 看版本资讯、用 /clh version |
包含关系:
cloudhologram.admin
└─ dh.admin(跳过全部检查)
└─ dh.command
├─ dh.command.decentholograms / version / reload / list / help / convert
├─ dh.command.holograms → 全部看板指令
├─ dh.command.lines → 全部行指令
├─ dh.command.pages → 全部页指令
├─ dh.command.features → 全部功能指令
├─ dh.command.displays → 全部 Display 指令
└─ dh.command.profiler → 全部性能分析指令
主指令
| 权限 | 默认 | 指令 |
|---|---|---|
dh.command.decentholograms | 所有人(经 dh.default) | /clh(主指令本身,没有它就什么子指令都用不了) |
dh.command.version | 所有人(经 dh.default) | /clh version(别名 ver、about) |
dh.command.reload | OP | /clh reload、/clh validate |
dh.command.list | OP | /clh list [页码] |
dh.command.help | OP | /clh help |
dh.command.convert | OP | /clh convert <插件> [文件] |
指令说明见 其他指令。
看板
群组节点:dh.command.holograms(OP),包含下表全部。指令说明见 看板指令。
| 权限 | 指令 | 也能用的快捷写法 |
|---|---|---|
dh.command.holograms.create | /clh hologram create | /clh create |
dh.command.holograms.delete | /clh hologram delete | /clh delete |
dh.command.holograms.clone | /clh hologram clone | /clh clone |
dh.command.holograms.rename | /clh hologram rename | |
dh.command.holograms.enable | /clh hologram enable | /clh enable |
dh.command.holograms.disable | /clh hologram disable | /clh disable |
dh.command.holograms.move | /clh hologram move | /clh move |
dh.command.holograms.movehere | /clh hologram movehere | /clh movehere |
dh.command.holograms.center | /clh hologram center | /clh center |
dh.command.holograms.align | /clh hologram align | /clh align |
dh.command.holograms.teleport | /clh hologram teleport | /clh teleport |
dh.command.holograms.near | /clh hologram near | /clh near |
dh.command.holograms.info | /clh hologram info | /clh info |
dh.command.holograms.lines | /clh hologram lines | |
dh.command.holograms.update | /clh hologram update | /clh style 也用这个节点 |
dh.command.holograms.setfacing | /clh hologram setfacing | |
dh.command.holograms.setdisplayrange | /clh hologram setdisplayrange | |
dh.command.holograms.setupdaterange | /clh hologram setupdaterange | |
dh.command.holograms.setupdateinterval | /clh hologram setupdateinterval | |
dh.command.holograms.downorigin | /clh hologram downorigin | |
dh.command.holograms.setpermission | /clh hologram setpermission | |
dh.command.holograms.addflag | /clh hologram addflag | |
dh.command.holograms.removeflag | /clh hologram removeflag | |
dh.command.holograms.help | /clh hologram help |
全部默认 OP。「快捷写法」那一栏的指令只检查自己的节点,不需要 dh.command.holograms(规则 4)。
行
群组节点:dh.command.lines(OP),包含下表全部。指令说明见 行指令。
| 权限 | 指令 |
|---|---|
dh.command.lines.add | /clh line add |
dh.command.lines.insert | /clh line insert |
dh.command.lines.set | /clh line set,以及快捷指令 /clh setline |
dh.command.lines.edit | /clh line edit |
dh.command.lines.remove | /clh line remove |
dh.command.lines.swap | /clh line swap |
dh.command.lines.align | /clh line align |
dh.command.lines.height | /clh line height |
dh.command.lines.offsetx | /clh line offsetx |
dh.command.lines.offsetz | /clh line offsetz |
dh.command.lines.setfacing | /clh line setfacing |
dh.command.lines.setpermission | /clh line setpermission |
dh.command.lines.addflag | /clh line addflag |
dh.command.lines.removeflag | /clh line removeflag |
dh.command.lines.info | /clh line info |
dh.command.lines.help | /clh line help |
全部默认 OP。
页
群组节点:dh.command.pages(OP)。指令说明见 页指令。
| 权限 | 指令 | 备注 |
|---|---|---|
dh.command.pages.add | /clh page add,以及快捷指令 /clh addpage | |
dh.command.pages.insert | /clh page insert | |
dh.command.pages.remove | /clh page remove | |
dh.command.pages.swap | /clh page swap | |
dh.command.pages.switch | /clh page switch | 后面指定别的玩家时还要有 dh.admin |
dh.command.pages.actions | /clh page actions | |
dh.command.pages.addaction | /clh page addaction,以及快捷指令 /clh click、/clh clickadd | |
dh.command.pages.clearactions | /clh page clearactions,以及快捷指令 /clh clickclear | |
dh.command.pages.removeaction | /clh page removeaction | |
dh.command.pages.help | /clh page help |
全部默认 OP。
功能
群组节点:dh.command.features(OP),包含下表全部。指令说明见 其他指令。
| 权限 | 指令 |
|---|---|
dh.command.features.list | /clh feature list |
dh.command.features.info | /clh feature info <功能> |
dh.command.features.enable | /clh feature enable <功能> |
dh.command.features.disable | /clh feature disable <功能> |
dh.command.features.reload | /clh feature reload <功能> |
dh.command.features.help | /clh feature help |
全部默认 OP。
Display
群组节点:dh.command.displays(OP),包含下表全部。只有 1.19.4 以上的服务器才有这组指令,说明见 Display 指令。
| 权限 | 指令 |
|---|---|
dh.command.displays.create | /clh d create |
dh.command.displays.delete | /clh d delete |
dh.command.displays.list | /clh d list |
dh.command.displays.nearby | /clh d nearby |
dh.command.displays.teleport | /clh d teleport |
dh.command.displays.move | /clh d move |
dh.command.displays.movehere | /clh d movehere |
dh.command.displays.center | /clh d center |
dh.command.displays.facing | /clh d set-facing |
dh.command.displays.rename | /clh d rename |
dh.command.displays.clone | /clh d clone |
dh.command.displays.enable | /clh d enable |
dh.command.displays.disable | /clh d disable |
dh.command.displays.displayrange | /clh d display-range |
dh.command.displays.updateinterval | /clh d update-interval |
dh.command.displays.attribute | /clh d attribute |
dh.command.displays.resetattribute | /clh d reset-attribute |
dh.command.displays.listattributes | /clh d list-attributes |
dh.command.displays.setblock | /clh d set-block |
dh.command.displays.setitem | /clh d set-item |
dh.command.displays.text.addline | /clh d addline |
dh.command.displays.text.insertline | /clh d insertline |
dh.command.displays.text.removeline | /clh d removeline |
dh.command.displays.text.setline | /clh d setline |
dh.command.displays.text.swaplines | /clh d swap-lines |
dh.command.displays.help | /clh d help |
全部默认 OP。Display 没有快捷写法,一定要同时有 dh.command.displays(规则 2)。
plugin.yml 里这几个节点的说明文字写的是 add-line、insert-line、remove-line、set-line,但实际指令是 addline、insertline、removeline、setline(没有短横线);节点名称本身没有问题。
性能分析
群组节点:dh.command.profiler(OP),包含下表全部,本身也包含在 dh.command 里。指令说明见 其他指令。
| 权限 | 指令 |
|---|---|
dh.command.profiler.start | /clh profiler start |
dh.command.profiler.stop | /clh profiler stop |
dh.command.profiler.reset | /clh profiler reset [计时器] |
dh.command.profiler.stats | /clh profiler stats [计时器] |
dh.command.profiler.help | /clh profiler help |
全部默认 OP。
观看权限
看板和看板里的每一行都可以设一个 permission:玩家有这个权限才看得到,没有就完全看不到(也点不到)。
这和上面的指令权限是两回事,节点名称自己取,例如 server.vip、holo.event。
| 对象 | 指令 | 文件写法 |
|---|---|---|
| 整个看板 | /clh hologram setpermission <看板> [权限] | 最外层写 permission: server.vip |
| 某一行 | /clh line setpermission <看板> <页> <行> [权限] | 那一行写 permission: server.vip |
- 不写
[权限]就是移除观看权限,所有人都看得到。 - 两层可以同时设:玩家要先看得到看板,才轮得到判断每一行。
- 看不到的行会直接消失,下面的行不会往上补位(会留下空隙),想要紧凑的排版可以把同一组内容做成不同看板或不同页。
- OP 看得到全部:自己取的节点没有任何插件宣告时,Bukkit 默认 OP 拥有。测试时请用非 OP 的帐号。
- 只是「看不到」,不会阻止玩家用其他方式触发指令。点击动作要限制权限,请在动作开头放
permission:,见 快捷指令 → 动作写法。 - Display 没有观看权限。
文件写法:
location: world:0.5:100:0.5
permission: server.vip # 整个看板只有 VIP 看得到
pages:
- lines:
- '&6VIP 专属区'
- content: '&c管理员备注:本周活动未开放'
permission: server.staff # 这一行只有管理员看得到
LuckPerms 范例
以下用 LuckPerms 指令示范,其他权限插件概念相同。
管理员:全部权限
/lp group admin permission set cloudhologram.admin true
建筑组:能编辑看板,但不能删除
/lp group builder permission set dh.command.holograms true
/lp group builder permission set dh.command.lines true
/lp group builder permission set dh.command.pages true
/lp group builder permission set dh.command.holograms.delete false
群组节点会带出全部子节点,再用 false 把 delete 关掉(/clh hologram delete 与 /clh delete 都会被挡)。dh.command.pages 已经包含设定点击动作的 /clh page addaction、/clh click,不用另外加。
只开放少数指令
只想让某人能建立和移动看板,不给群组节点,改用快捷写法:
/lp user Steve permission set dh.command.holograms.create true
/lp user Steve permission set dh.command.holograms.movehere true
Steve 可以用 /clh create、/clh movehere,但打 /clh hologram create 会被挡(缺 dh.command.holograms,规则 2)。
活动人员:只能编辑 Display
/lp group event permission set dh.command.displays true
/lp group event permission set dh.command.displays.delete false
看板只给 VIP 看
/clh hologram setpermission vip_lounge server.vip
/lp group vip permission set server.vip true
看板只给「不是 VIP」的人看(例如购买广告)
权限只能判断「有」,不能直接判断「没有」。做法是另外取一个节点,默认群组给 true、VIP 群组设成 false:
/clh hologram setpermission buy_vip_ad server.show-ad
/lp group default permission set server.show-ad true
/lp group vip permission set server.show-ad false
VIP 群组继承 default 时,自己的 false 会盖过继承来的 true,所以 VIP 看不到广告。
检查玩家有没有某个权限
/lp user Steve permission check dh.command.holograms.create
- 先确认玩家不是 OP(OP 什么都有,测不出效果)。
- 用
/lp user <玩家> permission check <节点>看结果是不是true。 - 用群组节点时,确认 LuckPerms 的
apply-bukkit-child-permissions没有被关掉(默认开启),否则dh.command.holograms不会带出子节点。