命令行接口

MCDR 提供了一些实用的命令行接口(CLI)工具。如果你在启动 MCDR 的时候在启动指令末尾追加一些参数。使用方法很简单:在你启动 MCDR 的命令末尾追加一些参数

从 v2.10 开始,MCDR 在安装时会在 python 的可执行文件路径下生成一个启动脚本,因此,你可以直接使用 mcdreforged 指令来启动 MCDR

来试试用以下命令来显示 CLI 的帮助信息吧!

mcdreforged -h
python -m mcdreforged -h
python3 -m mcdreforged -h

以下文档将使用 mcdreforged 作为演示用的指令。对于 MCDR < v2.10,你需要在下面所用的指令前加上 python -m 前缀

CLI 命令的大体格式为:

mcdreforged [global_args] <sub_command> [sub_command_args]

全局参数

  • -h, --help:展示帮助信息并退出

  • -V, --version:打印 MCDR 的版本并退出

  • -q, --quiet:禁用 CLI 信息输出

在 v2.8.0 版本加入: 参数 -V--version

子命令

start

mcdreforged start [-h]

mcdreforged 一样,启动 MCDR

init

mcdreforged init [-h]

准备 MCDR 的工作环境

在当前工作目录下生成默认配置、权限文件,及常用的文件夹,包含:

  • logs/

  • configs/

  • plugins/

  • server/

  • config.yml

  • permission.yml

gendefault

mcdreforged gendefault [-h]

在当前工作目录下生成默认配置文件

注意,这将会覆盖现有的文件

pack

mcdreforged pack [-h] [-i INPUT] [-o OUTPUT] [-n NAME]

将你插件的源文件 / 资源文件打包起来,从一组零散的文件,到一个 .mcdr 格式的 打包插件 文件

打包过程基于输入文件夹中的 mcdreforged.plugin.json 元数据文件。它会也仅会将如下的文件/文件夹打包至打包插件中:

  • 以插件 id 命名的文件夹

  • 文件 mcdreforged.plugin.json

  • 文件 requirements.txt,如果它存在

  • 于元数据的 resources 属性中列出的文件或文件夹

input

-i INPUT, --input INPUT

输入文件夹,也就是插件所在的文件夹

举个例子,如果你有着如下的文件结构

work_place/
   my_plugin/
       __init__.py
       my_lib.py
   mcdreforged.plugin.json
   requirements.txt

那么文件夹 work_place/ 将会是输入文件夹

默认值:当前所在的文件夹

output

-o OUTPUT, --output OUTPUT

储存生成的打包插件的文件夹

默认值:当前所在的文件夹

name

-n NAME, --name NAME

输出的打包插件文件的特定名称

如果该项的值未被给出,将会使用插件元数据中的 archive_name 属性的值

如果该项的值仍未给出,将会使用默认的命名格式

你可以在你的文件名字符串中使用格式化字符。形如 {arg_name} 的名字将会被自动替换。使用 {{}} 来描述单个 {}

  • id:插件 id

  • version:插件版本

举个例子,在 id=my_pluginversion=1.2.3 的情况下,将会出现下方的格式化过程

  • MyCustomPlugin-release -> MyCustomPlugin-release

  • MyCustomPlugin-v{version} -> MyCustomPlugin-v1.2.3

  • {id}_{version} -> my_plugin_1.2.3

如果该项的值中包含文件扩展名,且该文件扩展名为一个可用的 打包插件 扩展名(.mcdr.pyz),则其中包括的文件扩展名将会被使用。否则,默认扩展名 .mcdr 将会被追加至末尾

ignore patterns

--ignore-patterns IGNORE_PATTERN [IGNORE_PATTERN ...]

一个类似 gitignore 格式的模式串列表,表示一个文件忽略列表,将在打包插件时用于排除文件和文件夹

它支持 .gitignore 语法 的一个子集。下面是一些差异点:

  • 当使用反向匹配的模式串,即以 ! 开头的模式串时,一个文件是否被排除,取决于列表中相对位置最靠后的模式串的类型

  • 不支持后缀空格字符的转义

  • 不支持前缀 # 字符的转义

它将覆盖参数 --ignore-file 提供的值。如果值为空或者文件不存在 / 无法读取,什么都将不会被过滤

注意:用于计算相对路径时的根目录是当前的工作路径,而非 input 中的路径

默认值:空列表

例子:

--ignore-patterns __pycache__ foobar/*.txt **/trash/bin/

在 v2.8.0 版本加入.

ignore file

--ignore-file IGNORE_FILE

指向一格 utf8 编码的类似 gitignore 的文件。文件中的内容将被用作 --ignore-patterns 的参数

默认值:".gitignore",这意味着它将会自动读取当前工作路径下的 .gitignore 文件

下面是一个关于 --ignore-patterns--ignore-file 组合使用时,实际表现的表格:

--ignore-patterns

--ignore-file

表现

未设置

未设置

从 .gitignore 文件中读取忽略列表

未设置

已设置

从给定的文件中读取忽略列表

已设置

未设置

使用 --ignore-patterns 的值

已设置

已设置

使用 --ignore-patterns 的值

在 v2.8.0 版本加入.

shebang

--shebang SHEBANG

在打包插件文件的开头添加以 #! 为前缀的 shebang 行。除此之外,还会在 POSIX 平台上把打包插件文件设为可执行的

默认情况下,不会添加 shebang 行,也不让打包插件可执行

如果你的打包插件是一个合法的 zip app 文件,即它包含一个可用的 __main__.py,你就可以借助此选项,让你的打包插件在 bash 环境中可执行

例子:

--shebang "/usr/bin/env python3"

在 v2.8.0 版本加入.