MCDR插件端

在此引用MCDReforged官方github仓库的中文介绍(原仓库地址:https://github.com/Fallen-Breath/MCDReforged)

MCDReforged(以下简称 MCDR)是一个可以在完全不对 Minecraft 服务端进行修改的情况下,通过可自定义的插件系统,提供对服务端的管理能力的工具

小至计算器、高亮玩家、b 站弹幕姬,大至操控计分板、管理结构文件、自助备份回档,都可以通过 MCDR 及相配套的插件实现

非常感谢 chino_desu 以及他的 MCDaemon 1.0 提出了这样一个超棒的 Minecraft 服务端控制工具的点子

优势

  • 运行于服务端之上,完全不需要修改服务端,保留原汁原味的原版特性
  • 可热重载的插件系统,无需重启服务端即可更新插件
  • 多平台/服务端的兼容性,支持在 Linux / Windows 下运行 vanilla、paper 以及 bungeecord 等服务端

它是如何工作的?

MCDR 使用了 Popen 来将服务端作为一个子进程启动,因此它便拥有了控制服务端标准输入/输出流的能力

Minecraft 服务器的控制台输出拥有着稳定的输出格式,并包含着大量与服务器有关的有用信息(如玩家聊天信息)。借此,MCDR 可以解析并分析服务端输出,将他们抽象成不同的事件并派发给插件进行响应

在 Minecraft 内置指令系统的帮助下,MCDR 可以通过向服务端标准输入流发送 Minecraft 指令来与 Minecraft 服务器做出交互

就这样!如果你愿意的话,你可以将 MCDR 视为一个盯着服务端控制台看的,可以根据服务端的输出快速地做出响应并向服务端输入相关指令的,一个机器人

是否很心动呢?我们来动手实装一下吧(相信大家也都是冲着这个来的)

准备环境

由于MCDR是一个Python工具,在这里我们需要先配置好Python。Python可以在官方网站里下载到,如果下载比较慢的话,也可以使用我提供的Python安装包。

  1. 双击打开python-3.9.5-amd64.exe
  2. 勾选下方 Add Python3.9 To PATH ,随后点击安装(如果不想安装到C盘,可以选第二个选项自由选择位置)
    image-20240603010910231

  3. 安装完成以后,打开powershell(或者cmd),依次输入

    1
    2
    3
    4
    # 查看python版本
    python -V
    # 查看pip版本
    pip -V

    如果显示如下结果,就说明安装正常了

    image-20240603011028653

  4. 安装MCDReforged模块,使用

    1
    2
    3
    4
    # 使用国外官方源
    pip install mcdreforged
    # 如果连接官方网络条件不好,推荐使用清华源,在国内使用会更快
    pip install mcdreforged -i https://pypi.tuna.tsinghua.edu.cn/simple

    注意:不要直接下载MCDR源代码进行启动,除非你知道你在做什么(如果不知道什么是源代码就当没看到)

    image-20240603011231862

  5. 校验MCDReforged是否安装成功

    1
    mcdreforged

    image-20240603011250457

    当出现MCDReforged [版本] is starting up的时候,表示已经安装成功了

此时,MCDR启动所需要的环境配置大功告成,接下来就可以开服了。

开服步骤

前言

由于在之前一节讲了如何配置Velocity群组服,我们已经有了三个Fabric核心的子服。这里我们只用main服务器做演示,其余子服的配置类似。

在之前我们的服务器结构是这样的

image-20240603013823759

客户端连接代理,代理连接到子服,子服为Fabric核心

我们现阶段的目标是这样的:

image-20240603013853627

客户端连接代理,代理连接到子服,子服受MCDR托管,为Fabric核心

温馨提示:即使你没有配置群组服,也同样可以按照本教程对单个服务端进行操作

调整服务器文件夹结构

我们原本的文件夹结构可能是这样的

1
2
3
4
5
6
7
8
9
server/
|-mods/
|- fabric-api.jar
|- ...
|-server.jar
|-sever.properties
|-start.bat
|-whitelist.json
|-...

这是一个服务端的文件夹,我们需要在该服务器文件夹外层再套一个文件夹用于操作MCDR,结构如下:

1
2
3
4
5
6
7
8
9
10
mcdr/
|-server
|-mods
|- fabric-api.jar
|- ...
|-server.jar
|-sever.properties
|-start.bat
|-whitelist.json
|-...

在这里,我让我的MCDR端文件夹名为main ,如图所示

image-20240603014046372

之后的所有操作,都需要在main文件夹中进行

温馨提示:此处的fabric服务器文件夹建议如示例改名为server,可以减少很多不必要的问题

初始化MCDR端

在main文件夹下,在上方powershell,可以在当前文件夹打开powershell窗口

image-20240603014213945

image-20240603014222965

执行指令初始化MCDR

1
mcdreforged init

image-20240603014258041

此时应当已经初始化完成,可以看到main文件夹下出现了一些文件夹

1
2
3
4
5
6
config # MCDR插件的配置文件默认存放位置
logs # MCDR的日志信息
plugins # MCDR插件文件夹
server: # 服务端本体文件夹
config.yml # MCDR配置文件
permission.yml # MCDR权限配置文件

配置与启动

打开config.yml,视个人情况修改以下配置项:

1
2
3
4
5
6
7
8
9
10
11
# MCDR默认语言,修改为zh_cn为中文
language: zh_cn
# 服务器目录,默认为server
working_directory: server
# 启动命令,大部分情况下要修改
# 如果已经在server中存在了启动脚本,直接修改为启动脚本的文件名
# 如果不存在启动脚本,建议将日常使用的启动命令存储为启动脚本
# 如果还是不想存,就直接把命令输入到配置中吧(真拿你没办法,如果是多行命令自己想办法吧)
statr_command: start.bat
# 处理器,示例是fabric核心,所以无需修改。如果是paper端请修改为bukkit_handler
handler: vanilla_handler

温馨提示:如果是使用官方生成的启动脚本,请去掉第二行的pause

打开permission.yml,视个人情况修改以下配置项:

1
2
3
4
5
6
7
8
# MCDR的权限分为5个等级,权限排序依次为owner,admin,helper,user,guest

# 新玩家进入默认分配的权限等级
default_level: user
# 既然是自己开服,给自己一个owner吧(PS. 将原本的Fallen_Breath替换为自己就可以了)
owner:
- Zhangsan
# owner具有服务器完全的操作权限,包括但不限于启停服务器,管理插件,为其他玩家添加任意权限等

修改完成后,你的MCDR初始化配置已经完成了,现在再创建一个启动脚本用来方便地启动服务器吧

新建一个start.bat,内容很简单,如下:

1
mcdreforged

image-20240603014459207

随后,双击脚本启动服务器。如果没出错的话,服务器应当已经跑起来了。如下

image-20240603014515938

image-20240603014525328

测试

连接到服务器,在聊天框输入!!MCDR 可以查看MCDR相关信息

image-20240603014546660