• 欢迎来到Minecraft插件百科!
  • 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
  • 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289

PEX:修订间差异

来自Minecraft插件百科
跳转到导航 跳转到搜索
第366行: 第366行:
:如果玩家想使用炉子(ID为61),PEX检阅完<code>-modifyworld.blocks.interact.23</code>后没有找到ID为61的相关数据;它就继续检阅<code>modifyworld.*</code>,找到数据并执行
:如果玩家想使用炉子(ID为61),PEX检阅完<code>-modifyworld.blocks.interact.23</code>后没有找到ID为61的相关数据;它就继续检阅<code>modifyworld.*</code>,找到数据并执行
:'''主要规则就是,如果你要执行一个小范围的语句,就必须将其放在一个大范围的语句上面!'''
:'''主要规则就是,如果你要执行一个小范围的语句,就必须将其放在一个大范围的语句上面!'''
----
===== '''<big>辅导目标</big>''' =====

2016年8月28日 (日) 05:24的版本

PEX

声明:本PEXWiKi是我(JACV)对EN版PermissionsEXWiKi的翻译&搬运。
原因:个人认为MineCraft插件百科上的PermissionsEX百科搬运得非常糟糕,格式紊乱、翻译不全。在此提供方便阅读、翻译完全的PermissionsEX百科。

介绍

首先,欢迎来到PermissionsEX百科!
这一份关于Permissions1.x/2.x百科的建立过程非常艰辛!因为两个版本的PEX拥有着完全不同的文件和设置(具体查看)
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" 这个代码才是正确的
  • 数字的应用必须使用’’(引用),例如
100045625这种语法是错误的;
'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
 从https://dev.bukkit.org/bukkit-plugins/permissionsex/files/下载相应版本的PEX

 BukkitDev上的PEX目前已经基本稳定,当然如果发现MC版本升级、BUG出现或者进行测试的时候,PEX开发工作一定会紧锣密鼓地进行。

 当你安装了PEX后,启动服务器,PEX会自动生成一个默认配置文件。除非你想链接SQL数据库或对PEX进行微调,否则不需要对这个文件进行任何设置。
 如果你需要设置这个配置文件就请继续阅读,否则,直接跳到命令板块。

PS:请注意,如果你在使用PEX遇到任何问题,先确保你的服务端中没有其他权限插件!


PEX配置文件(Config)

所有的PEX配置都在文件config.yml中,请按照示例配置:

点击下载标准格式Config

Config
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,那么可能数据库会拒绝,也可能服务器会崩溃;
如果你想突破这个限制,你需要:
  • 前往编译SQL数据库,改变它的限制规则(注意这是必须的!而非建议)
  • 把node分割成几小块,每一小块都不得超过200字符串(你不会就别分)
在此,感谢Bukkit用户s32ialx提出了SQL的限制问题!
SQL数据库的所有命令Node均包含在permissions.backend.sql这条Node里面
Node 描述
uri 数据库连接数据流,亦指AKA(认证和密钥协议)和DSN(数据源);

请注意,DSN配置有特定的规范,例如MySQL的uri为mysql://<hostname>/<database>

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就能享用所有的权限,这听起来似乎非常简单;但是,这样做同时也会增加你的烦恼,因为有些命令你并不希望玩家使用;
例如,我们拿VanishNoPacket这个插件做例子(后面写作VNP),VNP有一条Nodevanish.silentjoin,这条Node可以让玩家在加入服务器时不会在后台
留下任何痕迹;如果你使用了“*”,那么看起来你再也追踪不到熊孩子的行踪了!不过,别担心,你只需要在这条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.*,找到数据并执行
主要规则就是,如果你要执行一个小范围的语句,就必须将其放在一个大范围的语句上面!

辅导目标