Minecraft(我的世界)中文论坛

标题: LuckPerms 各种信息堆

作者: cc7w    时间: 2017-8-4 14:26
标题: LuckPerms 各种信息堆
本帖最后由 mimimis 于 2017-9-10 13:44 编辑 * \6 ]5 e6 z: q( q( X
8 L; E/ O3 l, J. i# w
1 d/ m8 ~! ], I
" M" _$ c+ a$ ~1 e, b: z
8 f; m! g& f5 T% ]

8 C0 R8 ?5 Q# p) c1 F3 u6 F# sGitHub 地址 https://github.com/PluginsCDTribe/LuckPerms/wiki2 R6 F- K- z% o2 ?8 ?
划去的内容是已经搞完的(汉字数/字节数)
( j& d- f7 G2 C. T
' W" `: ]6 o# c4 T5 dHome(187/892, by 754)0 I! f+ \; Z: t! }* \" A
LuckPerms(1495/3927 ,By Art1900)Setup(3878/11877 ,By c7w || 9224/73272 ,By 754 || 575/7025,By Art1900)Features(3824/12661,By c7w || 1899/11277,By 754 || 1513/5367,By Art)Developers(1198/19751, by 754)Other(By c7w,1025/4067)Summary( H- c$ L! R! }1 G( e5 ~8 m! y2 R
754 —— 12508/105192
. u  ?0 p+ |$ M2 T+ s- D8 mc7w —— 8727/28605
) z* o7 l  k9 w* ^8 bArt —— 3583/163192 Y: q. @( @8 {9 r( a: }# U

作者: 海螺螺    时间: 2017-8-4 14:28
本帖最后由 754503921 于 2017-8-6 13:02 编辑
# d# v) ^; f- D  u0 c+ l; j# g! R6 ?5 M, \' c. a
DevelopersFeatures
* A$ y1 z( f+ G$ T. ]; YDeveloper API

2 }4 w) r' W- o$ [0 e% hFAQ
6 m/ z" `$ d, e: K8 D
Migration from other plugins
5 |3 ?5 b: _/ C$ t
Switching Storage Types & Backups
  N# W! O! S" V& b  C; H2 l
Default Group
. x, a* v! N5 A
Configuration
- ]/ E" S$ w, c( a4 S' ?! j
Home

作者: cc7w    时间: 2017-8-4 14:40
杂项  z% {0 {6 B  Q- Z/ D
本地化与语言文件
4 |& C, H# G/ ?0 q) U7 t( MLuckPerms 插件中所有的消息(包括颜色和格式代码)都能够修改。(似乎合情合理)& c, L/ l5 w1 y& Z
& a9 p+ r4 W, f4 ~
将下面的文件之一下载然后存储到LuckPerms的文件夹中,然后命名为 "lang.yml"。
6 Q+ y7 M! X, ^! e
! ?, g( A% W8 R3 u8 [5 g: D将文件中的消息文本改成你喜欢的样子,然后重启你的服务器就好了。/ E% ~; Z* d+ q6 U: D7 v
- Y5 b, e5 I  o( n, q# f' I
语言文件, y  z* o! t* `# b7 ~9 w
1 T6 R# l) R: D. y1 [

$ z& |! k/ A3 h+ }9 y6 U1 {
  j( e/ x: ]# u+ z6 U  {# i为翻译做贡献- O' [) z# x/ A

  T6 n; [* P5 p5 z5 q, {+ X如果你翻译了语言文件,然后提交回工程的话,我(和其他使用本插件的人)会很高兴的,因为其他使用者会受益。; u& Z! s: D( \6 e. b% ~1 ~0 L

/ z; n/ Q( f  q4 e- k  n上面的 "en_US" 语言文件应作为翻译的标准,你只能修改文本消息的值,关键字应保留原样。3 k# v! i6 d8 t# N/ D% O
6 Y' V' [$ `, O) D

作者: cc7w    时间: 2017-8-4 15:01
PlaceholderAPI' U( N: }4 d7 v1 o0 p- m& }
6 h  ?: t3 H) \) h* M1 d) y" |
在 extended_clip 的 PlaceholderAPI 插件中,LuckPerms 也注册了一些变量(Placeholders)。7 n& K. t4 I! ~$ p
: i6 }& ~. A& r3 ^3 H
LuckPerms 插件所使用的标识符是 "luckperms"。- a) z3 V% Q/ N$ b* N% \" I
6 d% q- e1 b  v5 r7 M5 |: e" \
使用
* D! p% E3 K: Y' |5 K* |0 M  W) ?: W7 i3 G: E* E0 L
要想使用变量的话,你需要运行下列命令。/ g% n* i6 r0 C; h1 `8 p& m

1 B. v6 j. f* Z3 [这些命令的作用就是安装 LuckPerms 的变量扩展,安装后你就可以使用下面列举出的变量了。8 n. q$ o1 l- @$ W( S- ]
! K- k& p& ]4 w& c" q# K
  1. /papi ecloud download LuckPerms. S# `- V* e. h. `$ W+ `
  2. /papi reload) n7 s3 r; s2 A( R
复制代码

7 P" b  B( |5 X. Q# u请记住使用这些指令你需要OP权限(或者你也可以选择在控制台中运行这些指令)
- R  C, ]  D  ]6 [% y
+ M. v. T, I( ^5 C" |: `3 R同时请注意,如果你想得到玩家的前缀或后缀数据,——如果你在服务器上安装了Vault插件和Vault的变量扩展的话,你也可以使用 Vault 插件所提供的变量。0 S0 Q; @& e/ z$ c& O+ W$ u" X* Q

: j. s" [7 j1 L# r3 z" x! K变量列表* P; W& j. e/ j; d: A1 K( F! ~+ Y$ h
( E" R+ X  p0 S  l
%luckperms_group_name%
- z' l6 P/ ?8 Y: \6 S4 l, Y
: z" x' y+ f$ W2 T: K& ^9 q使用说明: 返回玩家当前所在组的名字
: l9 z. Q+ p7 o3 ]使用示例: 暂无示例" K$ u9 P0 R2 C4 h/ N

7 e! T/ N% `! Q) c4 ?1 p: C/ Q6 }. V%luckperms_context_<context key>%; q% B; I7 a, p0 a! R" w
" I2 A& X4 q; O" a& ]
使用说明: 返回给定内容关键字的值,如果内容没有值的话会返回空
2 A3 L' Z/ b$ H6 t+ h! G使用示例: %luckperms_context_server%; R  P: A/ o9 x: \; C6 i9 N7 u
) p* Z4 {9 q/ R, b% Y; _
%luckperms_groups%
  s% n( t9 Z6 @( b/ I( x" \4 u" ~1 h+ m2 y) z0 n0 K* u5 i
使用说明: 返回服务器上的权限组列表,用逗号分割
0 _5 g* C' c% `6 G+ L* U使用示例: 暂无示例0 v' E# `8 ?( i7 m0 {4 `5 X

9 F5 u/ M, J7 ?' D: b& z; R+ m%luckperms_has_permission_<permission>%
( o) `2 ?% V; b" R! o% i# G/ c2 P4 \6 P
使用说明: 检查玩家是否直接拥有该权限,不会检查通配符或继承的权限  H8 Q8 j, n1 p5 }6 g: R9 {3 `) b
使用示例: %luckperms_has_permission_essentials.ban%( w$ T4 F9 ?! O) T4 u- K

6 Q& C: P0 W, w* y) ?9 Z# V; S( h%luckperms_check_permission_<permission>%
% ~* m0 T; r# C8 @
& E" @+ E* X0 p  a5 s( \  `& h" O使用说明: 检查玩家是否拥有指定权限,这个变量工作的方式和正常插件的检查方式没有区别
7 R$ K# o1 x6 K- t. }) W使用示例: %luckperms_check_permission_some.cool.permission%4 A$ ~- L, v- B- p- d

" j2 x: F9 ?. Q+ Q%luckperms_in_group_<group>%8 L: h4 E6 y8 m8 l8 e5 z
, K3 H* D' c+ C7 d
使用说明: 返回玩家是否为给定组的成员,不包括继承组
3 t1 Q! d( p2 B0 t6 g3 |使用示例: %luckperms_in_group_admin%
& c7 A) |9 k9 M% L+ b3 X- M$ ]+ H7 {4 f6 K( \4 R) S5 {
%luckperms_inherits_group_<group>%
1 B% E" I- _7 |' c( C+ Y
$ x5 E- w2 `- i0 }. f' N使用说明: 返回玩家是否在给定组或继承给定组
: W- \  l# y/ m3 Z! x使用示例: %luckperms_inherits_group_vip%  I' A: M% @" S4 X- ^  h' c

. P. d) [  G8 G) M( q$ p% G%luckperms_on_track_<track>%
5 T/ F  u" w0 f, _) D+ m, Y
$ U5 i3 a' J2 O% H1 G+ M; n' B使用说明: 返回玩家的权限组是否在给定权限组树上, R% d2 M* f  v% z! {* e* u& ~- ~, m
使用示例: %luckperms_on_track_staff%
( q8 g" ~% E8 a
! x* B  o/ ~. @& h  n  o%luckperms_has_groups_on_track_<track>%
4 w$ \. z, S9 v  }, ]& @( _) [3 V' k  j- A# U* X0 u2 c2 ?. v1 ^: V& A
使用说明: 检查玩家是否继承给定权限组树中的任何一个组/ b% C/ W7 U$ D: P9 o" Y1 m
使用示例: %luckperms_on_track_donor%$ Z8 L; [9 x1 E6 i
- j. P# ^2 x* G5 X9 R. `
%luckperms_highest_group_by_weight%
1 c. }% y8 c) ?% z1 Q) `: E+ ?! k1 b  b  M7 ?9 }( Z+ W! d
使用说明: 返回玩家所在权限组树种的最高级权限组
1 j4 p2 t# F; m: A( x# u使用示例: 暂无示例- o, d* Y7 J' R; C

7 }* ?+ I: j1 K( B' t3 ~& n  y+ ^%luckperms_lowest_group_by_weight%
% P4 d! h# \1 V( s. v% i1 p0 g# q
6 h5 W7 ]6 P4 O$ a5 S( F7 q. g0 Q使用说明: 返回玩家所在权限组树种的最低级权限组
- p4 s1 A8 w% G* s使用示例: 暂无示例
& e4 G" C, J) M: `5 b, q2 g4 T# S5 r3 k# q% i
%luckperms_first_group_on_tracks_<tracks>%; J/ Z6 W1 F9 s" C/ ], G! b' k& H+ d0 |
6 q, w) Q7 c, q) p; t* a
使用说明: 返回玩家在给定权限组树上所在的第一个组,权限组树会返回一组用逗号分隔的权限组名,权限组树中的每一个权限组都正序排列。使用示例: %luckperms_first_group_on_tracks_staff,donor%
1 L' ~- ]2 Z/ p% J* c6 F3 x
& C4 }& S+ S9 A! M%luckperms_last_group_on_tracks_<tracks>%
% B2 v) o: K' U9 ]1 w# ?4 ]& j
# {; q5 l5 A! l使用说明: 返回玩家在给定权限组树上所在的最后一个组,权限组树会返回一组用逗号分隔的权限组名,权限组树中的每一个权限组都倒序排列。( g2 g4 n) {, W" q/ p6 f
使用示例: %luckperms_last_group_on_tracks_staff,donor%2 N' K# k# O- x3 o/ h
/ ?( j' t3 Z1 ~9 {2 a6 H6 J/ U
%luckperms_expiry_time_<permission>%! K( D# X3 i2 E
) ^3 s' _) _% W) y/ a+ ]+ C9 u- U  `, w
使用说明: 获得玩家拥有的临时权限剩余的时间,如果玩家没有该权限的话会返回空  r! K2 y; ~+ Y+ v; K* d: @9 p
使用示例: %luckperms_expiry_time_essentials.fly%" z' `) X# V4 L. d, ^

0 |1 N. l2 J* \. q% e- \%luckperms_group_expiry_time_<group name>%
2 ^( w+ b! B0 Q& e. W; |$ c+ s' k: G3 z3 k) \' @
使用说明: 获得玩家拥有的临时权限组所剩余的时间,如果玩家不在该权限组的话会返回空" H  N( C( x" O" q0 B
使用示例: %luckperms_group_expiry_time_vip%
2 a" w0 F  X. T8 e% V8 B: `# V$ ~; Q1 U9 R  {
%luckperms_prefix%
2 E  k& R0 d8 W& y, E使用说明: 返回玩家的前缀,使用Vault所提供的变量所输出的结果可能会更精确,这一项不会被Vault的配置设置影响
5 @, q: m4 @" v8 m使用示例: 暂无示例; Q3 i7 D& Z! [: G/ N/ Z. T7 y

! [9 P( h2 S2 V) O  D6 B%luckperms_suffix%. }8 |' b8 v, _4 n/ o+ W4 i, Z! m

- n4 c' @  G6 ^- v: P5 k( b使用说明: 返回玩家的后缀,使用Vault所提供的变量所输出的结果可能会更精确,这一项不会被Vault的配置设置影响  {9 y, U$ @6 }( c  A2 [7 m
使用示例: 暂无示例( H. f' _( U8 E% g( s
( J7 L. W$ |: ]! A
%luckperms_meta_<meta key>%6 V! A4 H6 z0 Q) _
7 p/ z; z) R. Z9 u: S
使用说明: 返回与指定Meta关键字联系的值3 Y! P1 _* f- v. \/ ~# v( v
使用示例: %luckperms_meta_some-key%$ _4 D3 I) e- V

