Skip to content

脚本选项

在 PySpigot 的主插件文件夹中,您会找到一个名为 script_options.yml 的文件。该文件使您能够指定各种特定于脚本的选项,这里将涵盖所有内容。

提示

为每个脚本定义脚本选项是可选的。请参阅默认值部分获取更多信息。

基本格式

如果您想为一个脚本指定选项,可以这样做:

1
2
3
test.py: # (1)!
  enabled: true
  file-logging-enabled: true
  1. 此部分定义的所有选项仅适用于脚本 test.py

script_options.yml 文件中的每个部分应该是一个脚本的名称。名称必须完全匹配脚本的名称(包括 .py),否则该部分对该脚本将无法解析。

部分中的所有选项均适用于部分命名的脚本。在上面的例子中,选项 enabledfile-logging-enabled 适用于脚本 test.py

为多个脚本定义选项

如果您想为多个脚本定义选项,可以这样做:

1
2
3
4
5
6
test.py: # (1)!
  enabled: true
  file-logging-enabled: true
test2.py: # (2)!
  enabled: true
  load-priority: 10
  1. 此部分定义的选项适用于脚本 test.py
  2. 此部分定义的选型适用于脚本 test2.py

如上例所示,在新建的部分中定义了一个名为 test2.py 的部分,该部分中的所有选项将应用于 test2.py 脚本。而 test.py 脚本中的所有选项仍然仅适用于 test.py 脚本。

默认值

指定每个脚本的选项不是必需的。PySpigot 依赖于后备以及脚本选项未在加载的脚本的 script_options.yml 文件中定义时的默认值。以下的示意图展示了 PySpigot 在加载脚本时搜索脚本选项的过程。

graph LR
  A[Script loads] --> B{Option present in script_options.yml?};
  B -->|Yes| C[Use option from script_options.yml]
  B -->|No| D{Default option present in config.yml?}
  D -->|Yes| E[Use default option defined in config.yml]
  D -->|No| F[Use internal default option]

PySpigot 首先检查选项是否在 script_options.yml 文件中存在。如果此处未定义选项,则会退而求其次,使用 config.yml 中的 script-option-defaults 中定义的默认值。如果这里没有指定默认选项,则会退而求其次,使用内部定义的默认值。

PySpigot 对 每个脚本选项 分别执行此过程。

选项

enabled

指定脚本是启用还是禁用。要禁用脚本,请将此值设置为 false

1
2
test.py:
  enabled: true

默认值: true

load-priority

为脚本指定一个整数加载优先级。脚本和项目按照从高到低的顺序加载。换句话说,具有更高加载优先级的脚本/项目会更早加载,而具有较低加载优先级的脚本/项目会稍后加载。如果多个脚本和项目具有相同的加载优先级,则按字母顺序加载。

1
2
test.py:
  load-priority: 1

默认值: 1

plugin-depend

指定此脚本加载所需的插件列表。如果任何插件依赖项未加载并在服务器上运行,则脚本将无法加载。此外,当插件被卸载/禁用时,根据此选项指定为依赖于该插件的任何脚本将自动被卸载(如果 config.yml 中的 script-unload-on-plugin-disable 选项设置为 true)。

1
2
test.py:
  plugin-depend: ['Citizens', 'Vault']
注意

如果您在脚本中使用 ProtocolLib 或 PlaceholderAPI,您不需要在这里指定它们中的任何一个。PySpigot已内置支持这两个插件,并且依赖关系管理在内部处理。

默认值: 无(空列表)

file-logging-enabled

指定是否应为脚本启用文件记录。如果此选项为true,将生成一个脚本日志文件,并将任何错误消息(以及发送到脚本记录器的打印消息)记录到此文件中。如果此选项为 false,则不会将任何消息记录到日志文件中,但消息仍将打印到服务器控制台。

1
2
test.py:
  file-logging-enabled: true

默认值: true

min-logging-level

指定应记录到脚本日志文件和控制台的最低记录级别。选项可在JavaDocs中找到。

1
2
test.py:
  min-log-level: 'INFO'

默认值: INFO

permissions

指定脚本使用的权限列表。对于希望限制某些功能访问权限的脚本来说,这非常有用。此部分的定义方式与Bukkit插件的plugin.yml文件中定义权限的方式完全相同,具体请参考同样方式。请查看下面的用法代码示例,了解如何定义权限、默认值和子权限。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
test.py:
  permissions:
    permission.node.*:
      description: '这是一个权限节点'
      default: op
      children:
        permission.node.child: true
    permission.node.child:
      description: '这是一个子权限节点'
      default: true
    another.permission.node:
      description: '这是另一个权限节点'
      default: not op
  • description 是权限节点的描述,将显示在权限列表中。默认值是权限节点的名称。
  • default 是权限节点的默认值,或者说,谁应该默认拥有该权限节点。default 有四种可能的取值:
  • op:只有服务器操作员默认拥有此权限节点。
  • not op:非操作员的玩家默认拥有此权限节点。
  • true:所有玩家都拥有该权限(即默认权限)。
  • false:没有玩家拥有该权限(即默认权限)。默认值是default_permission的值(如下所示)。
  • children 是应该继承自父权限的子权限列表。每个权限节点可以有子权限。当设置为true时,子权限将继承父权限。

默认值: 无(未定义任何权限)

permission-default

当权限没有定义default 值时,指定权限应具有的默认值。

1
2
test.py:
  permission-default: true

permission-default 允许的值为 op, not op, true, 和 false

  • op: 仅服务器操作员将默认拥有权限节点。
  • not op: 不是操作员的玩家将默认拥有权限节点。
  • true: 所有玩家将拥有该权限(即默认权限)。
  • false: 没有玩家将拥有该权限(即默认权限)。

默认值: op