这是一个Minecraft服务端管理工具,支持后台运行,快速下载部署,启动,停止,重启,备份,恢复备份(alpha),向玩家发送消息,监控玩家消息并响应(alpha)
此脚本用于帮助运维人员减少重复的操作,帮助他们更加轻松的工作
本工具原身是由Loft团队内部使用的开服/运维/开发工具, 在稳定的为若干公益服提供长达两年半的服务后, 我们决定将其开源, 以帮助更多的人.
Q1: 本工具试图解决什么样的问题?
A1:
- 为低性能机器提供高性能利用率的Minecraft服务端管理工具.
- 为原版服务端添加额外的功能, 不需要使用第三方服务端.
- 提供自动化工具, 以实现自动化运维或在开发中提供协助.
- 提供一个服务端控制内核, 将常用工具进行整合, 以便于嵌入现有的CI或其他程序中.
Q2: 本工具与其他相似工具的优势在哪里?
A2:
- 更低性能的占用. 经测试, 常驻后台部分仅占用约1M内存(实际上用不到这么多), 其他部分更少, 能有效的为您节约服务器资源.
- 无需修改原始服务端即可支持一些实用功能.
- 实时生效的插件. 本工具支持实时加载/卸载/编辑插件, 无需重启服务端即可生效.
- 高效的自动部署功能. 首先感谢@bangbang93等大佬提供的高速下载服务, 利用这些服务, 本工具能够在几秒内完成服务端的下载与部署, 无需手动下载, 解压, 配置, 仅需一条命令即可完成.
- 理论上能够支持任意语言的插件, 不再会被技术栈绑定.
Q3: minecraftctl能做什么?
A3:
- minecraftctl能够帮助您快速的下载, 部署, 启动, 停止, 重启, 备份, 恢复备份, 向玩家发送消息, 监控玩家消息并响应等等.
- minecraftctl能够帮助您实现自动化运维, 例如: 自动化测试, 自动化部署, 自动化备份等等. 例如: 本项目的CI就是使用minecraftctl与pyCraft进行的测试
# 克隆仓库
git clone https://github.com/MemoryShadow/minecraftctl --depth 1
# 获取当前构架
arch=`dpkg --print-architecture`
# 生成配置包
minecraftctl/build/prepare.sh
cd "minecraftctl/build/deb/${Arch}"
# 打包成为deb
dpkg -b . ../minecraftctl_${Arch}.deb
# 克隆仓库
git clone https://github.com/MemoryShadow/minecraftctl --depth 1
# 安装打包工具
yum install rpmdevtools
# 初始化工作目录
minecraftctl/build/prepare.sh
cp -r minecraftctl/build/rpm ~/rpmbuild
rpmdev-setuptree
arch=`arch`
# 运行构建
rpmbuild -bb --target ${Arch} ~/rpmbuild/SPECS/minecraftctl.spec
# 文件在~/rpmbuild/RPMS目录下
这个项目使用 git, screen 和 aric2。请确保你本地安装了它们。
sudo yum/apt-get install screen aria2
sudo apt install minecraftctl*.deb
sudo rpm -i minecraftctl*.rpm
注意: 使用此方案将会导致您无法使用包管理器管理此程序,但您能以最快的速度体验到最新的支持(相当于alpha版本)
注意: 使用通用安装时请保持root身份
在master分支滚动更新的我是屑
#!/bin/bash
# Clone the repository from Github
git clone --depth 1 -b master https://github.com/MemoryShadow/minecraftctl.git /usr/local/src/minecraftctl
# install minecraftctl
sudo /usr/local/src/minecraftctl/build/Universal.sh install
# uninstall minecraftctl software(remove the source code directory, installation directory, and the symbolic link)
sudo /usr/local/src/minecraftctl/build/Universal.sh uninstall
QQ机器人相关后端代码正在逐渐剥离中,请先暂时联系我注册相关信息
您也可以自己实现WebAPI
此脚本允许接受机器人消息,但是需要您来手动控制消息获取时间
# 编辑计划任务
crontab -e
# 启用计划任务
systemctl start crond
systemctl enable crond
在打开的文件中写下如下的内容:
# --------------------------------------------------------
# 每天凌晨的00:10和12:00热备份一次服务器(将会短暂的冻结服务器)
# 启动此计划后,可以将bukkit.yml(如果您是bukkit系服务端)中的autosave字段设为0,可有效避免储存计划的大量IO导致的崩服
10 0 * * * source /etc/profile;/usr/bin/minecraftctl backup
0 12 * * * source /etc/profile;/usr/bin/minecraftctl backup
# 每隔15秒写入一次,并要求不发送邮件,避免邮件过多
*/1 * * * * source /etc/profile;sleep 0;/usr/bin/minecraftctl QQMsg &>/dev/null
*/1 * * * * source /etc/profile;sleep 15;/usr/bin/minecraftctl QQMsg &>/dev/null
*/1 * * * * source /etc/profile;sleep 30;/usr/bin/minecraftctl QQMsg &>/dev/null
*/1 * * * * source /etc/profile;sleep 45;/usr/bin/minecraftctl QQMsg &>/dev/null
# --------------------------------------------------------
[hostname@username ~]$ minecraftctl help
此脚本用于以尽可能简洁的方式对Minecraft服务端进行控制
minecraftctl <功能名称> [可能的参数]
backup 备份或恢复服务器存档
download
分析传入的 URL 并尝试使用找到的最合适的下载方法
edit 编辑 minecraftctl 和 minecraft 相关文件
help 获取这个帮助菜单
install 在 Linux 上自动安装Minecraft服务端
join 连接服务器后台控制台
listen 听取传入的信息并采取适当的行动
QQMsg 获取QQ群消息
restart 重启 Minecraft 服务端
say 向游戏内发送消息
start 启动 Minecraft 服务端
stop 停止 Minecraft 服务端
view [测试中]打开一个视图,可以查看服务器的状态的同时操作终端
[hostname@username ~]$
- git — 版本控制器
- screen — 一个优秀的会话管理工具
- aric2 — 一个支持多线程和多协议的下载程序
- whiptail - 用于支持whiptail窗口,来实现部分区域的窗口化交互 文档
非常欢迎你的加入!参阅贡献指南
标准 Readme 遵循 Contributor Covenant 行为规范。
本项目高速下载由BMCL项目提供部分加速支持
感谢bangbang93与MCBBS为我们的Minecraft之旅提供极高的下载速度
现在本项目的附属项目正在逐步迁移至minecraftctl中
GPL-3.0 © MemoryShadow