, [2 {3 i& A! W/ D8 t4 T+ L- W: S) c% y$ Q8 W3 G# G

% _: @, i8 ]" P8 U
作者: cc7w    时间: 2017-8-4 15:31
安装" l1 F2 a; Z- K9 G- [
初始设置* P0 V9 j. Q+ i4 q

/ }9 l9 ]5 x7 `' x' N; b下载适合你平台的 LuckPerms-???-x.x.x.jar 文件。你可以点这里查看最新的版本。4 J/ y, u$ U* H) H0 _' i4 @5 c
打开你的 Mod 或插件所在路径,这路径通常要么是 /server/plugins/ ,要么是 /server/mods/。
1 i$ m; h0 F; ]+ ]% q+ z1 k7 d然后把 LuckPerms 的 jar 文件放入文件夹中。% W$ ~* V- Q# a& D

5 K+ @+ ^8 N- C( I请完全关闭你的服务器,然后再打开,这会生成默认配置。8 N/ c- j* p- U& J2 \5 M
完全关闭你的服务器,打开配置文件。配置文件的位置在 /plugins/LuckPerms/config.yml 或 /config/luckperms/luckperms.conf。
$ \: r. q6 e8 F5 v1 e" ~请浏览配置文件,然后根据你的服务器修改设置,尤其是请注意存储相关设置。3 M5 |! Z* W& }: n- q* @1 ]) ~
再次开启你的服务器。. F6 @1 V; g, l/ z& P

" O' A1 {4 P* L! B你可以更改配置文件中的很多内容,文件有很细节化的注释,每个设置的作用注释中都解释的很清楚。
0 ]" F5 M  y8 X6 C# Y. s" d8 w! h; t4 E( Y3 Y8 i
需求( t! w3 J3 c( J' |) i& a4 [! D

7 X* b9 @- B- O; ]- b$ q% f2 t3 [LuckPerms 插件只有一个环境需求。; {5 L% ?" C% ^9 W: [. x! Y
Java 8
) V. H5 g* u& b1 D: |! V0 R6 O) G: X3 H& i, T8 f, I
没错,唯一需求就是你必须使用 Java 8,LuckPerms 插件在旧版本的Java上不会工作。
, ?/ X/ l6 P7 l到目前为止很多服务器提供商都已经升级到Java 8了,但是如果你的服务器提供商没有升级的话,请温和地和他们谈谈,让他们去升级。% L6 m+ r/ x+ @+ n
如果你是自己租主机开服的话,你应该对你还没有升级Java感到羞愧!
! r: F) e; m, C. Y- c( x0 ?升级的过程是很简单的,如果你想升级的话网上也有大量的教程。
/ y) r0 g4 j( Q* Z9 A4 |; j使用过期的软件肯定不是好的:)& g! L6 z! h- l, j7 F4 U' u

$ E/ d: T- ~. Y# I$ n+ g$ u( Y$ v6 tBukkit版本过旧
3 G5 H( \/ T% K
- t6 f& F2 i1 e. {8 I如果你收到了类似于 "NoSuchMethod" 或 "ClassNotFound" 这类错误的话,十有八九就是你在使用较旧的Bukkit版本。3 o1 y2 F& K5 V7 G7 e3 `
在将它作为错误报告给我之前,请尝试使用"Development Builds"(构建版本)下载页面的"Bukkit-Legacy"(Bukkit-旧版)版本。
2 H* a9 Z# M- |( P& Z) ]2 ~- B& s7 \
切换存储类型- i* i" j2 \0 P  D5 g

