- 欢迎来到Minecraft插件百科!
- 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
- 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289
PEX:修订间差异
跳转到导航
跳转到搜索
(→特性) |
(→安装) |
||
(未显示同一用户的117个中间版本) | |||
第1行: | 第1行: | ||
== <big>PEX</big> == | == <big>PEX</big> == | ||
'''声明''':本'''PEXWiKi'''是我('''JACV''')对EN版'''PermissionsEX'''WiKi的翻译&搬运。<br /> | '''声明''':本'''PEXWiKi'''是我('''[[用户:JACV|JACV]]''')对EN版'''PermissionsEX'''WiKi的翻译&搬运。<br /> | ||
'''原因''':个人认为MineCraft插件百科上的PermissionsEX百科搬运得非常糟糕,格式紊乱、翻译不全。在此提供方便阅读、翻译完全的PermissionsEX百科。<br /> | '''原因''':个人认为MineCraft插件百科上的PermissionsEX百科搬运得非常糟糕,格式紊乱、翻译不全。在此提供方便阅读、翻译完全的PermissionsEX百科。<br /> | ||
---- | ---- | ||
第7行: | 第7行: | ||
</big>''' | </big>''' | ||
首先,欢迎来到PermissionsEX百科!<br /> | 首先,欢迎来到PermissionsEX百科!<br /> | ||
这一份关于Permissions1.x/2. | 这一份关于Permissions1.x/2.x百科的建立过程非常艰辛!因为两个版本的PEX拥有着完全不同的文件和设置(具体查看https://github.com/PEXPlugins/PermissionsEx/tree/master/doc)<br /> | ||
PermissionEX是Bukkit目前最古老、高效的权限管理插件,从2011年PermissionEX2.x版本研发开始,PEX的开发者一直坚持不懈地对这款插件进行完善和升级。直至今日,它依然在MineCraft服务器中发挥着至关重要的作用!<br /> | PermissionEX是Bukkit目前最古老、高效的权限管理插件,从2011年PermissionEX2.x版本研发开始,PEX的开发者一直坚持不懈地对这款插件进行完善和升级。直至今日,它依然在MineCraft服务器中发挥着至关重要的作用!<br /> | ||
PEX之所以能成为大家的首选,原因就在于它拥有无比优越的插件功能。它不仅支持多种不同类型的服务端/数据库,同时,也能清晰明确地为MineCraft世界提供各类权限,甚至可以为每个世界设置单独的权限!(具体参考 Modifyworld )<br /> | PEX之所以能成为大家的首选,原因就在于它拥有无比优越的插件功能。它不仅支持多种不同类型的服务端/数据库,同时,也能清晰明确地为MineCraft世界提供各类权限,甚至可以为每个世界设置单独的权限!(具体参考 Modifyworld )<br /> | ||
这一份WiKi理论上已经能够协助你完全掌控PEX。如果你仍有任何问题,欢迎加入我们翻译团队IRC channel或者直接访问PermissionsEX论坛提问!<br /> | 这一份WiKi理论上已经能够协助你完全掌控PEX。如果你仍有任何问题,欢迎加入我们翻译团队IRC channel或者直接访问PermissionsEX论坛提问!<br /> | ||
---- | ---- | ||
=== '''<big>特性</big>''' === | === '''<big>特性</big>''' === | ||
PEX1.15版本及以后版本的特性: | PEX1.15版本及以后版本的特性: | ||
第37行: | 第38行: | ||
=== 基础 === | === 基础 === | ||
</big>''' | </big>''' | ||
PemissionsEX,是从各种前辈权限插件中寻找灵感、不断完善的最终产物!它使用你不陌生的通用设置风格。<br /> | |||
各类插件、PEX、Bukkit原生权限统统集中于一个文件之中。这个文档叫做permission nodes,里面包含了各种命令、特色权限,甚至是对事件的管理。 | |||
==== '''<big>内容</big>''' ==== | |||
*'''权限术语''' | |||
*'''权限配置格式''' | |||
*'''PEX文件格式(YAML)''' | |||
---- | |||
===== '''<big>PEX和服务器的权限术语</big>''' ===== | |||
PS:这里我全部采用官方术语(EN),方便后面的阅读翻译;当后面出现这些术语时我将直接写EN | |||
*Server Console (AKA Console)(控制台):即控制台,服务器启动时需要的命令面板,后台记录日志、输入执行命令的地方 | |||
*Global Permissions(总权限):应用于所有世界的权限设置 | |||
*World Specific Permissions(分世界权限):单独应用于一个世界的权限设置 | |||
*Users(用户): 权限应用者 | |||
*Group(组): 权限应用组,这里,权限应用组也可以设置为所有世界的通用组或单独世界的权限组,具体看需求 | |||
*Node(权限语句): 象征命令的语句,例如Bukkit端的bukkit.command.give即是象征/give 命令的语句 | |||
*Negation(否定): 标记一条Node,设定它在什么情况下生效/失效 | |||
*Inheritance(继承): 是一种让一个组去继承另一个组权限的功能。PEX支持组继承/世界继承 | |||
*Metadata(元数据): (即小ID)元数据为各种各样的物品提供ID定义,例如同一块木头拥有不同颜色,不同形状的同一件物品,区分门到底是开的还是关的。这个功能主要用于Modifyworld | |||
---- | |||
===== '''<big>权限配置格式</big>''' ===== | |||
PEX支持文件通用格式和SQL的格式编译,为了更好更生动地体现格式要点,下面举出一个文件通用格式的例子: | |||
[http://adf.ly/1dVftE 点击下载标准权限格式示例] | |||
<nowiki>users: <- 用户部分 | |||
t3hk0d3: <- 玩家名称 | |||
group: <- 玩家所隶属的组 | |||
- default <- 隶属组名称 | |||
permissions: <- 玩家特制权限部分 | |||
- permissions.* <- Node | |||
worlds: <- 玩家世界设置 | |||
world: <- 指代独立世界world | |||
permissions: <- 在这个world中拥有的权限 | |||
- test.* <- Node | |||
group: <- 在这个world中隶属的组 | |||
- testers <- 组名称 | |||
prefix: '&5[YARR]&f' <- 在这个world中的名称前缀 | |||
groups: <- 组部分 | |||
default: <- 表示默认组 | |||
default: true <- 是否应用默认设置 | |||
permissions: <- 添加组权限 | |||
- -modifyworld.blocks.interact.23 <- 否定这条Node | |||
- modifyworld.* <- Node | |||
admins: | |||
inheritance: <- 组继承设置 | |||
- default <- 继承的组名称 | |||
permissions: | |||
- example.permission | |||
- -punish.noobs | |||
options: <- 组设置(数据库方面) | |||
test.test: '100500' <- 额外数据 | |||
rank: '1' <- 排位等级 | |||
worlds: | |||
nether: | |||
permissions: | |||
- nocheat.fly | |||
prefix: '&7[ADMIN FROM HELL]' | |||
testers: | |||
inheritance: | |||
- admins | |||
options: | |||
test.test: '9000' | |||
worlds: <- 世界部分 | |||
nether: <- 世界名 | |||
inheritance: <- 继承设置 | |||
- world <- 继承于World | |||
}}</nowiki> | |||
---- | |||
===== '''<big>PEX文件格式(YAML)</big>''' ===== | |||
众所周知,PEX采用和其他插件同样的YAML文本格式进行设置。(YAML是一种编译格式,访问 http://yaml.org/ 了解更多)YAML可不是简单的TXT文档,它非常注重格式的准确!<br /> | |||
一旦出错,就算是PEX这么AI的插件都会无法运行(甚至蹦服),所以,请严格根据规定进行编译: | |||
*注意YAML的保留字,有 ' - : # %,如果你想使用这些保留字作为自定义数据,那么你就需要按以下方法定义: | |||
:<code>%prefix%player%suffix> &e%message</code> 这个代码是错误的 | |||
:<code>"%prefix%player%suffix> &e%message"</code> 这个代码才是正确的 | |||
*数字的应用必须使用’’(引用),例如 | |||
:<code>1000</code> 或 <code>45625</code>这种语法是错误的; | |||
:<code>'1000'</code> 或 <code>'45625'</code>这种语法才是正确的 | |||
*换行是不允许的,除非你使用在’’(引用)之中;而且这种换行的操作是按两下空格键(Space) | |||
*所有的组设置都必须从每行的第一个字开始,组下面的设置请严格按照排列格式(即要求注意空格/相互对齐) | |||
由于PEX自身限制,有一些符号也只能用于引用之中(或者你不用它)包括 } { ) ( ? * | |||
虽然这不是YAML的限制,但这些符号和YAML保留字有相同的效果 | |||
---- | |||
=== '''<big>Config</big>''' === | |||
==== '''<big>内容</big>''' ==== | |||
*'''安装''' | |||
*'''PEX配置文件''' | |||
*'''配置文件描述菜单''' | |||
*'''数据库(Backends)''' | |||
**'''文本数据库设置''' | |||
**'''SQL数据库设置''' | |||
***'''MySQL数据库设置''' | |||
***'''SQLite数据库设置''' | |||
---- | |||
===== '''<big>安装</big>''' ===== | |||
*所有新版本的PEX(从1.21开始)只支持MC1.7.9以上的Bukkit服务端 | |||
*MC1.7.9以下的Bukkit服务端请使用1.20.4版本以下的PEX | |||
<pre style="white-space: pre-wrap; | |||
white-space: -moz-pre-wrap; | |||
white-space: -pre-wrap; | |||
white-space: -o-pre-wrap; | |||
word-wrap: break-word;"> | |||
从 http://adf.ly/1dVg2x 下载PEX | |||
BukkitDev上的PEX目前已经基本稳定,当然如果发现MC版本升级、BUG出现或者进行测试的时候,PEX开发工作一定会紧锣密鼓地进行。 | |||
当你安装了PEX后,启动服务器,PEX会自动生成一个默认配置文件。除非你想链接SQL数据库或对PEX进行微调,否则不需要对这个文件进行任何设置。 | |||
如果你需要设置这个配置文件就请继续阅读,否则,直接跳到命令板块。 | |||
</pre> | |||
'''<big>PS:</big>请注意,如果你在使用PEX遇到任何问题,先确保你的服务端中没有其他权限插件!''' | |||
---- | |||
'''<big> | |||
===== PEX配置文件(Config) ===== | |||
</big>''' | |||
所有的PEX配置都在文件config.yml中,请按照示例配置: | |||
[http://adf.ly/1dVfSQ 点击下载示例config.yml] | |||
<nowiki>permissions: | |||
backends: <- 数据库定义方面 | |||
file: <- 数据库文件 | |||
file: permissions.yml <- 生成使用的文件(在这里就可以自定义名字了) | |||
backend: file <- PEX发挥作用时,所使用的数据库(file为通用文本数据库,即YMAL;或SQL数据库) | |||
createUserRecords: false <- 其它设置 | |||
allowOps: false | |||
debug: false | |||
user-add-groups-last: false | |||
basedir: plugins/PermissionsEx <- 数据库定位插件路径(只在通用文本数据库中生效) | |||
informplayers: | |||
changes: false <- 当玩家的权限改变时,是否通知他们 | |||
multiserver: | |||
use-netevents: true | |||
updater: true | |||
alwaysUpdate: false | |||
}}</nowiki> | |||
'''<big>PS:</big>你的config.yml文件几乎和上面的一样。当然,如果少掉一两行也是正常状况。你可以根据以下列表来改变默认的设置。''' | |||
---- | |||
===== '''<big>配置文件描述菜单</big>''' ===== | |||
除非有特别标注,否则设定值均为true/false | |||
请注意,如果你使用了不存在的权限,那么相似的权限就会被应用!请查看来了解更多 | |||
{| border="1" cellpadding="20" cellspacing="0" | |||
!Node | |||
|描述 | |||
|- | |||
|permissions.backends | |||
|包括了数据库中所有的权限(查看数据库(Backends)了解更多) | |||
|- | |||
|permissions.backend | |||
|默认权限,可以指代在总数据库中定义的子数据库(这个指令属于permissions.backends子指令 | |||
|- | |||
|permissions.allowOps | |||
|将给予玩家OP的所有权限 | |||
|- | |||
|permissions.debug | |||
|是否在PEX启动时进行调试;更多内容查看 | |||
|- | |||
|permissions.user-add-groups-last | |||
|如果这个功能设置为true,使用/pex user <user> group add <group>时就会将用户权限应用于组;<br /> | |||
设置为false,就会将组权限应用于用户(优先级问题) | |||
|- | |||
|permissions.basedir | |||
|配置文件的基本目录,除非你知道你在干嘛,否则不要动它 | |||
|- | |||
|multiserver.use-netevents | |||
|开启/不开启PEX多服务器统一化(只有在跨服插件(NetEvents)启用时才有效 | |||
|- | |||
|updater | |||
|是否自动更新,默认为是 | |||
|} | |||
---- | |||
===== '''<big>数据库(Backends)</big>''' ===== | |||
PEX支持两种数据库:通用文本数据库和SQL。默认使用通用文本数据库 | |||
切换数据库并不需要重启服务器,只需要使用pex backend命令即可切换。当然你也可以在config文件中手动切换 | |||
前往命令板块了解更多信息! | |||
====== '''<big>文本数据库设置</big>''' ====== | |||
所有的命令都集中在你在'''config自定义的那个文件'''里面 | |||
====== '''<big>SQL数据库设置</big>''' ====== | |||
'''警告:由于SQL数据库是会不断更新的,所以特别标注这个百科的撰写时间:1/2/2013'''<br /> | |||
::'''在该时间段前设定的允许默认命令字符长度为200个,如果你设置了超过200个字符的node,那么可能数据库会拒绝,也可能服务器会崩溃;'''<br /> | |||
::'''如果你想突破这个限制,你需要:'''<br /> | |||
*前往编译SQL数据库,改变它的限制规则(注意这是必须的!而非建议) | |||
*把node分割成几小块,每一小块都不得超过200字符串(你不会就别分) | |||
在此,感谢Bukkit用户[https://bukkit.org/members/s32ialx.90585775/ s32ialx]提出了SQL的限制问题!<br /> | |||
SQL数据库的所有命令Node均包含在permissions.backend.sql这条Node里面 | |||
{| border="1" cellpadding="20" cellspacing="0" | |||
!Node | |||
|描述 | |||
|- | |||
|uri | |||
|数据库连接数据流,亦指AKA(认证和密钥协议)和DSN(数据源);<br /> | |||
请注意,DSN配置有特定的规范,例如MySQL的uri为<code>mysql://<hostname>/<database></code> | |||
|- | |||
|user | |||
|连接数据库的用户名,如果不需要也可以不设置 | |||
|- | |||
|password | |||
|连接数据库的密码,如果不需要也可以不设置 | |||
|} | |||
====== '''<big>MySQL数据库设置</big>''' ====== | |||
下面列出SQL数据库设置中的MySQL数据库设置: | |||
{{Hide|标题=MySQL数据库设置 |内容= | |||
permissions: | |||
backend: sql | |||
backends: | |||
sql: | |||
uri: mysql://localhost/databasename | |||
user: username | |||
password: password | |||
}} | |||
修改以上的主机名称(Hostname)、数据库名称、用户名称以及用户密码都必须与你之前的设置(Config)相一致。在很多情况下,主机名称(Hostname)一般是你的本地主机名称(Localhost)。 | |||
同时,在大多数情况下,数据库系统和服务器系统是放在一起的。在此建议,设置前务必检查你的主机地址或者是network/system地址。 | |||
'''PS:如果你完全不知道你在做什么,请你什么都别动!'''<br /> | |||
如果你需要添加新的数据库,可以像下面这样: | |||
{{Hide|标题=添加数据库 |内容= | |||
permissions: | |||
backends: | |||
sql: | |||
uri: mysql://192.168.5.4/demo | |||
password: password | |||
user: demo | |||
aliases: | |||
permissions: pex_permissions | |||
permissions_inheritance: pex_inheritance | |||
permissions_entity: pex_entity | |||
}} | |||
====== '''<big>SQLite数据库设置</big>''' ====== | |||
SQLite数据库设置和MySQL数据库大同小异 | |||
在设置SQLite数据库的时候,你需要将<code>permissions.backends.sql.driver</code>这条Note设置为<code>sqlite</code> | |||
以及,将<code>permissions.backends.sql.uri</code>设置为如同<code>sqlite:databasename</code> | |||
{{Hide|标题=SQLite数据库设置 |内容= | |||
permissions: | |||
basedir: plugins/PermissionsEx | |||
backend: sql | |||
backends: | |||
sql: | |||
uri: sqlite:plugins/PermissionsEx/permissions.db | |||
user: username | |||
password: password | |||
}} | |||
当你设置完成并重启服务器后,在PEX的文件夹中会生成一个名为'''permissions.db'''的文件。 | |||
'''PS:请不要删除它!它即是数据库!''' | |||
---- | |||
=== '''<big>迁移和UUID</big>''' === | |||
==== '''<big>内容</big>''' ==== | |||
*'''数据库之间的迁移''' | |||
*'''UUID支持''' | |||
---- | |||
===== '''<big>数据库之间的迁移</big>''' ===== | |||
从一个数据库中将数据迁移至另一个数据库,所有版本的PEX操作几乎都和1.21版本的一致,遵循以下步骤: | |||
::1.首先确认,两个数据库皆为配置文件中(Config)允许使用的数据库; | |||
::2.将两个数据库的配置设置于配置文件中(Config); | |||
::3.重启服务器,输入命令/pex import <oldbackend>,即会将旧数据库中的内容迁移至新数据库,同时,重置旧数据库中的所有内容(所有之前设置的组合用户都会被重置)。 | |||
---- | |||
===== '''<big>UUID支持</big>''' ===== | |||
PEX支持UUID,如果用户受到PEX权限限制,PEX就会将用户的注册信息迁移至UUID。而用户的档案就会保存在name(这个name是用户最新的名字,如果Ta更改过用户名的话) | |||
那么,在需要回档的时候PEX就能够轻松地回档(虽然这个过程几乎不会出错,但是还是建议你往下看) | |||
但是,如果你的服务器没有开启正版认证,PEX就会有概率丢失一些权限设置!<br /> | |||
当你的服务器处于离线模式(未开启正版认证),UUID就只能依靠name文档运行了(它就无法联网寻找支持)。这就意味着, | |||
如果用户更改了Ta的用户名,不管这个用户是不是正版用户,他的UUID也会被改变 | |||
但是,有一些代理服务器,却会绕过这种改变 | |||
====== '''<big>弹力绳(BungeeCord)</big>''' ====== | |||
如果你使用的是弹力绳代理服务器,运行Spigot端时必须在服务端配置文件中将弹力绳(BungeeCord)选项设置为true,才能保证UUID稳定运行! | |||
====== '''<big>百合派(LilyPad)</big>''' ====== | |||
如果你使用百合派代理服务器,只有百合派-Bukkit联网服务端才能保证UUID的正常运行 | |||
---- | |||
=== '''<big>基本权限设置</big>''' === | |||
就和之前提到过的一样,PEX支持在聊天窗/控制台输入命令,在游戏中/外实现任何权限! | |||
'''下面的介绍能够帮助你有效地利用聊天窗/控制台设置符合PEX,这些指令均可以在游戏内/外执行。''' | |||
'''如果你要在游戏中使用命令,必须加上/;如果你在控制台上使用,则不用加/''' | |||
==== '''<big>内容</big>''' ==== | |||
*'''命令Node''' | |||
**'''“*”命令要点''' | |||
**'''修改文件要点''' | |||
*'''辅导目标''' | |||
*'''准备''' | |||
**'''进行基本、简单的命令构造''' | |||
***'''如果你无法使用控制台''' | |||
**'''添加自定义组''' | |||
**'''设置权限等级''' | |||
**'''设置有趣的前缀!''' | |||
**'''给每一个组添加权限''' | |||
*'''测试你的总体设置''' | |||
*'''测试你的等级设置''' | |||
*'''文件修改示例''' | |||
---- | |||
===== '''<big>命令Node</big>''' ===== | |||
PEX和其他的权限插件一样,都是采用通用的权限设置格式。但是,PEX的权限默认是全部关闭的,你需要手动将权限Node放置在列表中,这个命令才会允许被使用。 | |||
你可以通过PEX为默认组设置各种权限,也可以为其关闭某些权限。<br /> | |||
如果你要在游戏中开通某些权限,使用这条命令:<code>pex group <group> add <node></code> | |||
而如果你想禁用某些权限,只需要在<node>前加上 <code>-</code> | |||
例如,在Bukkit端口中,设置有关/give和/plugins的命令权限: | |||
*首先,/give这条命令对应的Node为<code>bukkit.command.give</code>。这条命令通常是默认只有OP才能使用的; | |||
*/plugins对应的Node为<code>bukkit.command.plugins</code>,这条命令通常是所有玩家均可以使用的。 | |||
那么,你需要添加或禁止这两条命令,你就需要这样做: | |||
*让玩家能够使用/give,输入并执行<code>pex group groupname add bukkit.command.give</code>即可; | |||
*禁止玩家使用/plugins,输入并执行<code>pex group groupname add -bukkit.command.plugins</code>即可 | |||
====== '''<big>“*”命令要点</big>''' ====== | |||
*首先,你的确只需要输入“*”这个Node,就可以给予一个玩家/组使用服务器所有命令的权限;但是,在你使用它之前,还是建议你阅读下面的说明; | |||
**给予一个组/玩家“*”这个Node就能享用所有的权限,这听起来似乎非常简单;但是,这样做同时也会增加你的烦恼,因为有些命令你并不希望玩家使用;<br /> | |||
::例如,我们拿VanishNoPacket这个插件做例子(后面写作VNP),VNP有一条Node<code>vanish.silentjoin</code>,这条Node可以让玩家在加入服务器时不会在后台<br /> | |||
::留下任何痕迹;如果你使用了“*”,那么看起来你再也追踪不到熊孩子的行踪了!不过,别担心,你只需要在这条Node前加入<code>-</code>,就可以完全封印<br /> | |||
::这条权限了!是不是很简单? | |||
====== '''<big>修改文件要点</big>''' ====== | |||
如果你准备手动修改权限文件,请注意: | |||
*所有的权限,开头都是<code>-</code>加一个空格!例如: | |||
:<code>- modifyworld.chat</code>和<code>- -modifyworld.mobtarget.*</code>,这些语句就是正确的; | |||
:<code>modifyworld.chat</code>和<code>-modifyworld.mobtarget.*</code>,这些语句就是错误的! | |||
*编译规则遵循,如果不严格遵循YAML格式,那么很可能导致PEX插件失效,或者服务器崩服! | |||
*PEX阅读权限文件时,遵循'''从上到下'''的形式! | |||
:PEX的阅读就和防火墙一样。同一个系列的Node,如果它在阅读第一句话时已经找到对应数据,那么它就会自动跳过下一句相似的叙述!例如: | |||
<nowiki>default: | |||
options: | |||
default: true | |||
permissions: | |||
- modifyworld.* | |||
- -modifyworld.blocks.interact.23</nowiki> | |||
:那么,当玩家试图使用酿药台时(酿药台的ID为23),由于PEX已经阅读到了<code>modifyworld.*</code>并找到相关数据,它就不会执行<code>-modifyworld.blocks.interact.23</code> | |||
:因此,后面这条禁止Node形如虚设。<br /> | |||
:然而,如果你想要禁止Node生效也非常简单,只需要把这两条语句调换一下位置即可;那么,当玩家使用酿药台时,PEX先检阅到<code>-modifyworld.blocks.interact.23</code>,于是这个行为就被禁止了; | |||
:如果玩家想使用炉子(ID为61),PEX检阅完<code>-modifyworld.blocks.interact.23</code>后没有找到ID为61的相关数据;它就继续检阅<code>modifyworld.*</code>,找到数据并执行 | |||
:'''主要规则就是,如果你要执行一个小范围的语句,就必须将其放在一个大范围的语句上面!''' | |||
---- | |||
===== '''<big>辅导目标</big>''' ===== | |||
这其实是一个向导 | |||
*建立一个基本、简单的权限结构 | |||
**添加这些组:Member, VIP, Mod, Admin | |||
***默认组(Dafult)虽然允许聊天,但不能够改变任何东西,也不会有前缀; | |||
***成员组(Member)才是真正的玩家组,他们能够改变世界构造,并使用彩色前缀("&0(&8M&7ember&0)&7 "); | |||
***VIP组相当高贵,他们享有比成员组更多的特权,但还是会受到怪物的攻击,他们的前缀为&0(&eVIP&0)&7; | |||
***怪物猎人组(Mod)则不会受到怪物的伤害; | |||
***管理员组(Admin)享有服务器最高权限,享有一个非常Prefect的前缀&0(&4Admin&0)&7 | |||
**(可选择)将<code>modifyworld.*</code>从默认组中移除; | |||
**(可选择)为默认组添加<code>modifyworld.chat</code>; | |||
*测试你的设置 | |||
---- | |||
===== '''<big>准备</big>''' ===== | |||
*安装并设置PEX(具体查看) | |||
*(可选)激活“修改世界”(ModifyWorld),查看“修改世界”和“配置”了解更多; | |||
*开启你的服务器 | |||
*在新窗口打开显示相关权限列表的文件; | |||
*在新窗口中打开配置设置教程 | |||
====== '''<big>进行基本、简单的命令构造</big>''' ====== | |||
'''这些命令,必须在控制台中使用。''' | |||
*创建管理员组(Admin),使用这条命令<code>pex group Admin create</code> | |||
*向这个组添加Node<code>permissions.*<\code>,使用这条命令<code>pex group Admin add permissions.*</code> | |||
*把你自己加入到这个组中,使用这条命令<code>pex user YourPlayerName group set Admin</code>,其中,YourPlayerName替换为你游戏中的用户名 | |||
*(可选)给你自己使用PEX所有命令的权限,而非直接赋予这个组使用PEX所有命令的权限。使用这条命令: | |||
:<code>pex user YourPlayerName add permissions.*></code><br /> | |||
然而,有的时候你无法使用控制台,你需要: | |||
创建一个文件名叫:<code>permissions.yml</code>,这个文件请直接上传到属于PEX的专用文件夹内,'''上传前请保证格式准确!'''(具体查看),下面是设置信息:<br /> | |||
<nowiki>groups: | |||
Default: | |||
options: | |||
default: true | |||
permissions: | |||
- modifyworld.* | |||
Admin: | |||
options: | |||
prefix: '&0(&4Admin&0)&7 ' | |||
permissions: | |||
- permissions.* | |||
users: | |||
YourPlayerName: | |||
group: | |||
- Admin | |||
permissions: | |||
- permissions.*</nowiki> | |||
这样,你同样可以创建出Admin组,下面教大家怎么加入Member, VIP 和 Mod组 | |||
====== '''<big>添加自定义组:成员组、VIP组和怪物猎人组</big>''' ====== | |||
*和上面几乎一样,添加一个成员组(Member),使用这条命令:<code>/pex group Member create</code> | |||
*添加VIP组,使用这条命令:<code>/pex group VIP create</code> | |||
*添加怪物猎人组(Mod)<code>/pex group Mod create</code> | |||
然后,我们来给这些组的等级排序,顺序为 Member -> VIP -> Mod -> Admin,查看排序(升级/降级)了解更多 | |||
====== '''<big>设置权限等级</big>''' ====== | |||
执行下面命令: | |||
*<code>/pex group default set rank 1000</code> | |||
*<code>/pex group Member set rank 900</code> | |||
*<code>/pex group VIP set rank 800</code> | |||
*<code>/pex group Mod set rank 100</code> | |||
*<code>/pex group Admin set rank 1</code> | |||
其中,100是默认最高权限等级。 | |||
考虑到升级/降级命令无法在游戏中使用(但可以在控制台中使用),因此,在游戏中你不能: | |||
*你不能将一个比你低级别的玩家升级到和你同级别的组(例如Mod组就不能升级到Admin组) | |||
*你也不能将一个比你高级别的玩家降低到和你同级别的组(例如Admin组不能降低到Mod组) | |||
*也不能把你同级别的组成员升级/降级(如果你是Mod组,你就不能将一个同样属于Mod组的玩家升级/降级;即使是Admin组也是一样) | |||
如果你是Admin,你想在游戏里提升某个玩家到Admin组,你只能直接使用设置组的指令:<code>/pex user PlayerName group set Admin</code>,而不能使用升级/降级指令 | |||
升级/降级的指令只能够在控制台中使用。 | |||
====== '''<big>给每一个组添加权限</big>''' ====== | |||
'''PS:'''如果你没有关闭“修改世界”(ModifyWorld)的功能,你可以跳过设置<code>modifyworld.*</code>这条Node | |||
*(可选)<code>/pex group default remove modifyworld.*</code> | |||
*(可选)<code>/pex group default add modifyworld.chat</code>(只有在“修改世界”关闭时才需使用) | |||
*<code>/pex group Member add modifyworld.*</code> | |||
*<code>/pex group VIP add modifyworld.*</code> | |||
*<code>/pex group VIP add -modifyworld.mobtarget.monster.creeper</code> | |||
*<code>/pex group Mod add modifyworld.*</code> | |||
*<code>/pex group Mod add -modifyworld.mobtarget.*</code> | |||
*<code>/pex group Admin add permissions.*</code> | |||
*<code>/pex group Admin add modifyworld.*</code> | |||
*<code>/pex group Admin add -modifyworld.mobtarget.*</code> | |||
如果你已经顺利完成了上面的步骤,那么现在是时候进行设置了! | |||
---- | |||
===== '''<big>测试你的总体设置</big>''' ===== | |||
在任何一个版本中,修改自己属于的组的指令都为:<code>/pex user YourPlayerName group set GroupName</code> | |||
'''默认组Dafult''' | |||
*确认你可以聊天、说话; | |||
*确认你名字前没有前缀或显示默认前缀; | |||
*确认你可以在离开出生点保护的地区进行方块的改造 | |||
**注意:如果“修改世界”(ModifyWorld)功能关闭,并且你没有加入<code>modifyworld.*</code>这条Node,那么你应该不能进行改造! | |||
*如果“修改世界”(ModifyWorld)功能关闭,并且你没有加入<code>modifyworld.*</code>这条Node,那么请马上热情满满地扑向一只Creeper! | |||
:(别害怕,它根本炸不到你) | |||
'''成员组Member''' | |||
*确认你可以聊天; | |||
*确认你名字前有正确的前缀; | |||
*确认你可以修改世界(离开出生点保护区后) | |||
'''VIP''' | |||
*确认你可以聊天 | |||
*确认你名字前有正确的前缀 | |||
*确认你可以修改世界(离开出生点保护区后) | |||
*如果“修改世界”(ModifyWorld)功能关闭,并且你没有加入<code>modifyworld.*</code>这条Node,那么请马上热情满满地扑向一只Creeper! | |||
:(别害怕,它根本炸不到你) | |||
'''管理员组Admin''' | |||
*确认你可以聊天; | |||
*确认你名字前有正确的前缀; | |||
*确认你可以修改世界(如果你已经把你的名字列进OP列表,并且在PEX配置文件中将allowOPs设置为true,你甚至可以打碎出生点的方块) | |||
*确认你无法收到任何生物的攻击伤害! | |||
下面,你将创造一个虚拟的用户。实际上,我更建议你怂恿你的Friends参与到你的实验当中(这当然是为了科学!) | |||
---- | |||
===== '''<big>测试你的等级设置</big>''' ===== | |||
*<code>/pex user AnotherPlayer group set default</code> | |||
*各种升级/降级的指令与这一条<code>/pex promote AnotherPlayer</code>指令差不多,当使用之后你会看到提示:“'''User AnotherPlayer promoted to NextGroup'''” | |||
*疯狂使用这条指令,直到你看到“'''Promotion error: User is not promotable'''”(指令错误,等级已经达到最高级), | |||
:再执行:<code>/pex user AnotherPlayer</code>,之后你将会看到: | |||
<nowiki>playername are member of: | |||
Mod (rank 100 @ default) | |||
playername's permissions: | |||
-modifyworld.mobtarget.* (from Mod) | |||
modifyworld.* (from Mod) | |||
playername's options:</nowiki> | |||
*降级和升级差不多,只需要把<code>promote</code>切换成<code>demote</code>即可; | |||
*如果这个用户是虚拟的,你可以随心所欲地使用:<code>/pex user AnotherPlayer delete</code>将他们从组中移除; | |||
*如果这个用户是真实的,那你就务必要设计和监督好你的组机制了(查看世界列表) | |||
---- | |||
===== '''<big>文件修改示例</big>''' ===== | |||
作为参考,如果你硬是要按照下面的示例设置进行配置,那么产生的效果也是如同示例的。如果你想自己定义,请注意组名的编写规范和大小写! | |||
<nowiki>groups: | |||
default: | |||
options: | |||
rank: '1000' | |||
default: true | |||
permissions: | |||
- modifyworld.chat | |||
Member: | |||
permissions: | |||
- modifyworld.* | |||
options: | |||
rank: '900' | |||
prefix: '&0(&8M&7ember&0)&7 ' | |||
VIP: | |||
permissions: | |||
- -modifyworld.mobtarget.monster.creeper | |||
- modifyworld.* | |||
options: | |||
rank: '800' | |||
prefix: '&0(&eVIP&0)&7 ' | |||
Mod: | |||
permissions: | |||
- -modifyworld.mobtarget.* | |||
- modifyworld.* | |||
options: | |||
rank: '100' | |||
prefix: '&0(&1Mod&0)&7 ' | |||
Admin: | |||
permissions: | |||
- -modifyworld.mobtarget.* | |||
- modifyworld.* | |||
- permissions.* | |||
options: | |||
rank: '1' | |||
prefix: '&0(&4Admin&0)&7 ' | |||
users: | |||
AnotherPlayer: | |||
group: | |||
- default | |||
YourPlayerName: | |||
group: | |||
- Admin</nowiki> | |||
下面这一个文件是刷新之后的PEX剖析文件。请注意观察YAML格式,任何格式上的出错,都会导致非常严重的后果! | |||
<nowiki>{ | |||
"users": { | |||
"AnotherPlayer": { | |||
"group": [ | |||
"default" | |||
] | |||
}, | |||
"YourPlayerName": { | |||
"group": [ | |||
"Admin" | |||
] | |||
} | |||
}, | |||
"groups": { | |||
"default": { | |||
"options": { | |||
"default": true, | |||
"rank": "1000" | |||
}, | |||
"permissions": [ | |||
"modifyworld.chat" | |||
] | |||
}, | |||
"Member": { | |||
"options": { | |||
"prefix": "&0(&8M&7ember&0)&7 ", | |||
"rank": "900" | |||
}, | |||
"permissions": [ | |||
"modifyworld.*" | |||
] | |||
}, | |||
"VIP": { | |||
"options": { | |||
"prefix": "&0(&eVIP&0)&7 ", | |||
"rank": "800" | |||
}, | |||
"permissions": [ | |||
"-modifyworld.mobtarget.monster.creeper", | |||
"modifyworld.*" | |||
] | |||
}, | |||
"Mod": { | |||
"options": { | |||
"prefix": "&0(&1Mod&0)&7 ", | |||
"rank": "100" | |||
}, | |||
"permissions": [ | |||
"-modifyworld.mobtarget.*", | |||
"modifyworld.*" | |||
] | |||
}, | |||
"Admin": { | |||
"options": { | |||
"prefix": "&0(&4Admin&0)&7 ", | |||
"rank": "1" | |||
}, | |||
"permissions": [ | |||
"-modifyworld.mobtarget.*", | |||
"modifyworld.*", | |||
"permissions.*" | |||
] | |||
} | |||
} | |||
}</nowiki> | |||
---- | |||
=== '''<big>进阶权限设置</big>''' === | |||
在这一个板块中,我们会介绍更多的PEX进阶设置,包括:继承、正则表达(regex)、多世界权限 | |||
==== '''<big>内容</big>''' ==== | |||
*'''权限继承''' | |||
**'''权限继承规则''' | |||
**'''使用目前组进行继承''' | |||
**'''继承树''' | |||
*'''正则表达(regex)''' | |||
*'''多世界权限''' | |||
**'''多世界继承''' | |||
--- | |||
===== '''<big>权限继承</big>''' ===== | |||
在很多服务器里,管理员都设置了很多等级不同的组,继承功能能够让你最大化简化Node输入,让文件编译一目了然,不易出错。 | |||
学习这个板块的前提是你必须先通晓”基础权限设置”。如果你还不能对其学到精通,那么下面的步骤我就不能保证你全部看懂了。<br /> | |||
再次提出“基础权限设置"中的例子,你会发现,Member, VIP 和 Moderator这几个组中都使用了同一条Node<code>modifyworld.* </code>。 | |||
其实如果你学会了继承,这种累赘的设置毫无必要。 | |||
====== '''<big>权限继承规则</big>''' ====== | |||
PEX的继承规则如下: | |||
*有关玩家的特别设定(例如前缀、后缀、为玩家量身定做的Node等),这些设定处理时是优于组的(意思就是组设定不会覆盖玩家的设定) | |||
*一个组中的成员,必然会应用这个组的继承设定; | |||
*Node的执行遵循继承树(查看继承树了解更多) | |||
*一个组A如果继承了另一个组B,A就会继承B的一切!(如果B也继承其他组,A也会拥有这些组的设定)。 | |||
:所以,你千万不要让A继承了B之后,又设定B继承A...PEX会从此进入冥思苦想绞尽脑汁的困境之中!(死机) |
2016年8月28日 (日) 11:43的最新版本
PEX
声明:本PEXWiKi是我(JACV)对EN版PermissionsEXWiKi的翻译&搬运。
原因:个人认为MineCraft插件百科上的PermissionsEX百科搬运得非常糟糕,格式紊乱、翻译不全。在此提供方便阅读、翻译完全的PermissionsEX百科。
介绍
首先,欢迎来到PermissionsEX百科!
这一份关于Permissions1.x/2.x百科的建立过程非常艰辛!因为两个版本的PEX拥有着完全不同的文件和设置(具体查看https://github.com/PEXPlugins/PermissionsEx/tree/master/doc)
PermissionEX是Bukkit目前最古老、高效的权限管理插件,从2011年PermissionEX2.x版本研发开始,PEX的开发者一直坚持不懈地对这款插件进行完善和升级。直至今日,它依然在MineCraft服务器中发挥着至关重要的作用!
PEX之所以能成为大家的首选,原因就在于它拥有无比优越的插件功能。它不仅支持多种不同类型的服务端/数据库,同时,也能清晰明确地为MineCraft世界提供各类权限,甚至可以为每个世界设置单独的权限!(具体参考 Modifyworld )
这一份WiKi理论上已经能够协助你完全掌控PEX。如果你仍有任何问题,欢迎加入我们翻译团队IRC channel或者直接访问PermissionsEX论坛提问!
特性
PEX1.15版本及以后版本的特性:
- 原生超级权限,无需任何前置!
- 支持多种数据库,例如:YAML、SQL(MySQL, SQLite),甚至可能支持你自己制作的!
- 如果使用YAML数据库,那么所有的玩家权限、组权限都会统一于一个文件当中:permission.yml。这个文件的名字还可以自定义!(具体查看)
- 如果使用SQL数据库,那么更加有趣了!现在MySQL和SQLite数据库均支持PEX。但是其它的DB数据库服务端也可以支持。PEX拥有自动化适应、生成DB菜单和配置文件的功能。
- 也就是说,只要你能够保证PEX能与数据库进行连线,那么其他完全不在话下。
- 灵活多样的设置方式:你完全可以按照自己的喜好设置权限(具体查看)
- 和Yeti's Permissions v2.7.4版本完全兼容,同时,PEX还兼容市面上2/3的权限插件。当你同时安装多个权限插件时,PEX会将自己与它们区分开来(具体查看)
- 拥有多样化的聊天窗/控制台命令。使用PEX,你几乎可以在游戏或者后台做出任何事情!
- 拥有一种名字叫做“ModifyWorld”的防御机制。这个机制就像是完全独立的插件一样,能够完全操作玩家的行为、模式和效果。例如破坏/建造方块,骑马/乘船、受不受怪物的攻击等等,功能根本无法一言带尽!
- 你甚至完全可以把它当做Residence或者WorldGuard使用(具体查看)
- 拥有非常方便的组继承功能!玩家可以继承于(例如)系统默认组,拥有其中所有权限;同时,还可以设置前缀/后缀(具体查看)
- 支持大权限输入!所谓大权限,即集中一系列小权限的命令,你可以直接将大权限放入玩家设置中,以节省空间,方便管理!(具体查看)
- 多世界权限管理。你可以设置统一权限管理(Global),亦可以设置单独世界的权限管理。(具体查看)
- 升级为PEX2.x版本时,原有的设置可以直接应用!(如果你使用PEX3.0而想换回PEX2.0,你需要将配置文件先整理成PEX2.0的格式!)
- PEX2.0甚至内嵌YAML/SQL数据库
- 权限高度兼容。你可以访问来查看介绍
- 表现优异!即使你的服务器拥有100+的玩家,PEX也保证不会出现任何一点差错!
- 升级/降级系统。你可以设置出好玩的RPG服务器了!
- 更多特性,敬请期待……
基础
PemissionsEX,是从各种前辈权限插件中寻找灵感、不断完善的最终产物!它使用你不陌生的通用设置风格。
各类插件、PEX、Bukkit原生权限统统集中于一个文件之中。这个文档叫做permission nodes,里面包含了各种命令、特色权限,甚至是对事件的管理。
内容
- 权限术语
- 权限配置格式
- PEX文件格式(YAML)
PEX和服务器的权限术语
PS:这里我全部采用官方术语(EN),方便后面的阅读翻译;当后面出现这些术语时我将直接写EN
- Server Console (AKA Console)(控制台):即控制台,服务器启动时需要的命令面板,后台记录日志、输入执行命令的地方
- Global Permissions(总权限):应用于所有世界的权限设置
- World Specific Permissions(分世界权限):单独应用于一个世界的权限设置
- Users(用户): 权限应用者
- Group(组): 权限应用组,这里,权限应用组也可以设置为所有世界的通用组或单独世界的权限组,具体看需求
- Node(权限语句): 象征命令的语句,例如Bukkit端的bukkit.command.give即是象征/give 命令的语句
- Negation(否定): 标记一条Node,设定它在什么情况下生效/失效
- Inheritance(继承): 是一种让一个组去继承另一个组权限的功能。PEX支持组继承/世界继承
- Metadata(元数据): (即小ID)元数据为各种各样的物品提供ID定义,例如同一块木头拥有不同颜色,不同形状的同一件物品,区分门到底是开的还是关的。这个功能主要用于Modifyworld
权限配置格式
PEX支持文件通用格式和SQL的格式编译,为了更好更生动地体现格式要点,下面举出一个文件通用格式的例子:
users: <- 用户部分 t3hk0d3: <- 玩家名称 group: <- 玩家所隶属的组 - default <- 隶属组名称 permissions: <- 玩家特制权限部分 - permissions.* <- Node worlds: <- 玩家世界设置 world: <- 指代独立世界world permissions: <- 在这个world中拥有的权限 - test.* <- Node group: <- 在这个world中隶属的组 - testers <- 组名称 prefix: '&5[YARR]&f' <- 在这个world中的名称前缀 groups: <- 组部分 default: <- 表示默认组 default: true <- 是否应用默认设置 permissions: <- 添加组权限 - -modifyworld.blocks.interact.23 <- 否定这条Node - modifyworld.* <- Node admins: inheritance: <- 组继承设置 - default <- 继承的组名称 permissions: - example.permission - -punish.noobs options: <- 组设置(数据库方面) test.test: '100500' <- 额外数据 rank: '1' <- 排位等级 worlds: nether: permissions: - nocheat.fly prefix: '&7[ADMIN FROM HELL]' testers: inheritance: - admins options: test.test: '9000' worlds: <- 世界部分 nether: <- 世界名 inheritance: <- 继承设置 - world <- 继承于World }}
PEX文件格式(YAML)
众所周知,PEX采用和其他插件同样的YAML文本格式进行设置。(YAML是一种编译格式,访问 http://yaml.org/ 了解更多)YAML可不是简单的TXT文档,它非常注重格式的准确!
一旦出错,就算是PEX这么AI的插件都会无法运行(甚至蹦服),所以,请严格根据规定进行编译:
- 注意YAML的保留字,有 ' - : # %,如果你想使用这些保留字作为自定义数据,那么你就需要按以下方法定义:
%prefix%player%suffix> &e%message
这个代码是错误的"%prefix%player%suffix> &e%message"
这个代码才是正确的
- 数字的应用必须使用’’(引用),例如
1000
或45625
这种语法是错误的;'1000'
或'45625'
这种语法才是正确的
- 换行是不允许的,除非你使用在’’(引用)之中;而且这种换行的操作是按两下空格键(Space)
- 所有的组设置都必须从每行的第一个字开始,组下面的设置请严格按照排列格式(即要求注意空格/相互对齐)
由于PEX自身限制,有一些符号也只能用于引用之中(或者你不用它)包括 } { ) ( ? * 虽然这不是YAML的限制,但这些符号和YAML保留字有相同的效果
Config
内容
- 安装
- PEX配置文件
- 配置文件描述菜单
- 数据库(Backends)
- 文本数据库设置
- SQL数据库设置
- MySQL数据库设置
- SQLite数据库设置
安装
- 所有新版本的PEX(从1.21开始)只支持MC1.7.9以上的Bukkit服务端
- MC1.7.9以下的Bukkit服务端请使用1.20.4版本以下的PEX
从 http://adf.ly/1dVg2x 下载PEX BukkitDev上的PEX目前已经基本稳定,当然如果发现MC版本升级、BUG出现或者进行测试的时候,PEX开发工作一定会紧锣密鼓地进行。 当你安装了PEX后,启动服务器,PEX会自动生成一个默认配置文件。除非你想链接SQL数据库或对PEX进行微调,否则不需要对这个文件进行任何设置。 如果你需要设置这个配置文件就请继续阅读,否则,直接跳到命令板块。
PS:请注意,如果你在使用PEX遇到任何问题,先确保你的服务端中没有其他权限插件!
PEX配置文件(Config)
所有的PEX配置都在文件config.yml中,请按照示例配置:
permissions: backends: <- 数据库定义方面 file: <- 数据库文件 file: permissions.yml <- 生成使用的文件(在这里就可以自定义名字了) backend: file <- PEX发挥作用时,所使用的数据库(file为通用文本数据库,即YMAL;或SQL数据库) createUserRecords: false <- 其它设置 allowOps: false debug: false user-add-groups-last: false basedir: plugins/PermissionsEx <- 数据库定位插件路径(只在通用文本数据库中生效) informplayers: changes: false <- 当玩家的权限改变时,是否通知他们 multiserver: use-netevents: true updater: true alwaysUpdate: false }}
PS:你的config.yml文件几乎和上面的一样。当然,如果少掉一两行也是正常状况。你可以根据以下列表来改变默认的设置。
配置文件描述菜单
除非有特别标注,否则设定值均为true/false 请注意,如果你使用了不存在的权限,那么相似的权限就会被应用!请查看来了解更多
Node | 描述 |
---|---|
permissions.backends | 包括了数据库中所有的权限(查看数据库(Backends)了解更多) |
permissions.backend | 默认权限,可以指代在总数据库中定义的子数据库(这个指令属于permissions.backends子指令 |
permissions.allowOps | 将给予玩家OP的所有权限 |
permissions.debug | 是否在PEX启动时进行调试;更多内容查看 |
permissions.user-add-groups-last | 如果这个功能设置为true,使用/pex user <user> group add <group>时就会将用户权限应用于组; 设置为false,就会将组权限应用于用户(优先级问题) |
permissions.basedir | 配置文件的基本目录,除非你知道你在干嘛,否则不要动它 |
multiserver.use-netevents | 开启/不开启PEX多服务器统一化(只有在跨服插件(NetEvents)启用时才有效 |
updater | 是否自动更新,默认为是 |
数据库(Backends)
PEX支持两种数据库:通用文本数据库和SQL。默认使用通用文本数据库 切换数据库并不需要重启服务器,只需要使用pex backend命令即可切换。当然你也可以在config文件中手动切换 前往命令板块了解更多信息!
文本数据库设置
所有的命令都集中在你在config自定义的那个文件里面
SQL数据库设置
警告:由于SQL数据库是会不断更新的,所以特别标注这个百科的撰写时间:1/2/2013
- 在该时间段前设定的允许默认命令字符长度为200个,如果你设置了超过200个字符的node,那么可能数据库会拒绝,也可能服务器会崩溃;
- 如果你想突破这个限制,你需要:
- 在该时间段前设定的允许默认命令字符长度为200个,如果你设置了超过200个字符的node,那么可能数据库会拒绝,也可能服务器会崩溃;
- 前往编译SQL数据库,改变它的限制规则(注意这是必须的!而非建议)
- 把node分割成几小块,每一小块都不得超过200字符串(你不会就别分)
在此,感谢Bukkit用户s32ialx提出了SQL的限制问题!
SQL数据库的所有命令Node均包含在permissions.backend.sql这条Node里面
Node | 描述 |
---|---|
uri | 数据库连接数据流,亦指AKA(认证和密钥协议)和DSN(数据源); 请注意,DSN配置有特定的规范,例如MySQL的uri为 |
user | 连接数据库的用户名,如果不需要也可以不设置 |
password | 连接数据库的密码,如果不需要也可以不设置 |
MySQL数据库设置
下面列出SQL数据库设置中的MySQL数据库设置:
MySQL数据库设置 |
---|
permissions:
backend: sql backends: sql: uri: mysql://localhost/databasename user: username password: password |
修改以上的主机名称(Hostname)、数据库名称、用户名称以及用户密码都必须与你之前的设置(Config)相一致。在很多情况下,主机名称(Hostname)一般是你的本地主机名称(Localhost)。 同时,在大多数情况下,数据库系统和服务器系统是放在一起的。在此建议,设置前务必检查你的主机地址或者是network/system地址。 PS:如果你完全不知道你在做什么,请你什么都别动!
如果你需要添加新的数据库,可以像下面这样:
添加数据库 |
---|
permissions:
backends: sql: uri: mysql://192.168.5.4/demo password: password user: demo aliases: permissions: pex_permissions permissions_inheritance: pex_inheritance permissions_entity: pex_entity |
SQLite数据库设置
SQLite数据库设置和MySQL数据库大同小异 在设置SQLite数据库的时候,你需要将permissions.backends.sql.driver
这条Note设置为sqlite
以及,将permissions.backends.sql.uri
设置为如同sqlite:databasename
SQLite数据库设置 |
---|
permissions:
basedir: plugins/PermissionsEx backend: sql backends: sql: uri: sqlite:plugins/PermissionsEx/permissions.db user: username password: password |
当你设置完成并重启服务器后,在PEX的文件夹中会生成一个名为permissions.db的文件。 PS:请不要删除它!它即是数据库!
迁移和UUID
内容
- 数据库之间的迁移
- UUID支持
数据库之间的迁移
从一个数据库中将数据迁移至另一个数据库,所有版本的PEX操作几乎都和1.21版本的一致,遵循以下步骤:
- 1.首先确认,两个数据库皆为配置文件中(Config)允许使用的数据库;
- 2.将两个数据库的配置设置于配置文件中(Config);
- 3.重启服务器,输入命令/pex import <oldbackend>,即会将旧数据库中的内容迁移至新数据库,同时,重置旧数据库中的所有内容(所有之前设置的组合用户都会被重置)。
UUID支持
PEX支持UUID,如果用户受到PEX权限限制,PEX就会将用户的注册信息迁移至UUID。而用户的档案就会保存在name(这个name是用户最新的名字,如果Ta更改过用户名的话) 那么,在需要回档的时候PEX就能够轻松地回档(虽然这个过程几乎不会出错,但是还是建议你往下看) 但是,如果你的服务器没有开启正版认证,PEX就会有概率丢失一些权限设置!
当你的服务器处于离线模式(未开启正版认证),UUID就只能依靠name文档运行了(它就无法联网寻找支持)。这就意味着, 如果用户更改了Ta的用户名,不管这个用户是不是正版用户,他的UUID也会被改变 但是,有一些代理服务器,却会绕过这种改变
弹力绳(BungeeCord)
如果你使用的是弹力绳代理服务器,运行Spigot端时必须在服务端配置文件中将弹力绳(BungeeCord)选项设置为true,才能保证UUID稳定运行!
百合派(LilyPad)
如果你使用百合派代理服务器,只有百合派-Bukkit联网服务端才能保证UUID的正常运行
基本权限设置
就和之前提到过的一样,PEX支持在聊天窗/控制台输入命令,在游戏中/外实现任何权限! 下面的介绍能够帮助你有效地利用聊天窗/控制台设置符合PEX,这些指令均可以在游戏内/外执行。 如果你要在游戏中使用命令,必须加上/;如果你在控制台上使用,则不用加/
内容
- 命令Node
- “*”命令要点
- 修改文件要点
- 辅导目标
- 准备
- 进行基本、简单的命令构造
- 如果你无法使用控制台
- 添加自定义组
- 设置权限等级
- 设置有趣的前缀!
- 给每一个组添加权限
- 进行基本、简单的命令构造
- 测试你的总体设置
- 测试你的等级设置
- 文件修改示例
命令Node
PEX和其他的权限插件一样,都是采用通用的权限设置格式。但是,PEX的权限默认是全部关闭的,你需要手动将权限Node放置在列表中,这个命令才会允许被使用。 你可以通过PEX为默认组设置各种权限,也可以为其关闭某些权限。
如果你要在游戏中开通某些权限,使用这条命令:pex group <group> add <node>
而如果你想禁用某些权限,只需要在<node>前加上-
例如,在Bukkit端口中,设置有关/give和/plugins的命令权限:
- 首先,/give这条命令对应的Node为
bukkit.command.give
。这条命令通常是默认只有OP才能使用的; - /plugins对应的Node为
bukkit.command.plugins
,这条命令通常是所有玩家均可以使用的。
那么,你需要添加或禁止这两条命令,你就需要这样做:
- 让玩家能够使用/give,输入并执行
pex group groupname add bukkit.command.give
即可; - 禁止玩家使用/plugins,输入并执行
pex group groupname add -bukkit.command.plugins
即可
“*”命令要点
- 首先,你的确只需要输入“*”这个Node,就可以给予一个玩家/组使用服务器所有命令的权限;但是,在你使用它之前,还是建议你阅读下面的说明;
- 给予一个组/玩家“*”这个Node就能享用所有的权限,这听起来似乎非常简单;但是,这样做同时也会增加你的烦恼,因为有些命令你并不希望玩家使用;
- 给予一个组/玩家“*”这个Node就能享用所有的权限,这听起来似乎非常简单;但是,这样做同时也会增加你的烦恼,因为有些命令你并不希望玩家使用;
- 例如,我们拿VanishNoPacket这个插件做例子(后面写作VNP),VNP有一条Node
vanish.silentjoin
,这条Node可以让玩家在加入服务器时不会在后台 - 留下任何痕迹;如果你使用了“*”,那么看起来你再也追踪不到熊孩子的行踪了!不过,别担心,你只需要在这条Node前加入
-
,就可以完全封印 - 这条权限了!是不是很简单?
- 例如,我们拿VanishNoPacket这个插件做例子(后面写作VNP),VNP有一条Node
修改文件要点
如果你准备手动修改权限文件,请注意:
- 所有的权限,开头都是
-
加一个空格!例如:
- modifyworld.chat
和- -modifyworld.mobtarget.*
,这些语句就是正确的;modifyworld.chat
和-modifyworld.mobtarget.*
,这些语句就是错误的!
- 编译规则遵循,如果不严格遵循YAML格式,那么很可能导致PEX插件失效,或者服务器崩服!
- PEX阅读权限文件时,遵循从上到下的形式!
- PEX的阅读就和防火墙一样。同一个系列的Node,如果它在阅读第一句话时已经找到对应数据,那么它就会自动跳过下一句相似的叙述!例如:
default: options: default: true permissions: - modifyworld.* - -modifyworld.blocks.interact.23
- 那么,当玩家试图使用酿药台时(酿药台的ID为23),由于PEX已经阅读到了
modifyworld.*
并找到相关数据,它就不会执行-modifyworld.blocks.interact.23
- 因此,后面这条禁止Node形如虚设。
- 然而,如果你想要禁止Node生效也非常简单,只需要把这两条语句调换一下位置即可;那么,当玩家使用酿药台时,PEX先检阅到
-modifyworld.blocks.interact.23
,于是这个行为就被禁止了; - 如果玩家想使用炉子(ID为61),PEX检阅完
-modifyworld.blocks.interact.23
后没有找到ID为61的相关数据;它就继续检阅modifyworld.*
,找到数据并执行 - 主要规则就是,如果你要执行一个小范围的语句,就必须将其放在一个大范围的语句上面!
辅导目标
这其实是一个向导
- 建立一个基本、简单的权限结构
- 添加这些组:Member, VIP, Mod, Admin
- 默认组(Dafult)虽然允许聊天,但不能够改变任何东西,也不会有前缀;
- 成员组(Member)才是真正的玩家组,他们能够改变世界构造,并使用彩色前缀("&0(&8M&7ember&0)&7 ");
- VIP组相当高贵,他们享有比成员组更多的特权,但还是会受到怪物的攻击,他们的前缀为&0(&eVIP&0)&7;
- 怪物猎人组(Mod)则不会受到怪物的伤害;
- 管理员组(Admin)享有服务器最高权限,享有一个非常Prefect的前缀&0(&4Admin&0)&7
- (可选择)将
modifyworld.*
从默认组中移除; - (可选择)为默认组添加
modifyworld.chat
;
- 添加这些组:Member, VIP, Mod, Admin
- 测试你的设置
准备
- 安装并设置PEX(具体查看)
- (可选)激活“修改世界”(ModifyWorld),查看“修改世界”和“配置”了解更多;
- 开启你的服务器
- 在新窗口打开显示相关权限列表的文件;
- 在新窗口中打开配置设置教程
进行基本、简单的命令构造
这些命令,必须在控制台中使用。
- 创建管理员组(Admin),使用这条命令
pex group Admin create
- 向这个组添加Node
permissions.*<\code>,使用这条命令
pex group Admin add permissions.*
- 把你自己加入到这个组中,使用这条命令
pex user YourPlayerName group set Admin
,其中,YourPlayerName替换为你游戏中的用户名 - (可选)给你自己使用PEX所有命令的权限,而非直接赋予这个组使用PEX所有命令的权限。使用这条命令:
pex user YourPlayerName add permissions.*>
然而,有的时候你无法使用控制台,你需要:
创建一个文件名叫:permissions.yml
,这个文件请直接上传到属于PEX的专用文件夹内,上传前请保证格式准确!(具体查看),下面是设置信息:
groups:
Default:
options:
default: true
permissions:
- modifyworld.*
Admin:
options:
prefix: '&0(&4Admin&0)&7 '
permissions:
- permissions.*
users:
YourPlayerName:
group:
- Admin
permissions:
- permissions.*
这样,你同样可以创建出Admin组,下面教大家怎么加入Member, VIP 和 Mod组
添加自定义组:成员组、VIP组和怪物猎人组
- 和上面几乎一样,添加一个成员组(Member),使用这条命令:
/pex group Member create
- 添加VIP组,使用这条命令:
/pex group VIP create
- 添加怪物猎人组(Mod)
/pex group Mod create
然后,我们来给这些组的等级排序,顺序为 Member -> VIP -> Mod -> Admin,查看排序(升级/降级)了解更多
设置权限等级
执行下面命令:
/pex group default set rank 1000
/pex group Member set rank 900
/pex group VIP set rank 800
/pex group Mod set rank 100
/pex group Admin set rank 1
其中,100是默认最高权限等级。
考虑到升级/降级命令无法在游戏中使用(但可以在控制台中使用),因此,在游戏中你不能:
- 你不能将一个比你低级别的玩家升级到和你同级别的组(例如Mod组就不能升级到Admin组)
- 你也不能将一个比你高级别的玩家降低到和你同级别的组(例如Admin组不能降低到Mod组)
- 也不能把你同级别的组成员升级/降级(如果你是Mod组,你就不能将一个同样属于Mod组的玩家升级/降级;即使是Admin组也是一样)
如果你是Admin,你想在游戏里提升某个玩家到Admin组,你只能直接使用设置组的指令:/pex user PlayerName group set Admin
,而不能使用升级/降级指令
升级/降级的指令只能够在控制台中使用。
给每一个组添加权限
PS:如果你没有关闭“修改世界”(ModifyWorld)的功能,你可以跳过设置modifyworld.*
这条Node
- (可选)
/pex group default remove modifyworld.*
- (可选)
/pex group default add modifyworld.chat
(只有在“修改世界”关闭时才需使用)
/pex group Member add modifyworld.*
/pex group VIP add modifyworld.*
/pex group VIP add -modifyworld.mobtarget.monster.creeper
/pex group Mod add modifyworld.*
/pex group Mod add -modifyworld.mobtarget.*
/pex group Admin add permissions.*
/pex group Admin add modifyworld.*
/pex group Admin add -modifyworld.mobtarget.*
如果你已经顺利完成了上面的步骤,那么现在是时候进行设置了!
测试你的总体设置
在任何一个版本中,修改自己属于的组的指令都为:/pex user YourPlayerName group set GroupName
默认组Dafult
- 确认你可以聊天、说话;
- 确认你名字前没有前缀或显示默认前缀;
- 确认你可以在离开出生点保护的地区进行方块的改造
- 注意:如果“修改世界”(ModifyWorld)功能关闭,并且你没有加入
modifyworld.*
这条Node,那么你应该不能进行改造!
- 如果“修改世界”(ModifyWorld)功能关闭,并且你没有加入
modifyworld.*
这条Node,那么请马上热情满满地扑向一只Creeper!
- (别害怕,它根本炸不到你)
成员组Member
- 确认你可以聊天;
- 确认你名字前有正确的前缀;
- 确认你可以修改世界(离开出生点保护区后)
VIP
- 确认你可以聊天
- 确认你名字前有正确的前缀
- 确认你可以修改世界(离开出生点保护区后)
- 如果“修改世界”(ModifyWorld)功能关闭,并且你没有加入
modifyworld.*
这条Node,那么请马上热情满满地扑向一只Creeper!
- (别害怕,它根本炸不到你)
管理员组Admin
- 确认你可以聊天;
- 确认你名字前有正确的前缀;
- 确认你可以修改世界(如果你已经把你的名字列进OP列表,并且在PEX配置文件中将allowOPs设置为true,你甚至可以打碎出生点的方块)
- 确认你无法收到任何生物的攻击伤害!
下面,你将创造一个虚拟的用户。实际上,我更建议你怂恿你的Friends参与到你的实验当中(这当然是为了科学!)
测试你的等级设置
/pex user AnotherPlayer group set default
- 各种升级/降级的指令与这一条
/pex promote AnotherPlayer
指令差不多,当使用之后你会看到提示:“User AnotherPlayer promoted to NextGroup”
- 疯狂使用这条指令,直到你看到“Promotion error: User is not promotable”(指令错误,等级已经达到最高级),
- 再执行:
/pex user AnotherPlayer
,之后你将会看到:
playername are member of:
Mod (rank 100 @ default)
playername's permissions:
-modifyworld.mobtarget.* (from Mod)
modifyworld.* (from Mod)
playername's options:
- 降级和升级差不多,只需要把
promote
切换成demote
即可;
- 如果这个用户是虚拟的,你可以随心所欲地使用:
/pex user AnotherPlayer delete
将他们从组中移除;
- 如果这个用户是真实的,那你就务必要设计和监督好你的组机制了(查看世界列表)
文件修改示例
作为参考,如果你硬是要按照下面的示例设置进行配置,那么产生的效果也是如同示例的。如果你想自己定义,请注意组名的编写规范和大小写!
groups:
default:
options:
rank: '1000'
default: true
permissions:
- modifyworld.chat
Member:
permissions:
- modifyworld.*
options:
rank: '900'
prefix: '&0(&8M&7ember&0)&7 '
VIP:
permissions:
- -modifyworld.mobtarget.monster.creeper
- modifyworld.*
options:
rank: '800'
prefix: '&0(&eVIP&0)&7 '
Mod:
permissions:
- -modifyworld.mobtarget.*
- modifyworld.*
options:
rank: '100'
prefix: '&0(&1Mod&0)&7 '
Admin:
permissions:
- -modifyworld.mobtarget.*
- modifyworld.*
- permissions.*
options:
rank: '1'
prefix: '&0(&4Admin&0)&7 '
users:
AnotherPlayer:
group:
- default
YourPlayerName:
group:
- Admin
下面这一个文件是刷新之后的PEX剖析文件。请注意观察YAML格式,任何格式上的出错,都会导致非常严重的后果!
{
"users": {
"AnotherPlayer": {
"group": [
"default"
]
},
"YourPlayerName": {
"group": [
"Admin"
]
}
},
"groups": {
"default": {
"options": {
"default": true,
"rank": "1000"
},
"permissions": [
"modifyworld.chat"
]
},
"Member": {
"options": {
"prefix": "&0(&8M&7ember&0)&7 ",
"rank": "900"
},
"permissions": [
"modifyworld.*"
]
},
"VIP": {
"options": {
"prefix": "&0(&eVIP&0)&7 ",
"rank": "800"
},
"permissions": [
"-modifyworld.mobtarget.monster.creeper",
"modifyworld.*"
]
},
"Mod": {
"options": {
"prefix": "&0(&1Mod&0)&7 ",
"rank": "100"
},
"permissions": [
"-modifyworld.mobtarget.*",
"modifyworld.*"
]
},
"Admin": {
"options": {
"prefix": "&0(&4Admin&0)&7 ",
"rank": "1"
},
"permissions": [
"-modifyworld.mobtarget.*",
"modifyworld.*",
"permissions.*"
]
}
}
}
进阶权限设置
在这一个板块中,我们会介绍更多的PEX进阶设置,包括:继承、正则表达(regex)、多世界权限
内容
- 权限继承
- 权限继承规则
- 使用目前组进行继承
- 继承树
- 正则表达(regex)
- 多世界权限
- 多世界继承
---
权限继承
在很多服务器里,管理员都设置了很多等级不同的组,继承功能能够让你最大化简化Node输入,让文件编译一目了然,不易出错。
学习这个板块的前提是你必须先通晓”基础权限设置”。如果你还不能对其学到精通,那么下面的步骤我就不能保证你全部看懂了。
再次提出“基础权限设置"中的例子,你会发现,Member, VIP 和 Moderator这几个组中都使用了同一条Nodemodifyworld.*
。
其实如果你学会了继承,这种累赘的设置毫无必要。
权限继承规则
PEX的继承规则如下:
- 有关玩家的特别设定(例如前缀、后缀、为玩家量身定做的Node等),这些设定处理时是优于组的(意思就是组设定不会覆盖玩家的设定)
- 一个组中的成员,必然会应用这个组的继承设定;
- Node的执行遵循继承树(查看继承树了解更多)
- 一个组A如果继承了另一个组B,A就会继承B的一切!(如果B也继承其他组,A也会拥有这些组的设定)。
- 所以,你千万不要让A继承了B之后,又设定B继承A...PEX会从此进入冥思苦想绞尽脑汁的困境之中!(死机)