Skip to content

PySpigot 配置

以下页面提供了关于 PySpigot 的 config.yml 文件中所有配置数值的信息。

metrics-enabled

指定 PySpigot 是否会收集指标数据并将这些数据提交给 bStats。设置为 false 将禁用指标数据的收集。您也可以在 /plugins/bStats 目录下的 bStats 配置文件中全局禁用 bStats。

1
metrics-enabled: true

默认值: true

script-load-delay

PySpigot 在服务器加载完成后等待加载脚本之前的延迟时间,以游戏刻度为单位。一个现实世界的秒内有 20 个服务器刻度。例如,如果数值为 20,则 PySpigot 将在服务器加载完成后等待 20 个游戏刻度(或者 1 秒)才会加载脚本。设置为 -1 可以立即加载脚本而不设定加载延迟时间。

1
script-load-delay: 20

默认值: 20

library-relocations

外部 Java 库在 java-libs 文件夹中的重定位规则列表。如果不同版本的库已存在并且由服务器上的其他插件使用,此功能可用于重定位外部 Java 库的类名。格式为 <原始模式>|<重定位后的模式>

1
2
library-relocations:
  - 'org.apache.commons|relocated.org.apache.commons'

默认值: 无(空列表)

log-timestamp-format

在将日志消息打印到脚本日志文件时应使用的日期/时间格式。时间戳应该符合适当的 SimpleDateFormat 格式。

1
log-timestamp-format: 'MMM dd yyyy HH:mm:ss'

默认值: MMM dd yyyy HH:mm:ss

script-action-logging

指定脚本加载、卸载和重新加载时是否应将消息打印到控制台。

1
script-action-logging: true

默认值: true

verbose-redis-logging

指定是否将所有redis事件记录到脚本的日志记录器,或者仅记录关键事件。 关键事件包括重新连接尝试和重新连接失败。 如果设置为false,则仅记录这些关键事件。

1
verbose-redis-logging: true

默认值: true

script-unload-on-plugin-disable

指定是否应自动卸载脚本,如果它所依赖的插件已被卸载。 该值仅适用于在script_options.yml文件中列出插件依赖项的脚本。 此功能特别有用,可确保当一个脚本依赖于一个插件时,如果其中一个或多个依赖插件被禁用,则其关闭任务可以成功完成。

1
script-unload-on-plugin-disable: true

默认值: true

jython-options

此部分允许您指定与Jython相关的选项。

init-on-startup

指定在插件加载时是否应初始化Jython。 如果将此设置为true,则可以通过在服务器启动期间初始化Jython(而不只是在加载第一个脚本之前)来缩短脚本加载时间。

1
2
jython-options:
  init-on-startup: true

默认值: true

properties

一个属性列表应该在Jython初始化时传递。默认情况下,使用值为truepython.cachedir.skip属性。除非你知道你在做什么,否则应该保持该选项不变,因为在正常情况下,嵌入式Jython不应该使用缓存目录。

查看此页面以获取更详细的说明,以及Jython源代码中的RegistryKey类以获取完整的Jython属性列表。

1
2
3
jython-options:
  properties:
    - 'python.cachedir.skip=true'

默认值: 包含python.cachedir.skip=true的列表

args

一个参数列表应该在Jython初始化时传递。这相当于正常Python中的sys.argv列表。

1
2
3
jython-options:
  args:
    - 'test_argument'

默认值: 无(空列表)

script-option-defaults

脚本选项默认值是可以指定的默认脚本选项。在这个部分定义的选项作为后备值,应在脚本具有一个或多个未在script_options.yml文件中定义的脚本选项的情况下使用。

main

指定项目的主模块(此选项不适用于单文件脚本)。PySpigot使用此选项来确定项目加载时应执行哪个模块。这类似于对多模块Python项目调用python main.py,其中main.py是项目的主模块。

1
main: 'main.py'

默认值: main.py

enabled

用于启用或禁用脚本或项目。要禁用脚本/项目,请将该值设置为false

1
2
script-option-defaults:
  enabled: true

默认值:true

load-priority

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

1
2
script-option-defaults:
  load-priority: 1

默认值:1

plugin-depend