# y0 ]. S% E7 I( o" N5 C; H9 ILuckPerms 插件所使用的默认数据存储类型是 H2 数据库。
4 g4 P0 U* S; G! A2 X! I所有的数据都会储存在LuckPerms插件目录下的 luckperms.db.mv.db 文件之中。" B. n! O0 D. s4 O1 j
(插件目录为 /plugins/LuckPerms/ 或 /luckperms/)
8 b! k- _& q' j3 f. s! ~
' d  S! _/ G0 V( k) j这个数据格式普通的文本编辑器是不能读取的。
7 n% K8 ~5 D+ d- R% n0 G- ^8 J如果你想要手动阅读/编辑LuckPerms插件的数据的话,你就需要切换到YAML或JSON存储格式,更改 config.yml 文件中的配置选项就好了。; Q1 f  x& D. \9 O" P
3 F2 Y6 ]  w$ D" j" X$ D5 q

" d; B9 W) ^. Z1 W: H2 L更多相关于存储类型的有关信息请阅读下一节
1 b. I' @. B8 I# p/ ^* z! q
作者: INKDRRAK    时间: 2017-8-4 15:58
本帖最后由 1345979462 于 2017-8-4 16:00 编辑 " y2 r! Y# W% ?1 P: ~

- D- N$ B( [; v7 L" t  ]! \Why is LuckPerm部分翻译
9 i$ b9 z$ _" @8 g' h& c% qLuckPerms是什么?
这是另外一款全新的权限插件?% q$ Z/ h' L2 b2 [! T
是的,我认为LuckPerm相比其他权限插件还有很大的发展空间
2 b2 D. s+ {: D- S( M$ a' ]' Y3 }5 RLuckPerm是一款先进、高等的权限插件,仅仅以快速、稳定可靠、灵活多变的特点
: a7 o9 _' l( W: Q' n" ^) {便可以替代现有的许多权限插件,例如PermissionsEX、GroupManagerX、z/bPermissions、BungeePerms等主流权限插件
+ M. f9 x" C& qLuckPerms这个插件的计划,本来是围绕着两个主要特点来制作的:高性能、强大且广泛的功能7 J( k5 d1 M$ u7 p9 ?* g) L) J
填补其他同类插件的功能缺陷、并且建立在同类现有功能上更进一步的优化功能: U& ]! z" S1 ~6 @- @
LuckPerms还包括了非常广泛的API支持,这是为开发人员的添加的
1 \/ T8 S# H) Z9 L. `$ I" q并且,luckperms还兼容各式各类Minecraft服务器软件&支持多种数据存储的选择
4 }% `. @- |( Y# P2 x( j! ^我已经使用某插件很长一段时间了,它对我的帮助很大,我也很熟悉它了,为什么我要更换它而选择LuckPerm呢?
6 @# X( l' j' M现在主流的权限插件大多数都是老牌插件了,并且都是在Bukkit早期就被创造出来了: _8 \1 O+ Y$ u+ F  f9 o
虽然,这可能意味着它们非常的稳定可靠,但通常也意味着它们被原作者抛弃,并且一般不会再有任何更新、修复
  I6 k3 R0 {7 q" _: D7 T/ g8 p但LuckPerm却任然是一个需要成长、需要磨砺的插件!
. [4 ]% c) Q3 B* Z我会尽力及时查看并回复所有的bug报告、问题,以及可实现的新功能建议+ ^* c/ {" O8 f
你说的不错,但是我更加偏爱某插件,因为仅凭它就完成了我需要的一切
) s- i  g  l5 z( x% C这没关系,我完全理解你的这种心态,我并不是想要说你必须用LuckPerm来作为你服务器的权限插件$ L2 q4 W/ q% L3 u. F! B1 g  n
当然还有更多适合你服务器权限插件,但是LuckPerm确实是个很棒的选择,不是么?9 r# S! T% H* d. Z3 L
来吧兄弟,告诉我,我为什么要使用LuckPerm?
4 E; U; I( K: F& eLuckPerm能做很多事情,至少单在技术层面,LuckPerm就胜过大部分同类插件
: R, D5 S' b! l7 y" Q" a2 {' B我认为这不取决于我制作插件的水平,而是取决于我在LuckPerm上面花费的精力与时间
! P' [8 K" H8 K0 t& sLuckPerm是我在2016年开始准备编写的插件,但因为Bukkit变得流行起来,许多同一时期的插件都变成了老牌稳定插件
) b8 N- L6 B. V4 t- }! V% o不过,这也为我编写LuckPerm提供的很好的参考帮助,因为我可以避免其它同类插件的缺陷4 j0 v' y! d; f3 B
并且明白它们哪些地方做的特别出色,我可以在其基础之上进一步优化,使那部分功能变得更加引人瞩目
, b7 a6 \, L1 n, \0 _8 g记着,如果你对LuckPerm技术性方面的内容感兴趣,我推荐你从命令使用部分开始阅读) M: e) P  S* S/ ]
或者看看wiki列出的其他部分内容,在本节的其余部分,我会将阅读重点放到LuckPerm一些全新的特色功能上面5 V4 A* [) e+ ^
这些内容是你不太可能从其他插件中找到的,专属luckPerm的特色功能!+ o/ s& D, l% }* Q* W. {! q7 f# Q
Verbose(权限查看系统)
& |: I3 U" e" J, o8 k2 {) p$ @, n: ILuckPerm有一套完整的权限查看系统,是的,它叫做Verbose; x1 T( w6 O$ `3 P
他可以实时监视并检测其他插件所需的权限,就像下面示例的动态图那样% N* t  u$ z$ D( O+ v  D5 o/ B) f$ |

4 N, S$ ~5 i' ?4 |) F3 g, m# [/ S% b$ y
你也可以把录像上传到网上,方便查看、分析和阅读:https://git.io/vQitM
8 c* s" `/ W6 H' v' o+ I权限树系统
+ f8 l( v2 z6 S1 ^. l$ pLuckPerm允许你在服务器所有已知权限上建立编写"权限树"- S! k- o  O5 s7 z- `2 U
权限树上的数据是由你所有的插件在服务器注册的权限构成的
1 S8 q% Q4 J" |7 p& X随着你服务器运营时间的增长,因为服务器添加了许多插件,它们都会注册权限,这些数据都会被纳入权限树中, h: [$ D% O, }' ?* b
这是个清真的例子(https://git.io/vQiti
) p( T$ Y0 g" V7 X+ m/ f- H- Q你看到的权限树的颜色,代表了你的玩家是否拥有对应的权限,这一机制很方便的让你查阅到服务器的相应权限9 g; _6 U) D) f3 Z  x( L
这还是那个清真的例子(https://git.io/vQit14 g  O/ m" F$ E0 X4 t% u" ^8 R
指令界面&TAB补全
5 w! X, a  s$ X3 vLuckPerm的指令系统被我设计的尽可能便捷、易用、人性化" R/ T# G- C8 z+ j# _4 N8 ]
这样一来,你除了查阅LuckPerm的大量相关帮助文档,还可以在游戏中查看指令用法、以及指令列表
, o' _) w. T6 \  {2 d8 _+ H
% {+ m8 z9 O2 Y! PLuckPerm的所有指令皆可使用TAB补全功能,这就意味着,你可以通过输入更少的指令来完成你的工作!
% F. s% E' h) m这是不是在一定程度极大地提高了你的工作效率呢?就像下面那样
9 k' U: q8 \1 q  a
( F  B6 w6 r6 Y  s" e" B% E网站编辑! I0 E% o0 I4 y. @% j( w
除了使用指令来编辑服务器权限相关,LuckPerm还提供了更加便捷的编辑方式
; @1 m& ?" R2 f) M你可以使用Web网站编辑器来对服务器的权限数据进行快速更改4 Z6 U- r3 w" X
任何人都能够使用网站编辑器,不论你使用了哪种存储方式!
. `3 r. U) A8 j1 c网站编辑功能非常容易使用,且易于上手0 b4 a' \  G# c
& ^8 i" P1 @# `7 x# |- `- _6 y' [
行为记录仪
9 _. I* y  M; y为了防止服务器中出现心存不轨的管理员,想要私自给自己添加权限  i9 H: ]( Y/ a+ n
LuckPerm详细的记录了服务器各类权限的微小变化
2 p! }: [; ~7 K6 ^$ s你可以通过行为记录仪来搜索每个人的详细操作
' A; o; U7 W" y1 ~/ `
作者: cc7w    时间: 2017-8-4 16:22
选择存储类型
, o- ?+ ~% o* {  X
" H0 M& c, {. e- CLuckPerms 插件带有很多存储数据的方式,你可以从中选择。
( a) \" v- h( _! s1 N* Z4 x存储类型选项可以在 config.yml 或 luckperms.conf 文件中修改。
& F2 [% S5 n+ K' C7 d+ Y( W) l) O: U& {! K* o" V* X2 z
  1. # Which storage method the plugin should use.
    ( N; x: X! F) ?8 t4 t
  2. # Currently supported: mysql, postgresql, sqlite, h2, json, yaml, mongodb
    3 P5 I% s8 h/ N! {
  3. # Fill out connection info below if you're using MySQL, PostgreSQL or MongoDB
    % U% r6 J7 O" p2 x
  4. storage-method: h2
    4 f; c2 t) Q& [& a3 I
复制代码
1 Y, e3 Q: P( I+ l
6 m  k9 [9 z- F5 f: X* ], D
请记住如果你想改变存储类型的话,你的数据不会自动转移到新的存储库中。3 @# ~! v' D0 t- P1 [4 h
要想手动在数据存储方式间转移数据的话,请查看这里来获得更多信息。
' r( l, n: X6 X' h/ i3 |& _9 T
7 H+ }' O$ x9 c7 _8 _可用的选项都列在了下面。1 S" H# w0 ~- J7 k
4 v% U. o; s; S3 {% `& ?4 E' o
H2 / SQLite6 m7 n% p8 x8 ~) E; R
默认的存储类型是 H2 。
: X* A+ a# y3 q6 B% J" B这两种文件类型都是以SQL数据库为基础的。  ]/ }# o1 h4 @, n# c4 {6 e6 u7 f& V
所有的数据都会存储在LuckPerms插件目录下的一个文件之中。
- j4 C+ H% u3 S# J: [和YAML和JSON方式的不同之处在于,这个文件不能用文本编辑器打开。% P" c9 ]" q1 t# U/ V" f0 F
你必须使用插件提供的命令才能编辑或查看数据。
' R' K4 |& G  A  m* v  n, R& b6 V0 Y
如果你选择使用 H2 数据库的话(默认设置),所有的数据都会储存在 luckperms-h2.mv.db 文件中。
' u: C' w( s. G. R3 e# z% MSQLite 类型所提供的存储文件是 luckperms-sqlite.db。. J8 O9 J+ g7 O8 D/ U' W
; w' U; x4 m) I/ i& ]
要想使用这两种类型中的一种,请将配置设置为:4 p) L6 |0 _" P" |# ^8 c

% A( H/ _' {6 h# q/ E; z
  1. storage-method: h2
    ) z: l" }, e8 ^" i0 V
  2. # or
    # Z. d3 b* h6 P4 p
  3. storage-method: sqlite
    - X6 u2 s8 Y* I5 p! b
复制代码

7 z+ @2 x" J7 x$ SJSON / YAML
. ^; c) w$ I3 G4 I0 i
4 I% W6 A! j+ H" ]  v' d$ QJSON 和 YAML 存储类型会将数据存储在可读可编辑的文本文件中。YAML 类型所提供的文件扩展名为 .yml ,JSON类型所提供的文件扩展名为 .json。; e7 i$ V1 f2 {  P
: W# _/ u+ y4 U' ?) a( b% L
这两种类型的存储格式很相似,只是在一些句法上不同。4 t) D7 K! j7 N2 L! [. u8 u

% z* L9 [6 ^) k: Z2 S+ N1 a% B2 M, S示例YAML文件
5 Z/ _0 t; B( b
  1. uuid: c1d60c50-70b5-4722-8057-87767557e50d- C# F, o" ^$ A2 q: ^% @4 c' |4 Y9 K
  2. name: Luck# a8 d( x+ ~' o% G' k9 b, S, [7 z, \
  3. primary-group: default  t! [1 B# U0 D2 w
  4. permissions:" V* Q  k7 G& c: A9 \( G( L9 |
  5. - group.default:) V" h( a, e, G
  6.     value: true
    7 k" e& `9 x8 v0 ~8 S/ N
  7. - test.permission:0 {% P; e4 A& c# d
  8.     value: true
    7 [$ y- A" r+ Q# u/ |; W8 A) n
  9.     server: factions, x# h( s' l2 d. F" {  h, }
  10. - other.test.permission:
    8 N7 H& ^5 a/ A
  11.     value: false
复制代码

7 _3 K6 j% h5 m) w' A" s# C0 O' h
' {5 G* q0 P7 K, k示例JSON文件, n" ?" {4 J. I
  1. {% B7 d( M7 |3 l0 ^
  2.   "uuid": "c1d60c50-70b5-4722-8057-87767557e50d",
    * T# l. [1 ^* e& l6 ^$ ]
  3.   "name": "Luck",
    7 R% G9 p  q, y- }
  4.   "primaryGroup": "default",
    5 `) \1 O+ E* e: N& S7 C7 i7 }
  5.   "permissions": [% H$ R, R! t; n4 F0 O) \" l
  6.     {
    / E9 @& |& y* e3 a4 j3 ?) L
  7.       "group.default": {
    ( m! B+ z1 s* {" J
  8.         "value": true: D; R( X1 X9 |: w4 J& L# f
  9.       }
    . ~, Y* J% a* f% \
  10.     },8 p% a" ~. K. t& K9 B' d& J
  11.     {
    4 ^6 p+ L0 |1 j
  12.       "test.permission": {6 Z' \# F0 l& z6 i! G' S
  13.         "value": true,
    9 s3 |  i" v6 R) Y& s
  14.         "server": "factions"" c2 p' Z, ~: Y  X) z
  15.       }
    # e+ [& Y0 o: r$ r( Z
  16.     },
    8 g  [. @' l+ h. x2 T2 N) h
  17.     {7 d6 a1 A! e! n: }) S0 M
  18.       "other.test.permission": {* p! j0 M, S/ D1 v
  19.         "value": false,
    1 f: s8 w3 w/ k
  20.         "server": "test"& C/ d/ c1 E$ E
  21.       }
    6 o5 V/ @9 t/ N
  22.     }+ i& _8 O0 P2 B) o: p# z% Q
  23.   ]
    " `) w/ k' f8 y9 B2 \1 O- r  L9 h
  24. }
复制代码

3 Z# m  `( `; w6 R' e, T
: i. Z5 Q5 L1 m" p  d5 ^( }) P9 t要想使用这两种类型中的一种,请将配置设置为:/ N8 f" r/ Y" @$ `. j
. y* K5 C9 R  }" i( y* W+ L2 |$ p
  1. storage-method: yaml( ^' E  ?  c; x5 p! ^) y. Y! O
  2. # or
    + _. j& I. |3 I+ T3 p  q
  3. storage-method: json: c$ S$ M- l) d: a* d
复制代码
  R% |1 n7 {, {# Z6 a0 v
6 Z3 n; H) r+ U
MySQL / PostgreSQL
. {  q' N' p7 B0 k' k( j
7 A; g+ ^$ }! b7 s3 _. _4 e3 @/ n4 `: A储存在 MySQL 类型和 PostgreSQL 类型中的数据格式上与上文提及的 H2/SQLite 类型相同,但是数据是储存在远程服务器上的。
- i; K: z  j$ f$ f这意味着你可以跨服分享相同的数据。' u# T6 G& B9 q
你需要在配置文件中输入你数据库服务器的地址,端口,数据库名,用户名和密码。
! l- o) g" A0 n6 E6 E/ q这种类型推荐要存储大量数据的用户,或是想要搭建群组服务器的用户所使用。
3 C! H& a6 ]# g) @) l% U8 z/ S1 d3 R, J如果你已经在运行群组服务器,并且想要在子服务器之间同步数据的话,你就必须选择这种类型了。: q7 O- S; K  c
1 }: ]& ]& ~- K
格式布局示例在这里
; s1 L% g2 Z5 S4 j8 b# b3 p* L- }1 w+ J
要想使用这两种选项中的一种,请将配置设置为:
; o6 |2 p& C3 G0 [* ?8 M" B. ^5 a- ^
  1. storage-method: mysql
    9 N  K& f4 [9 k( R+ ]( ~
  2. # or
    % d" B  J$ k% Q  @$ ], J" L
  3. storage-method: postgresql
复制代码

$ }6 c  K$ x& v, q6 P- D+ q4 f/ x9 ^( @2 ?. ?/ ~5 e1 M6 r  E" W
MongoDB# o: T# @, B% m9 g7 Q* ~7 `+ v
0 _) U) d& ]/ j! j6 x8 T1 N
LuckPerms 也支持 MongoDB 类型的存储,它也是一种远程数据库,在有些方面上和 MySQL 相似。: c4 I3 Z2 O4 N; ]% B& l
这种类型也只会被一小部分的用户所使用。
  Z+ v8 l! r! i5 D/ W要想使用这种类型的存储,请将配置设置为:
# k. J1 ^! v! K6 p' [* R
. k, _1 w8 R: q! J! j4 h; o
  1. storage-method: mongodb
复制代码
9 c% F( j9 y+ [% S* s- K

* h* B1 z1 X  x6 l8 J; s
作者: cc7w    时间: 2017-8-4 17:01
使用教程$ R! ?# r% j$ ]9 j! l- I+ ?1 t

/ p, z( {4 m2 ~, f这篇教程是为之前从来没有使用过权限管理插件的人所准备的。
$ _; p' O: F4 n如果你已经很熟悉权限管理等相关概念了的话,我认为你应该就能够理解命令中的东西了。8 F0 N. _/ }" J: j
这样我就推荐你去阅读命令和权限页面,这样更加“直奔主题”,你也能够更容易理解插件的工作方法。
- c  @! Q! i. p: i; r; K5 k/ w, [9 H, S) z% n  a
如果你正在努力想弄明白权限管理相关概念的话,这篇教程就是你起步的最佳地方:)2 r/ ]6 n% @3 u$ K3 }
5 p# X7 m& X& [4 ~. D$ ^5 y* E% x
关键术语3 S& n, M$ P7 p$ z  H  a4 x

$ Z: G0 {/ r0 S! {: T4 F. w权限
; ^0 f* i3 M+ m& e在你的服务器上会有大量的特性,命令和一些新功能。4 L9 u: ?' Z2 m( c: Q+ v
这其中的一些特性是服务器自带的,另一些是由“插件”所添加的。* |' H5 E+ f8 B3 M' F1 h
与这些特性相联系的大多数行为都是由权限所控制的,因此你可以控制哪些用户可以使用你指定的特性或权限。# o; `& b" Z5 c* Q- |2 c0 t" `3 q
6 y9 ~: I- ], s9 T2 l" P- Y- V( ?
权限仅仅是个字符串,并且使用英文的句号(半角 → . ←)分成几部分。" p: v: @0 ~/ E- ~! z  G
举个例子, “minecraft.command.ban” 就是原版 /ban 命令所使用的权限。
- A0 m" a' F& S# r2 w显然我们不想让所有用户都能执行这个命令,所以我们只给我们信任的玩家这个权限。! H1 ]4 P+ R$ w7 N3 z
( g; ~, E- \0 C2 D' k  J/ j5 M
代表特定行为的使用许可的字符串,我们就称之为权限,它又名“权限节点”,简称“权限”。
- e6 a& i. I1 R3 H2 P
& p4 j4 G4 x4 U& E6 R& E1 b权限组0 Y: y1 y; i; C% b6 {6 q2 Y. x
代替单独为每个用户设置权限,我们可以将权限捆绑为一组,然后直接将这一组给予玩家。1 r5 V9 A7 x' ]5 `) W% @8 n  [; o
举个例子,在我设置的“admin”权限组中,我可能会添加使用ban和unban指令的权限,然后将玩家加入admin权限组中。; ^& I" B( h: S! M
这意味着他们能够获得“admin”权限组所设置的所有权限和他们自身被设置的权限。
2 b4 z5 W' A. t' n; N
% m9 }+ H5 o& i6 Z) `1 u4 O继承
1 w8 w' |2 V9 ~: O用户和权限组能够互相继承权限。) {- A+ J8 o+ D' L4 r0 O( p
举个例子,默认地,所有的用户都会从“default”权限组继承权限。
3 J: m) b3 ^  U# O+ r$ J% U你可以为你自己的服务器设置你自己的权限组与继承方式,或是制作你自己独特的系统。
1 z( V  S; A% ~  _9 q8 I9 o* ]& h6 d2 B$ m7 r: S2 ~
举个例子,我设置了三个权限组, “default”, “moderator” 和 “admin”。: H% Y  [1 N8 t6 }  @
我想让“moderator”权限组从“default”权限组继承所有权限,“admin”权限组从“moderator”权限组继承所有权限。
1 _1 o1 q% k% T$ |$ D% M3 I- R7 q0 y% n! ?
起步6 O+ y- U4 x- ^
如果你还没有将LuckPerms插件安装在你的服务器上的话,我们推荐你先阅读安装有关的教程。; x$ N) P/ t0 L: z4 n- F" d
然后,请确保你在继续之前已经阅读了选择数据存储类型的有关章节。$ U9 L) [* H9 j+ w
虽然你在后期也能实现数据之间的转移,但第一次就将他们弄对位置是更好的。
. B0 `! Y2 i" H$ t
+ F0 U0 x7 ]' E7 P: X3 y6 D9 S给予修改权限的全部权限. y8 m* k3 Q" l! H
你想做的第一件事情就是给你本插件的所有权限。0 _' T7 K1 j' Z# s2 ?  _, n  f
当本插件首次安装后,没有人能够使用LuckPerms插件的有关命令。
, }9 D3 ?& b& J% g: M0 t9 v) j, b# S" j/ i4 \
要想做到这个的话,你需要在服务器控制台输入 /luckperms user Luck permission set luckperms.* true 。8 ~" c- }/ R$ ~6 e
当然,请把我的名字换成你自己的(不用担心,这条命令的使用方法之后会详细讲解)+ u% e* q! ~- O0 X. U1 X. f% w
这应该就是运行的结果:$ |6 S) ~# w: P7 P& x

