MCDReforged
MCDaemon 的重置版本,用于控制 Minecraft 服务器的一个 Python 工具
TIS大佬力作,适合生电服务器使用
搭建环境
- 适用于docker的系统(Ubuntu、Debian、Windows WSL2 等)
- 已正确配置的docker 和 docker-compose
- RAM ≥ 2GB
- 公网IPv4或IPv6,或自行配置内网穿透
演示环境:
- Ubuntu 24.04
- 4 核 CPU
- 16GB RAM
- 公网IPv4
创建容器
创建目录
$ mkdir mcdr$ cd mcdr
创建docker-compose配置文件
services: mcdr: image: mcdreforged/mcdreforged-temurin:2.13.0-py3.11-slim-extra container_name: mcdr restart: unless-stopped ports: - "25565:25565" # Minecraft 服务端口 volumes: - ./mcdr:/mcdr environment: - TZ=Asia/Shanghai
NOTE这里以 mcdreforged-temurin:2.13.0-py3.11-slim-jdk17-extra 镜像为例,该镜像包含了OpenJDK17与Python3.11
更多其他版本的镜像可以参考官方文档:MCDReforged文档
运行sudo docker-compose up -d
创建容器,并查看日志sudo docker logs mcdr
,它应该看起来是这样的:
展开/收起 控制台示例
$ sudo docker-compose up -d[+] Running 2/2 ✔ Network mcdr_default Created 0.1s ✔ Container mcdr Started
$ sudo docker logs mcdrMCDReforged 2.13.0 is starting upMCDReforged is open source, u can find it here: https://github.com/MCDReforged/MCDReforged[MCDR] [xx:xx:xx] [MainThread/INFO]: Language is set to en_us[MCDR] [xx:xx:xx] [MainThread/INFO]: Encoding / Decoding method has set to utf8 / utf8[MCDR] [xx:xx:xx] [MainThread/INFO]: Plugin directory list:[MCDR] [xx:xx:xx] [MainThread/INFO]: - plugins[MCDR] [xx:xx:xx] [MainThread/INFO]: Handler is set to vanilla_handler[MCDR] [xx:xx:xx] [MainThread/INFO]: MCDReforged 2.13.0 is starting[MCDR] [xx:xx:xx] [MainThread/INFO]: MCDReforged is running on Python 3.11.9 environment[MCDR] [xx:xx:xx] [TaskExecutor/INFO]: Refreshing all plugins[MCDR] [xx:xx:xx] [TaskExecutor/INFO]: No plugin has changed; Active plugin count: 2[MCDR] [xx:xx:xx] [MainThread/INFO]: Starting the server with command 'echo Hello world from MCDReforged'[MCDR] [xx:xx:xx] [MainThread/INFO]: Server is running at PID 11[Server] Hello world from MCDReforged[MCDR] [xx:xx:xx] [MainThread/INFO]: Server process stopped with code 0[MCDR] [xx:xx:xx] [MainThread/INFO]: Server stopped[MCDR] [xx:xx:xx] [MainThread/INFO]: Stopping MCDR[MCDR] [xx:xx:xx] [MainThread/INFO]: bye
此时,mcdr的目录应该为这样:
mcdr/ ├─ config/ ├─ logs/ │ └─ MCDR.log ├─ plugins/ ├─ server/ ├─ config.yml └─ permission.yml
配置服务器核心
如果你已有配置好的服务器文件
那么可以直接将整个文件夹放入mcdr/server
文件夹即可,它看上去应该是这样的:
mcdr/server/ ├─ config/ ├─ mods ├─ world/ ├─ .../ ├─ fabric-server-launcher.properties ├─ fabric-server-launch.jar ├─ server.jar ├─ server.properties └─...
然后修改mcdr/config.yml
,一般只需要修改以下两项:
language: zh_cnstart_command: java -Xms1G -Xmx8G -jar fabric-server-launch.jar nogui
-Xms1G
:最小使用RAM(根据实际情况调整)-Xmx8G
:最大使用RAM(根据实际情况调整)fabric-server-launch.jar
: 服务器核心jar文件名nogui
:不显示GUI
更多配置项的详细信息可以参见官方文档: MCDReforged文档
随后你可以直接跳转到启动!部分
如果你没有配置好的服务器文件
那么可以跟着如下步骤进行配置
1.获取服务器核心
在Minecraft官网下载server.jar文件, 并放入mcdr/server
文件夹
或者使用wgetsudo wget "https://piston-data.mojang.com/v1/objects/4707d00eb834b446575d89a61a11b5d548d8c001/server.jar"
2.修改参数
返回mcdr
目录修改config.yml
start_command: java -Xms1G -Xmx8G -jar server.jar nogui
NOTE参数请根据自身实际情况进行调整
随后返回容器根目录启动容器以执行启动命令sudo docker-compose up -d
, 并查看日志sudo docker logs mcdr
展开/收起 控制台示例
$ sudo docker-compose up -d[+] Running 2/2 ✔ Network mcdr_default Created 0.1s ✔ Container mcdr Started 0.1s$ sudo docker logs mcdrMCDReforged 2.13.0 is starting upMCDReforged is open source, u can find it here: https://github.com/MCDReforged/MCDReforged[MCDR] [xx:xx:xx] [MainThread/INFO]: 语言已设置为 zh_cn[MCDR] [xx:xx:xx] [MainThread/INFO]: 编码 / 解码方式已设置为 utf8 / utf8[MCDR] [xx:xx:xx] [MainThread/INFO]: 插件文件夹列表:[MCDR] [xx:xx:xx] [MainThread/INFO]: - plugins[MCDR] [xx:xx:xx] [MainThread/INFO]: 解析处理器已设置为 vanilla_handler[MCDR] [xx:xx:xx] [MainThread/INFO]: MCDReforged 2.13.0 正在启动[MCDR] [xx:xx:xx] [MainThread/INFO]: MCDReforged 正于 Python 3.11.9 环境中运行[MCDR] [xx:xx:xx] [TaskExecutor/INFO]: 刷新所有插件中[MCDR] [xx:xx:xx] [TaskExecutor/INFO]: 没有插件变更; 已加载插件数: 2[MCDR] [xx:xx:xx] [MainThread/INFO]: 正在启动服务端,启动参数为 'java -Xms1G -Xmx8G -jar server.jar nogui'[MCDR] [xx:xx:xx] [MainThread/INFO]: 服务端正在以 PID 11 运行中[Server] Starting net.minecraft.server.Main[MCDR] [xx:xx:xx] [CheckUpdate/INFO]: 已检测到新版本: v2.13.2。v2.13.2 的新内容:[MCDR] [xx:xx:xx] [CheckUpdate/INFO]: ## Fixes[MCDR] [xx:xx:xx] [CheckUpdate/INFO]:[MCDR] [xx:xx:xx] [CheckUpdate/INFO]: - Fixed catalogue meta fetch no retry if it fetches fails[MCDR] [xx:xx:xx] [CheckUpdate/INFO]: - Make sure current directory is in the `sys.path` again (#277, #331)WARNING: your terminal doesn't support cursor position requests (CPR).[Server] [xx:xx:xx] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.[MCDR] [xx:xx:xx] [MainThread/INFO]: 服务端进程返回代码: 0[MCDR] [xx:xx:xx] [MainThread/INFO]: 服务端已关闭[MCDR] [xx:xx:xx] [MainThread/INFO]: 正在关闭 MCDR[MCDR] [xx:xx:xx] [MainThread/INFO]: 正在关闭高级控制台>[MCDR] [xx:xx:xx] [MainThread/INFO]: bye
提示需要同意协议:You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
进入mcdr/server
编辑eula.txt
:cd mcdr/server && sudo vim eula.txt
eula=true
然后根据需要编辑server.properties
#Minecraft server properties#Thu Xxx xx xx:xx:xx CST 2024# 一般只需要修改如下几项:# 更多配置项,详见https://minecraft.fandom.com/zh/wiki/Server.properties
difficulty=hard #游戏难度(peace|easy|normal|hard)force-gamemode=true #强制游戏模式gamemode=survival #默认游戏模式level-seed= #生成世界种子,留空随机生成max-players=20 #最大玩家数motd=\u00A7b Elvish's \u00A7f Minecraft Server \n \u00A7e Welcome\! #服务器介绍文字,根据自己修改(显示在服务器标题下方)颜色符号和换行需使用Unicode编码(颜色符号§:\u00A7;换行: \n;详见https://minecraft.fandom.com/zh/wiki/%E6%A0%BC%E5%BC%8F%E5%8C%96%E4%BB%A3%E7%A0%81)online-mode=true #在线模式(true为仅正版玩家可进入;false为正版与离线玩家可进入)simulation-distance=8 #模拟距离(单位:区块),根据自己服务器性能调整view-distance=8 #视野距离(单位:区块)white-list=true #建议开启白名单
3.配置fabric
下载fabri核心,置于server.jar同级目录:sudo wget -O fabric-server-mc.1.21-loader.0.16.9-launcher.1.0.1.jar "https://meta.fabricmc.net/v2/versions/loader/1.21/0.16.9/1.0.1/server/jar"
修改根目录下的config.yml
,以启用fabric核心:
start_command: java -Xms1G -Xmx8G -jar fabric-server-mc.1.21-loader.0.16.9-launcher.1.0.1.jar nogui
启动!
返回根目录,输入sudo docker-compose up -d
以启动容器
展开/收起 控制台示例
$ sudo docker-compose up -d[+] Running 1/0 ✔ Container mcdr Created 0.0s$ sudo docker logs mcdrmcdr | MCDReforged 2.13.0 is starting upmcdr | MCDReforged is open source, u can find it here: https://github.com/MCDReforged/MCDReforgedmcdr | [MCDR] [xx:xx:xx] [MainThread/INFO]: 语言已设置为 zh_cnmcdr | [MCDR] [xx:xx:xx] [MainThread/INFO]: 编码 / 解码方式已设置为 utf8 / utf8mcdr | [MCDR] [xx:xx:xx] [MainThread/INFO]: 插件文件夹列表:mcdr | [MCDR] [xx:xx:xx] [MainThread/INFO]: - pluginsmcdr | [MCDR] [xx:xx:xx] [MainThread/INFO]: 解析处理器已设置为 vanilla_handlermcdr | [MCDR] [xx:xx:xx] [MainThread/INFO]: MCDReforged 2.13.0 正在启动mcdr | [MCDR] [xx:xx:xx] [MainThread/INFO]: MCDReforged 正于 Python 3.11.9 环境中运行mcdr | [MCDR] [xx:xx:xx] [TaskExecutor/INFO]: 刷新所有插件中mcdr | [MCDR] [xx:xx:xx] [TaskExecutor/INFO]: 没有插件变更; 已加载插件数: 2mcdr | [MCDR] [xx:xx:xx] [MainThread/INFO]: 正在启动服务端,启动参数为 'java -Xms1G -Xmx8G -jar fabric-server-mc.1.21.4-loader.0.16.9-launcher.1.0.1.jar nogui'mcdr | [MCDR] [xx:xx:xx] [MainThread/INFO]: 服务端正在以 PID 11 运行中mcdr | [Server] Downloading Minecraft server mcdr | [MCDR] [xx:xx:xx] [CheckUpdate/INFO]: 已检测到新版本: v2.13.2。v2.13.2 的新内容:mcdr | [MCDR] [xx:xx:xx] [CheckUpdate/INFO]: ## Fixesmcdr | [MCDR] [xx:xx:xx] [CheckUpdate/INFO]:mcdr | [MCDR] [xx:xx:xx] [CheckUpdate/INFO]: - Fixed catalogue meta fetch no retry if it fetches failsmcdr | [MCDR] [xx:xx:xx] [CheckUpdate/INFO]: - Make sure current directory is in the `sys.path` again (#277, #331)mcdr | WARNING: your terminal doesn't support cursor position requests (CPR). mcdr | [Server] Installing Fabric Loader 0.16.9(1.21.4) on the servermcdr | [Server] Downloading required filesmcdr | [Server] Downloading library org.ow2.asm:asm:9.7.1mcdr | [Server] Downloading library org.ow2.asm:asm-analysis:9.7.1mcdr | [Server] Downloading library org.ow2.asm:asm-commons:9.7.1mcdr | [Server] Downloading library org.ow2.asm:asm-tree:9.7.1mcdr | [Server] Downloading library org.ow2.asm:asm-util:9.7.1mcdr | [Server] Downloading library net.fabricmc:sponge-mixin:0.15.4+mixin.0.8.7mcdr | [Server] Downloading library net.fabricmc:intermediary:1.21.4mcdr | [Server] Downloading library net.fabricmc:fabric-loader:0.16.9mcdr | [Server] Generating server launch JARmcdr | [Server] Starting net.fabricmc.loader.impl.game.minecraft.BundlerClassPathCapturemcdr | [Server] [xx:xx:xx] [main/INFO]: Loading Minecraft 1.21.4 with Fabric Loader 0.16.9mcdr | [Server] [xx:xx:xx] [main/INFO]: Fabric is preparing JARs on first launch, this may take a few seconds...mcdr | [Server] [xx:xx:xx] [main/INFO]: Loading 4 mods:mcdr | [Server] - fabricloader 0.16.9mcdr | [Server] \-- mixinextras 0.4.1mcdr | [Server] - java 21mcdr | [Server] - minecraft 1.21.4mcdr | [Server] [xx:xx:xx] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.7 Source=file:/mcdr/server/libraries/net/fabricmc/sponge-mixin/0.15.4+mixin.0.8.7/sponge-mixin-0.15.4+mixin.0.8.7.jar Service=Knot/Fabric Env=SERVERmcdr | [Server] [xx:xx:xx] [main/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD]mcdr | [Server] [xx:xx:xx] [main/INFO]: No existing world data, creating new worldmcdr | [Server] [xx:xx:xx] [main/INFO]: Loaded 1370 recipesmcdr | [Server] [xx:xx:xx] [main/INFO]: Loaded 1481 advancementsmcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Starting minecraft server version 1.21.4mcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Loading propertiesmcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Default game type: SURVIVALmcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Generating keypairmcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Starting Minecraft server on *:25565mcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Using epoll channel typemcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Preparing level "world"mcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Preparing start region for dimension minecraft:overworldmcdr | [Server] [xx:xx:xx] [Worker-Main-3/INFO]: Preparing spawn area: 2%mcdr | [Server] [xx:xx:xx] [Worker-Main-2/INFO]: Preparing spawn area: 2%mcdr | [Server] [xx:xx:xx] [Worker-Main-1/INFO]: Preparing spawn area: 2%mcdr | [Server] [xx:xx:xx] [Worker-Main-3/INFO]: Preparing spawn area: 2%mcdr | [Server] [xx:xx:xx] [Worker-Main-3/INFO]: Preparing spawn area: 18%mcdr | [Server] [xx:xx:xx] [Worker-Main-2/INFO]: Preparing spawn area: 18%mcdr | [Server] [xx:xx:xx] [Worker-Main-2/INFO]: Preparing spawn area: 51%mcdr | [Server] [xx:xx:xx] [Worker-Main-1/INFO]: Preparing spawn area: 51%mcdr | [Server] [xx:xx:xx] [Worker-Main-1/INFO]: Preparing spawn area: 51%mcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Time elapsed: xxxx msmcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Done (x.xxxs)! For help, type "help"
当出现Done (x.xxxs)! For help, type "help"
时,就代表启动成功了。现在你可以进入游戏了
NOTE如果你的服务器有防火墙,请编辑安全组,开放25565端口
玩家进入服务器显示的日志:
mcdr | [Server] [xx:xx:xx] [User Authenticator #1/INFO]: UUID of player Elvish064 is xxxxxxxx-xxxx-xxxx-xxxxf-xxxxxxxxxxmcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Elvish064[/xx.xx.xx.xx:xxxxxx] logged in with entity id 5 at (2.5, 125.0, 4.5)mcdr | [Server] [xx:xx:xx] [Server thread/INFO]: Elvish064 joined the game
控制台操作
使用sudo docker attach mcdr
来连接到正在运行的mcdr控制台
有关MCDR控制台命令请参见MCDReforged文档
WARNING此时如果使用
exit
退出,容器会停止运行!
TIP如果想退出容器但不想容器停止,则按住Ctrl+P+Q退出
至此,你已经成功的在mcdr docker里运行了Minecraft 1.21 fabric服务端!🎉
部分信息可能已经过时