指定脚本或项目依赖的插件列表。如果服务器上未加载和运行任何插件依赖项,则脚本/项目将无法加载。此外,如果[#script-unload-on-plugin-disable]参数设置为true,则当插件被卸载/禁用时,根据此选项规定依赖该插件的任何脚本/项目将自动卸载。

注意

如果您在脚本或项目中使用ProtocolLib或PlaceholderAPI,不需要在此处指定任何其中一个。PySpigot内置支持这两个插件,并且依赖管理会自动处理。

1
2
3
script-option-defaults:
  plugin-depend:
    - 'Citizens'

默认值:无(空列表)

file-logging-enabled

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

1
2
script-option-defaults:
  file-logging-enabled: true

默认值:true

min-logging-level

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

1
2
script-option-defaults:
  min-logging-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 值。 permission-default 的允许值为 opnot optruefalse

  • op:只有服务器操作员将默认拥有该权限节点。
  • not op:非操作员的玩家将默认拥有该权限节点。
  • true:所有玩家将拥有该权限(即默认权限)。
  • false:没有玩家将拥有该权限(即不是默认权限)。
1
2
script-option-defaults:
  permission-default: 'op'

默认值:op

debug-options

patch-threading Specifies whether a workaround for potential threading issues should be applied. If set to true, PySpigot will adjust internal threading to mitigate possible problems related to concurrency. Only enable this option if you are experiencing specific threading issues and after thorough testing to ensure it resolves the problem without causing new ones.

1
2
debug-options:
  patch-threading: false

Default: false

指定在脚本卸载时是否应用补丁到threading模块。该补丁旨在修复在异步任务中使用线程模块时出现的错误。欲了解更多信息,请参阅此GitHub问题报告。在大多数情况下,应将此设置为true

1
2
debug-options:
  patch-threading: true

默认值:true

示例配置

以下示例配置包含所有参数的默认值。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 如果为false,将禁用bStats收集PySpigot的指标信息。您也可以在/plugins/bStats的配置文件config.yml中全局禁用bStats。
metrics-enabled: true
# 服务器完成加载后脚本加载的延迟时间(以刻为单位)。
script-load-delay: 20
# 存储库中库的重定位规则列表。格式为<pattern>|<relocated pattern>
library-relocations: []
# 脚本日志文件中时间戳的日期/时间格式,采用Java的SimpleDateFormat格式:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/format/DateTimeFormatter.html
log-timestamp-format: 'MMM dd yyyy HH:mm:ss'
# 如果为true,将在每次加载、运行和卸载脚本时将日志消息打印到控制台。
script-action-logging: true
# 如果为true,将所有redis事件记录到控制台和脚本的记录器中。如果为false,仅记录重新连接事件(重新连接尝试和失败)。
verbose-redis-logging: true
# 如果为true,将自动卸载脚本,如果脚本依赖的插件被卸载。特别适用于确保依赖插件的脚本关闭任务成功完成(在卸载插件之前)。
script-unload-on-plugin-disable: true
# 与Jython有关的选项。更改此部分中的选项需要重新启动服务器。
jython-options:
  # 如果为true,在插件加载/服务器启动时将初始化Jython运行时。如果为false,则直到加载第一个脚本之前才初始化Jython运行时。
  init-on-startup: true
  # 传递给Jython的一系统属性列表。有关完整列表,请参阅https://javadoc.io/doc/org.python/jython-standalone/latest/org/python/core/RegistryKey.html
  properties:
    - 'python.cachedir.skip=true'
  # 初始化Jython时要传递的参数列表。等同于Python中的sys.argv。
  args:
    - ''
# 脚本选项的默认值。如果一个或多个选项未在脚本_options.yml中为脚本定义,则PySpigot将退回到这些值。
script-option-defaults:
  # 项目的主脚本文件。
  main: 'main.py'
  # 是否启用脚本
  enabled: true
  # 脚本的整数加载优先级
  load-priority: 1
  # 脚本依赖的插件列表
  plugin-depend: []
  # 是否将脚本日志消息记录到其相应的日志文件中
  file-logging-enabled: true
  # 记录到控制台和脚本日志文件的最低级别
  min-logging-level: 'INFO'
  # 权限的默认级别
  permission-default: 'op'
# 脚本的高级调试选项
debug-options:
  # 如果为true,将为所有与脚本相关的异常打印堆栈跟踪到服务器控制台
  print-stack-traces: false
  # 如果为true,在spigotmc.org上有新版本可用时,插件将在控制台和加入服务器(对具有pyspigot.admin权限的玩家)时显示消息。
  show-update-messages: true
  # Jython内部的日志级别。可以将其设置为FINE或ALL以进行调试。注意:服务器的根记录器也需要配置为接受Jython的调试消息以显示调试消息。
  jython-logging-level: 'INFO'
  # 如果为true,PySpigot将在脚本卸载时修补线程模块(如果在脚本中使用),以防止服务器挂起。有关更多信息,请参阅https://github.com/magicmq/pyspigot/issues/18#issue-3012022678
  patch-threading: true