: k3 g# P" c- X, p9 ?' h- }4 j' {$ Z
实际上,这条命令起的效果,就是给了 Luck 用户 luckperms.* 权限。(或者说,为用户设置权限为 true)" _$ c. o# [. n
0 W: Q7 [$ X" G4 \
你可能已经注意到了我们刚才在权限字符串的末端使用的 * 字符了。
) `0 I% m# I- R# z5 G( N: y* X这个字符叫做通配符,它会给玩家所有以 "luckperms" 为开头的权限。3 I: Q3 l  R& i& A: Q

' O* W  q% g7 [# W( i  X创建第一个权限组
' h8 u7 ?3 D, U# Z7 P我们可以使用创建权限组命令来创建一个新的权限组。
$ a5 \' j# C- G, p让我们创建一个叫做“admin”的权限组,然后给它附加一条权限吧。5 v; i# O* x6 i+ z( J
首先,运行 /luckperms creategroup admin 命令。
. Q1 H. I* b5 S8 L这会创建一个叫做“admin”的空权限组。( p% X! F* w8 L& R8 m& N% }
' a( o' f) J+ H- z( J' w/ f
& J) W# Q0 z* L0 K4 _; J
接下来,我们想为“admin”权限组增加一条权限。
4 \1 i  o/ f" s5 W/ M$ K用来修改权限组的命令是 /luckperms group <group>。
8 Q% L4 |: ^  v& Q如果你执行这条命令的话,它会为你显示所有可用的子命令。
, w8 Y: ?/ V0 ]  d4 k2 t# F
# }3 y! e1 p1 n! A1 `; \
$ I- y+ ~/ e; M% G* w: B你可能注意到了第一个子命令是“info”命令。它只会列举出一些权限组相关的信息。
  {4 I4 r: b! O8 F* ]) x3 B我们可以运行 /luckperms group admin info 来查看新建立的“admin”权限组的一些信息。+ @5 K& {3 v- J& U6 X5 i; t
2 l. r  d5 u3 u5 l: ~: o

7 ?- o$ v, L8 m1 S8 V0 q2 U: w  N接下来就是“permission”命令。这能够帮助你修改权限组的权限。0 F" ~8 p7 s! Z8 B' X1 @  A+ X
再一次,使用 /luckperms group admin permission 命令会列出所有可用的子命令。( F7 U1 N6 V: }( v% A% L

6 O9 Y- w1 x. h) ^* ~0 L" z- C$ @5 _* `7 |6 K/ Y
再一次,我们看到了更多我们可以执行的命令。
4 {9 I8 `: p' A8 {; ]8 f第一个就是另一个 "info" 子命令。" E$ b: o% b6 k/ t  d4 ?9 S
因为它是“permission”子命令下的又一子命令,它就会显示某一权限组所拥有的所有权限。
4 h' F; e* I& {7 q0 q' D3 r8 \下面的命令是“set”子命令。
$ g! r5 A' k2 o/ J; M! |! K* D' B$ V6 T9 ?1 U8 Y4 n
你还记得吗,之前我们使用相似的指令来给玩家 "luckperms.*" 权限。这里它也相同
1 N8 T5 m* d0 {# t  G9 g2 ~只需要不加参数运行该命令就可以返回该命令的使用方法。举个例子:
, X, m2 [7 }& y4 P) \
; s% X0 b- `" i% @2 G! K8 Q8 g/ ^& L3 z) i) c. r* x+ o
举个例子,我想给我的“admin”用户组 "minecraft.command.ban" 权限。# r% g4 `6 Y6 \5 X: p) k. r8 @
因此我可以输入 /luckperms group admin permission set minecraft.command.ban true 。
: ~, s: I9 }* {& F! y: N& u+ @! q# k3 E9 O3 B- s) t

+ X3 ?" P) q" F3 ]这条命令就会给予“admin”用户组 “minecraft.command.ban permission” 权限。" Q; u% @5 r" s) j5 @# h
末端的true控制我们设置的权限的启用与否。
- T' X, j7 j8 z/ _- V, q& c5 O你可以将权限的启用与否设置为 true 或 false 。
; G5 K( _; B! I2 b; g' \为用户或权限组将权限设置为 true 能够让他们拥有该权限,设置为 false 即该权限无效。(指定他们没有该权限)
5 V# b  z# {9 x6 Y% k
- |: f3 M2 O# h$ H. \0 K如果晚些时候我决定不再让“admin”用户组拥有这个权限了,我可以使用 unset 命令来移除该权限的设定。
( w0 N- d: Y5 r, ~2 y5 d, [3 j  v输入 /luckperms group admin permission unset minecraft.command.ban 。  r- ~  g: r% n
4 M1 L; B* `: I( n. @; C

$ o3 Q3 C) D1 m3 C/ Y+ q3 [& k将玩家加入到权限组中
4 q9 q  i; J8 v) w将用户加入到权限组中需要使用 "parent" 命令。(在我们的命令使用页我们经常用“permission”替换“parent”)* p$ k' P) |% n
举个例子,把我自己加入“admin”权限组中,我需要使用 /luckperms user Luck parent add admin 。4 i) z# A/ \( U8 D+ C
% _/ q+ _) Y! h; z3 V7 r
; x7 G% [( o: z6 n- Q" F
这条命令会将用户 Luck 加入到“admin”权限组中。, V7 F- k$ L6 w! I; C
这意味着任何“admin”权限组所拥有的权限我现在也继承下来了。& G7 t2 p5 k: w6 m  C. l

; K# |3 V$ p- l- H  D# `让一个权限组继承另一个权限组
8 }' s( g: L0 z2 u1 Z3 a# r就像用户能够继承一样,权限组也能够继承另一个权限组。
3 [! D8 J/ J5 \& e, |. s举个例子,想想下面这种情况的设置方法。(有些权限仅仅是为了演示而编造出来的)7 H4 w  F# K1 |* d+ c% E- Z
AdminModDefault
minecraft.command.banminecraft.command.muteminecraft.command.say
minecraft.command.pardonminecraft.command.unmuteminecraft.command.me
some.cool.admin.permsome.cool.mod.perm
someplugin.vanishchatcolor.bold
) S# H- s- ~  a2 Y
我想让“admin”权限组中的用户拥有“mod”和“default”权限组的权限,同时“mod”权限组中的用户拥有“default”权限组中的权限。要想实现这个的话,我可以设置用户组之间的相互继承。
; S) a) }/ T! D5 e( E( `# w
- K6 z: V5 w- W+ e) y1 p- C9 ^0 {: T/luckperms group admin parent add mod 命令会让“admin”权限组继承所有“mod”权限组中的权限。5 @# O! K, V3 i# H: d# c
然后要想让“mod”继承“default”,同样的道理,我可以输入 /luckperms group mod parent add default。
' I' z; D. \' X- y
& e* E$ Y+ I; o6 Z2 K% x
5 |7 D' ^' M2 j# ~9 q' A; B6 X继承是可递归的,所以这样以后“admin”权限组就不仅仅继承了“mod”权限组,还继承了“default”权限组。- q8 E9 s- l6 V) N
这意味着“admin”权限组中的玩家拥有“mod”和“default”两权限组中的权限了。
1 s% v  i6 p( h+ e" n' k; H3 i# p" C3 R8 @& _( @' Q
在“admin”组的一位用户因此拥有 minecraft.command.ban,minecraft.command.mute 和 minecraft.command.say 权限。
* Q. g4 h& y$ `8 B. H  y* g0 k: }; l: N+ u7 m
移除继承权限组, U9 M8 D/ b& D2 Q; O
要想移除权限组间的继承关系只需要输入一个类似的命令就好了。) Y% y; a* i5 V6 ?9 Y4 {1 V8 d* b- T
要想让我自己不再继承“admin”权限组,我只要输入 /luckperms user Luck parent remove admin 就好了。1 ~1 T- j4 q% e& O! K% Z6 l
& A( F6 l8 t" N. [7 j6 K3 |- u. C

6 s9 U. j% |, i; N7 ]; W% [2 Y" V0 B; d% U* \7 Y3 k" s5 U

9 ~7 S4 X7 Y, ?, |- Z, ~  h7 y
作者: INKDRRAK    时间: 2017-8-5 14:12
GM&PEX对应等效指令*
我编写这部分WIKI内容的目的是为了帮助用户们适应从GM/PEX到LuckPerm的转变4 N0 g9 r4 K! y% [4 g
这里我制作了一份对应等效指令的表格,方便用户随时查阅
; R: u0 W; J' X$ @* z# o1 K9 i- W5 ~*对应等效指令:在LuckPerm中与其他权限插件效果相同的指令
6 U3 ]4 h9 D7 c$ k2 W0 KGroupManager与LuckPerm的对应等效指令:
6 ^, Z5 r/ O& C
GroupManager 指令LuckPerms 对应等效指令
manuadd <玩家> <组>lp user <玩家> parent set <组>
manudel <玩家>lp user <玩家> clear
manuaddsub <玩家> <组>lp user <玩家> parent add <组>
manudelsub <玩家> <组>lp user <玩家> parent remove <组>
manpromote <玩家> <组>lp user <玩家> promote <权限系>
mandemote <玩家> <组>lp user <玩家> demote <权限系>
manwhois <玩家>lp user <玩家> info
manuaddp <玩家> <权限>lp user <玩家> permission set <权限> true
manudelp <玩家> <权限>lp user <玩家> permission unset <权限>
manulistp <玩家>lp user <玩家> permission info
manucheckp <玩家> <权限>lp user <玩家> haspermission <权限>
manuaddv <玩家> prefix <值>lp user <玩家> meta addprefix <优先级> <值>
manuaddv <玩家> suffix <值>lp user <玩家> meta addsuffix <优先级> <值>
manuaddv <玩家> <变量> <值>lp user <玩家> meta set <变量> <值>
manudelv <玩家> <变量>lp user <玩家> meta unset <变量>
manulistv <玩家>lp user <玩家> meta info
mangadd <组>lp creategroup <组>
mangdel <组>lp deletegroup <组>
mangaddi <甲组> <乙组>lp group <甲组> parent add <乙组>
mangdeli <甲组> <乙组>lp group <甲组> parent remove <乙组>
listgroupslp listgroups
mangaddp <组> <权限>lp group <组> permission set <权限> true
mangdelp <组> <权限>lp group <组> permission unset <权限>
manglistp <组>lp group <组> permission info
mangcheckp <组> <权限>lp group <组> haspermission <权限>
mangaddv <玩家> prefix <值>lp group <组> meta addprefix <优先级> <值>
mangaddv <玩家> suffix <值>lp group <组> meta addsuffix <优先级> <值>
mangaddv <玩家> <变量> <值>lp group <组> meta set <变量> <值>
mangdelv <玩家> <变量>lp group <组> meta unset <变量>
manglistv <玩家>lp group <组> meta info
mansavelp sync
manloadlp sync
, {# H9 ?7 A* y* [! s& k- B
PermissionsEx与LuckPerm的对应等效指令
- v; \2 `! _. H: E
PermissionsEx 指令LuckPerms 对应等效指令
pexlp
pex reloadlp sync
pex toggle debuglp verbose true
pex user <玩家> check <权限>lp user <玩家> haspermission <权限>
pex backendlp info
pex import <终端>lp export <file> / lp import <file>
pex set default group <组>(in the config file)
pex user <玩家> listlp user <玩家> permission info
pex user <玩家> prefixlp user <玩家> meta info
pex user <玩家> prefix <前缀>lp user <玩家> meta addprefix <优先级> <前缀>
pex user <玩家> suffixlp user <玩家> meta info
pex user <玩家> suffix <后缀>lp user <玩家> meta addsuffix <优先级> <后缀>
pex user <玩家> deletelp user <玩家> clear
pex user <玩家> add <权限> <世界>lp user <玩家> permission set <权限> true global <世界>
pex user <玩家> remove <权限> <世界>lp user <玩家> permission unset <权限> global <世界>
pex user <玩家> timed add <权限> <时间> <世界>lp user <玩家> permission settemp <权限> true <时间> global <世界>
pex user <玩家> timed remove <权限> <时间> <世界>lp user <玩家> permission settemp <权限> true <时间> global <世界>
pex user <玩家> set <选项> <值> <世界>lp user <玩家> meta set <选项> <值> global <世界>
pex user <玩家> group listlp user <玩家> parent info
pex user <玩家> group add <组> <世界>lp user <玩家> parent add <组> global <世界>
pex user <玩家> group add <组> <世界> <时间>lp user <玩家> parent addtemp <组> <时间> global <世界>
pex user <玩家> group set <组>lp user <玩家> parent set <组>
pex user <玩家> group remove <组> <世界>lp user <玩家> parent remove <组> global <世界>
pex groups listlp listgroups
pex group <组> listlp group <组> permission info
pex group <组> prefixlp group <组> meta info
pex group <组> prefix <前缀>lp group <组> meta addprefix <优先级> <前缀>
pex group <组> suffixlp group <组> meta info
pex group <组> suffix <后缀>lp group <组> meta addsuffix <优先级> <后缀>
pex group <组> createlp creategroup <组>
pex group <组> deletelp deletegroup <组>
pex group <组> parents listlp group <组> parent info
pex group <组> parents set <parents>lp group <组> parent add <parent>
pex group <组> add <权限> <世界>lp group <组> permission set <权限> true global <世界>
pex group <组> remove <权限> <世界>lp group <组> permission unset <权限> global <世界>
pex group <组> timed add <权限> <时间> <世界>lp group <组> permission settemp <权限> true <时间> global <世界>
pex group <组> timed remove <权限> <时间> <世界>lp group <组> permission settemp <权限> true <时间> global <世界>
pex group <组> set <选项> <值> <世界>lp group <组> meta set <选项> <值> global <世界>
pex group <组> user add <玩家>lp user <玩家> parent add <组>
pex group <组> user remove <玩家>lp user <玩家> parent remove <组>
pex promote <玩家> <梯>lp user <玩家> promote <梯>
pex demote <玩家> <梯>lp user <玩家> demote <梯>
% m' _3 h/ d; ?/ A% P* Z/ _6 |

作者: INKDRRAK    时间: 2017-8-6 15:56
Advanced Setup部分翻译
" w1 b* v/ V% L2 k$ j( ]# {5 u- n高级设置
3 F) w1 B6 B0 @/ n1 a& Z, K
简介:3 a& q: z, H7 W6 m9 w
LuckPerm总体来说虽然是相对简单的..4 V0 G: M* ~* I3 \( M
你可以利用插件的一些特点与内部规则来制定一个适合你服务器情况的高等权限系统!+ u4 s" B' d, m; @
分服务器权限&分世界权限:4 K& B$ _# p+ D  g, m
LuckPerm本来是针对群组服的情况来工作的' _' ?+ v9 B8 o5 a3 O
但是你可以自定义一些只在特定子服/特定世界才生效的权限
* C- G4 y$ j+ E* _$ O; ~6 i3 X5 `. ~% [9 k
配置中一些重要的选项说明:

3 k9 U( Z/ }( @3 E* V- w
  1. # 服务器名称,用于上面讲到的分服务器的特定权限,该项设置为global即为禁用! b( z" m/ g* m
  2. server: global
复制代码
该项为设置服务器的名称,如果要想设置特定服务器的权限,则需要通过修改server项来命名服务器
! K) A+ s! \. d3 m7 ~, v* Q8 t7 K7 z; N如果你愿意,同一个群组服是可以一起使用相同的服务器名的
' @1 j% V, h$ F& B! k0 I0 i$ H% w
  1. # 玩家在此服务器上是否应该应用他们的全局组/权限  r' U9 D2 N" i" k3 W
  2. include-global: true
复制代码
include-global选项也是非常重要的。
* L! b6 i  w% v! K; K3 oLuckPerm有两种体现方式,一是特定服务器的权限,二则是直接应用全局权限设置
4 h% ]- U( S: H1 q, }. M  G如果这个选项被设置为 false,只有指定在此服务器的权限才会被应用。$ l' H+ t. L% P9 p# k; B* j
如果上方的 "server" 选项设置为 global,请不要将其设置为 false。更多的有关服务器指定的权限可以在这里找到。
/ U3 W6 U# @% \: \" w. E* j& H) j通过编辑更改这两个选项,你可以灵活的为每个服务器的权限组/权限做出意想不到的配合效果" a  z; y+ d- Q6 T& t: ?0 r
示例
例子一:- [- D) t, f3 {" h1 g
  1. server: global8 w8 y: P  |8 C& S7 V" @
  2. include-global: true
复制代码
例子二:4 n- @+ ]: x$ y3 ]
  1. server: lobby; z& s) ^/ R" J1 [
  2. include-global: true
复制代码
例子三:
) c+ q' g6 F: l; B3 S8 F$ d8 m
  1. server: bungeecord/ ]0 E/ Y  L% \! m$ j# }
  2. include-global: false
