一个基于 EndStone 的插件更新检查工具 / A plugin update checker based on EndStone.
Powered by EndStone.
EndStone-EasyCheckUpdate 是一个专为 EndStone 服务器设计的插件更新检查工具。它可以自动检查服务器上已安装插件是否有可用更新,并支持一键更新功能。插件支持通过自定义的 JSON 文件来获取更新信息,为服务器管理员提供便捷的插件管理体验。
| 特性 | 描述 |
|---|---|
| 🔍自动检查更新 | 定期检查所有插件的更新状态 |
| 📝自定义更新源 | 支持通过 JSON 文件指定更新信息 |
| 🔄一键更新 | 支持自动下载并更新插件 |
| 🕒定时检查 | 可配置的检查间隔 |
| 💾自动备份 | 更新前自动备份旧版本插件 |
| 📊版本比较 | 智能比较版本号,支持多种格式 |
服务器根目录/
├── logs/
│ └── EasyCheckUpdate/ # 日志目录
│ └── easycheckupdate_YYYYMMDD.log # 主日志文件
├── plugins/
│ ├── endstone_easycheckupdate-x.x.x-py3-none-any.whl # 插件主文件
│ └── EasyCheckUpdate/ # 插件资源目录
│ └── config/
│ └── easycheckupdate.json # 配置文件
-
下载插件
- 从 Release页面 下载最新版本
-
安装插件
# 将插件主文件复制到服务器 plugins 目录 cp endstone_easycheckupdate-x.x.x-py3-none-any.whl plugins/ -
配置插件
- 编辑
plugins/EasyCheckUpdate/config/easycheckupdate.json配置文件 - 根据需要自定义检查间隔和延迟时间
- 编辑
-
启动服务器
- 重启服务器或使用
/reload命令 - 插件会自动生成默认配置文件
- 重启服务器或使用
配置文件位于:plugins/EasyCheckUpdate/config/easycheckupdate.json
{
"check_update_on_load": true,
"check_interval": 1800,
"check_delay": 10,
"last_check_time": 0
}| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| check_update_on_load | 布尔值 | true | 服务器启动时是否自动检查更新 |
| check_interval | 整数 | 1800 | 自动检查更新的间隔时间(秒),默认为30分钟 |
| check_delay | 整数 | 10 | 服务器启动后延迟检查更新的时间(秒),默认为10秒 |
| last_check_time | 整数 | 0 | 上次检查更新的时间戳,插件自动维护 |
| 命令 | 描述 |
|---|---|
/checkupdate |
检查所有插件的更新 |
/checkupdate <插件名称> |
检查指定插件的更新 |
/checkupdate <插件名称> update |
检查并更新指定插件 |
/cu |
/checkupdate 的简写形式 |
| 权限节点 | 描述 |
|---|---|
| easycheckupdate.command.use | 允许使用检查更新命令(默认仅OP可用) |
要让您的插件支持 EasyCheckUpdate 的自动更新检查,您需要在插件类中添加 update_url 属性,该属性应指向一个包含更新信息的 JSON 文件 URL。
在您的插件类中添加 update_url 属性:
class YourPlugin(Plugin):
name = "your_plugin_name"
version = "1.0.0"
update_url = "https://example.com/your_plugin_version.json" # 添加此行
def __init__(self):
super().__init__()
# 其他初始化代码创建一个包含插件更新信息的 JSON 文件,并将其上传到可访问的服务器上。支持两种格式:
格式一:单版本格式(适合只维护最新版本)
{
"version": "1.0.1",
"download_url": "https://example.com/downloads/your_plugin-1.0.1.whl",
"update_content": "修复了一些bug,添加了新功能",
"author": "您的名字",
"update_time": "2023-10-01 12:00:00"
}格式二:多版本格式(适合维护多个历史版本)
数组格式(推荐):
{
"latest_version": "1.0.1",
"versions": [
{
"version": "1.0.1",
"download_url": "https://example.com/downloads/your_plugin-1.0.1.whl",
"update_content": "修复了一些bug,添加了新功能",
"author": "您的名字",
"update_time": "2023-10-01 12:00:00"
},
{
"version": "1.0.0",
"download_url": "https://example.com/downloads/your_plugin-1.0.0.whl",
"update_content": "初始版本发布",
"author": "您的名字",
"update_time": "2023-09-01 10:00:00"
}
]
}对象格式:
{
"latest_version": "1.0.1",
"versions": {
"1.0.1": {
"download_url": "https://example.com/downloads/your_plugin-1.0.1.whl",
"update_content": "修复了一些bug,添加了新功能",
"author": "您的名字",
"update_time": "2023-10-01 12:00:00"
},
"1.0.0": {
"download_url": "https://example.com/downloads/your_plugin-1.0.0.whl",
"update_content": "初始版本发布",
"author": "您的名字",
"update_time": "2023-09-01 10:00:00"
}
}
}单版本格式字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| version | 字符串 | 是 | 最新版本号 |
| download_url | 字符串 | 是 | 最新版本的下载链接 |
| update_content | 字符串 | 否 | 更新内容说明 |
| author | 字符串 | 否 | 插件作者 |
| update_time | 字符串 | 否 | 更新发布时间 |
多版本格式字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| latest_version | 字符串 | 是 | 最新版本号 |
| versions | 数组或对象 | 是 | 版本信息列表,可以是数组格式或对象格式 |
| versions[].version | 字符串 | 是(数组格式) | 版本号 |
| versions[].download_url | 字符串 | 是 | 该版本的下载链接 |
| versions[].update_content | 字符串 | 否 | 更新内容说明 |
| versions[].author | 字符串 | 否 | 插件作者 |
| versions[].update_time | 字符串 | 否 | 更新发布时间 |
EasyCheckUpdate 支持多种版本号格式,包括但不限于:
- 标准版本号:
1.0.0,2.1.3 - 带前缀的版本号:
v1.0.0,V2.1.3 - 带后缀的版本号:
1.0.0-beta,2.1.3-rc1
版本比较会自动忽略 v 或 V 前缀,并逐段比较数字部分。如果某一段无法转换为数字,则按字符串比较。
以下是一个完整的插件示例:
from endstone.plugin import Plugin
class MyAwesomePlugin(Plugin):
name = "my_awesome_plugin"
version = "1.0.0"
update_url = "https://raw.githubusercontent.com/yourusername/my_awesome_plugin/main/version.json"
def __init__(self):
super().__init__()
# 其他初始化代码
def on_enable(self):
self.logger.info("MyAwesomePlugin 已启用!")
def on_disable(self):
self.logger.info("MyAwesomePlugin 已禁用!")对应的 version.json 文件内容:
{
"version": "1.0.1",
"download_url": "https://github.com/yourusername/my_awesome_plugin/releases/download/v1.0.1/my_awesome_plugin-1.0.1-py3-none-any.whl",
"update_content": "修复了玩家掉落物品时的bug,优化了性能",
"author": "您的名字",
"update_time": "2023-10-01 12:00:00"
}当用户执行 /checkupdate <插件名称> update 命令时,EasyCheckUpdate 会:
- 从
update_url获取最新的版本信息 - 比较当前版本与最新版本
- 如果发现新版本,自动下载并安装
- 更新前会自动备份旧版本插件文件
- 尝试重新加载服务器以应用更新
A: 可以,通过修改配置文件中的 check_interval 参数来调整检查间隔(单位为秒)。
A: 将配置文件中的 check_update_on_load 设置为 false 即可。
A: 更新插件时,EasyCheckUpdate 会自动备份旧版本,下载新版本,并尝试重新加载服务器。如果重新加载失败,会提示您需要手动重启服务器。
A: 可以使用命令 /checkupdate 检查所有插件,或 /checkupdate <插件名称> 检查特定插件。
A: EasyCheckUpdate 在更新前会自动备份旧版本插件文件(.bak 后缀)。如果更新失败,可以手动将备份文件恢复。
AGPL-3.0 License
欢迎提交 Issue 和 Pull Request 来帮助改进这个插件!
如有问题或建议,请通过以下方式联系:
- GitHub Issues
- MineBBS 论坛
- QQ群:1083195477(Easy系列插件交流群)
| 日志文件 | 位置 | 用途 |
|---|---|---|
| 主日志 | logs/EasyLuckyPillar/easycheckupdate_YYYYMMDD.log |
记录游戏运行日志和错误信息 |
本项目采用 AGPL-3.0 许可证开源。
版权所有 (c) 2023 梦涵LOVE
本程序是自由软件:您可以自由地重新发布和修改它,
但必须遵循AGPL-3.0许可证的条款。
完整许可证文本请参阅 LICENSE 文件。
欢迎提交 Issue 和 Pull Request!
- Fork 项目仓库
- 创建功能分支
git checkout -b feature/AmazingFeature
- 提交更改
git commit -m 'Add some AmazingFeature' - 推送分支
git push origin feature/AmazingFeature
- 创建 Pull Request