复制代码
例子四" g# O0 f6 X& K2 \
  1. server: global
    ; V" E$ [1 ]6 ]- o2 C; u) b( D3 T' d
  2. include-global: false
复制代码
没有任何权限将会应用!; j) p5 D2 ~4 J; _
如果没有设置服务器名字(server项设置为global)且全局设置未开启(include-global项设置为flase). i% j! p- a: q& y$ n9 U) z9 r
将不会有任何权限可以应用到服务器上!
! v5 o: Y* h$ e7 f$ G$ @2 j+ p权限计算
7 k7 {: K- _2 M7 |: b3 k+ ?
权限是根据优先级进行计算的,如下所示
2 M. ]' w4 t( o' M. K1 L3 v8 K! Q例如:有一个玩家,我们姑且叫他海螺,他拥有一个全局的“fly.use”(允许飞行)权限
' j6 u9 O: X' W! y" f, B) l1 F$ T然后在“factions”这个服务器上,取消了“fly.use”权限,服务器的特定权限设置将会覆盖全局设置/ z* ~* u2 q' o3 v* ], D
即,这个海螺在“factions”服务器上是无法使用“fly.use”权限的,他就不能够上天了
# n4 _; w; d% d% {- S" p前提是海螺现在正在“factions”服务器上。
$ A3 b$ S' E: `1 K! n例如:上文我们说的玩家“海螺”,他现在任然有一个全局的“fly.use”权限
  U' a( P7 e7 O# f' }然后在“world_nether”(地狱)世界,取消了“fly.use”权限,世界的特定权限设置将会覆盖全局设置- X! b! }  T  _5 I
即,这个海螺在地狱就无法上天了(只要海螺在地狱世界): v  ^1 P- z8 n5 U0 r/ f
例如:如果玩家海螺本来关闭了一个权限“test.node”" J* z: A# i4 X, u) |
以此为基础,服务器给海螺设置新的临时权限“test.node”
: f; G4 G& V8 r$ t4 o+ t海螺的临时权限则会覆盖本身关闭的权限,即海螺会在特定时间(临时权限)获得“test.node”权限8 o3 \1 N6 `* L
例如:一个用户拥有权限“luckperms.*”并且设置为true,但是“luckperms.user.*”权限却设置为false4 ^& x; r" N* ~, d8 y) [1 `/ E( W
那么所有玩家的权限都将被设置为false!
; |6 @/ f/ k3 t" z1 t# n因为尽管“luckperm.*”有更加通用的通配符,但是他没有“luckperms.user.*”具体6 M+ L$ x+ b3 |9 ]
例如:一个玩家是默认权限组的成员,默认权限组有“some.thing.perm”权限% g/ O0 C' a7 u: O9 a7 N$ c
但是这个玩家又被以用户形式给予了权限“some.thing.perm”
4 W8 s) t. C1 e  I& b, {  A3 h继承而来的权限将会被玩家自己的权限给覆盖, a& Y+ z& n! ^" X2 D6 M- t
临时权限
* P  ~! y8 O( g2 [" T, g4 I# h& ~8 c" L

临时权限每间隔3s会检查一遍,检查临时权限的时限是否到期8 s' v7 _2 y7 Q6 R; y$ g
不论同步间隔设置的怎么样,这个检查都会照常工作,这意味着你可以安全的设置临时权限在几秒后过期: x  }5 Y! w% `" t, K# ]; G
他们将会在时限到期时被删除
& s! s& E; [9 l8 }5 S4 N速记权限
LuckPerms有他自己的速记权限系统,在这一点上,它非常类似PermissionsEx7 b: V  \6 Z* W3 K. K' K9 \, @
它允许你使用速记格式来设置权限+ u* f) o' V% z0 j
例子:
% x2 U+ L2 l' H; [* |$ c例子一. i- Z( e/ w1 L
使用LuckPerm的允许节点来作为例子,比如说,你想让一个用户组与用户权限设置/取消允许节点
1 S  v8 K0 \& H) x如果没有速记,你就必须键入下面四个节点% o* @+ }5 P2 V; B3 ^& K3 }
  1. luckperms.user.setpermission/ j, A2 N3 z, Z2 ^3 i
  2. luckperms.user.unsetpermission
    0 S. v6 Q" B1 P$ J$ e% q9 T, m
  3. luckperms.group.setpermission* |- c6 [' \; K  }
  4. luckperms.group.unsetpermission
复制代码
但是,你要是使用速记,你就可以应用以下节点/ D  \, l2 e7 m
luckperms.(user|group).(setpermission|unsetpermission)
$ F, I$ s2 B% ]$ b你可以使用括号来让一个节点成为一个速记的权限组,然后用“|”来分隔他们
- u" ?, a. {  A$ F! {% e* G3 R例子二4 _4 n! e. X( G4 K8 M
你可以使用“-”来创建字符范围,如果没有使用速记,则必须键入以下四个节点:
: `0 _- k  `! D
  1. coolkits.kit.a/ D' t- [! }! u- @# p
  2. coolkits.kit.b
    ( h7 O" `, H% p* \2 u
  3. coolkits.kit.c
    4 d; ]) Q# S; ~$ ^' ^8 k
  4. coolkits.kit.d
复制代码
然而,使用了速记方法,你只需应用下面的节点:9 g% E+ K3 t5 Z3 ]/ D* @
coolkits.kit.(a-d). U) t1 q8 W0 _( L- s
例子三7 |" o9 m, E2 r' `4 D* ]
你可以使用“-”来创建字符范围,如果没有使用速记,则必须键入以下四个节点:
) t* m9 Q0 z& i
  1. prisonmines.teleport.1
    ' x, \" @3 u1 F
  2. prisonmines.teleport.2
    ! s' t- M7 `( B
  3. prisonmines.teleport.3- y( Y- Y: ]- k
  4. prisonmines.teleport.4
复制代码
不过,你只要使用速记方法,这一切都会变得简单许多!你只需要应用下面的节点:% v% T: x, `1 o# D  k+ j& ]
prisonmines.teleport.(1-4)
& F; C6 g. p% Q& {0 X6 A' t4 m3 K正则表达式0 @: v  F1 E1 d" K* k3 V' J/ Z$ [

LuckPerms支持使用正则表达式来定义权限节点与服务器/世界的名字* ~. k+ M( e- f& }
当使用正则表达式的时候,必须添加前缀“R=”
/ e$ U' c% K% [) Q所以LuckPerm才会知道将它是作为正则表达式来输出,而不是作为普通的字符串来输出2 i! ]9 q6 z5 \, W) k9 b
例如:你希望玩家可以创建两个组与权限系(tracks),通常只需要添加两个权限节点; [& `0 O, z! @; q. M
然而使用正则表达式,你只需要添加一个权限节点  luckperms\.create.*
0 a- e5 x9 L8 _7 C( y8 P& @: l记住,转为任何字符,例如一个点,都将作为一个节点被系统解析
. B4 O! W2 n9 D9 W7 B: S- J& ?" \6 a7 ~+ R3 T  d1 n