写在前面:
这只是一次尝试。
想法源于我自己的体验:开服务器的时候,下载下来的插件安装完成后,就很少会回到论坛里查看资源更新,大量的插件也无法一一保证版本最新。尤其是更新服务器的时候,较大的API改动会使得不少插件失效。插件的作者很少会内置自动更新系统,在发布的每一个插件里写一套更新提示也过于繁琐。
因此,我便想到了用一个插件解决所有这些问题。开发者编写插件的时候,只需调用一个函数,就能向控制台输出版本信息;而对于广大的用户群体,一行醒目的黄字和附带的下载链接也省去了许多不必要的麻烦。
当然,目前这也是一个设想。这个计划有可能实现,也有可能失败。目前这个插件也有许多不足之处,比如无法直接下载新版插件进行覆盖、只兼容JS脚本插件等;但是,只要有需求,这些功能迟早都会实现。
最后,这个插件不会收取任何形式的费用!

如果你是服主>>点我
如果你是开发者>>点我
对于服主:
现在,这个插件刚刚发布,可能没有几个插件调用了检查更新的函数(当然,M系列插件会全部调用)。不过没关系——如果有开发者愿意使用这个函数,他会标明你是否应该来下载这个插件。
你可以现在就下载并安装这个插件——如果今后的某个插件调用了函数,更新信息就会在控制台显示。
效果如图:
【0.3.0】服主可以在游戏内执行
对于开发者:
如果你看到了这里,我非常高兴。如果你有意尝试在你的插件里调用更新检测函数,以下是详细的指导。
那么如何让你的用户知道你调用了这个插件?你可以在代码里进行判断,如果找不到这个函数就在后台输出警告;你也可以在帖子/教程里注明,建议用户一同安装这个插件。但是,未经允许请勿直接将插件一同整合!这个插件永远不会收费。毕竟我也得看下载量的嘛。
函数列表
完整的调用示例
建议/问题反馈
如果你有任何疑问,或者发现了BUG,建议您移步GitHub反馈问题!
当然,直接回帖留言也可以。但是不要在评论中提问!
TO-DO待完成清单
这只是一次尝试。
想法源于我自己的体验:开服务器的时候,下载下来的插件安装完成后,就很少会回到论坛里查看资源更新,大量的插件也无法一一保证版本最新。尤其是更新服务器的时候,较大的API改动会使得不少插件失效。插件的作者很少会内置自动更新系统,在发布的每一个插件里写一套更新提示也过于繁琐。
因此,我便想到了用一个插件解决所有这些问题。开发者编写插件的时候,只需调用一个函数,就能向控制台输出版本信息;而对于广大的用户群体,一行醒目的黄字和附带的下载链接也省去了许多不必要的麻烦。
当然,目前这也是一个设想。这个计划有可能实现,也有可能失败。目前这个插件也有许多不足之处,比如无法直接下载新版插件进行覆盖、只兼容JS脚本插件等;但是,只要有需求,这些功能迟早都会实现。
最后,这个插件不会收取任何形式的费用!

如果你是服主>>点我
如果你是开发者>>点我
对于服主:
现在,这个插件刚刚发布,可能没有几个插件调用了检查更新的函数(当然,M系列插件会全部调用)。不过没关系——如果有开发者愿意使用这个函数,他会标明你是否应该来下载这个插件。
你可以现在就下载并安装这个插件——如果今后的某个插件调用了函数,更新信息就会在控制台显示。
效果如图:
【0.3.0】服主可以在游戏内执行
/plugins
指令打开管理面板,设置每个插件是否输出更新提示;或是直接编辑.\\checkUpdate.json文件(不建议);对于开发者:
如果你看到了这里,我非常高兴。如果你有意尝试在你的插件里调用更新检测函数,以下是详细的指导。
- 首先,下载并安装这个插件。
- 导入函数。具体的导入方式参考对应的LLSE文档,如下是导入的示例:
JavaScript:
/* 首先导入并定义函数 * 参数"cup"是命名空间名称,所有有关更新检测的函数,命名空间一律为"cup" * 参数"checkUpdate"是函数名称,定位到了具体的某个函数。 * 这里将导入的函数命名为checkUpdate。你可以取任何名字。 */ const checkUpdate = ll.import(`cup`, `checkUpdate`);
- 当然,有一种情况是你的用户并没有安装这个插件。于是,在调用他之前,务必进行判断:
-
JavaScript:
if (!ll.hasExported(`cup`, `checkUpdate`)) { logger.warn(`检查更新失败!辅助插件CheckUpdate未安装。>>前往免费下载:https://www.minebbs.com/resources/checkupdate.4792/`); }
- 现在,你可以放心地调用函数了。具体的函数及其参数会在下文列举。
那么如何让你的用户知道你调用了这个插件?你可以在代码里进行判断,如果找不到这个函数就在后台输出警告;你也可以在帖子/教程里注明,建议用户一同安装这个插件。但是,未经允许请勿直接将插件一同整合!这个插件永远不会收费。
函数列表
checkUpdate(thisName, resourceID, thisVersion, messageList?)
- 参数
- thisName:
string
插件的名字,如MElevator.js - resourceID:
number
MineBBS中对应资源贴的ID,你可以在资源下载页面的地址栏中找到它。如图,这个资源的ID是4724
- (可选)thisVersion
number[] | string
运行插件的版本号,可以是数组(如[2, 3, 1],会自动转为"2.3.1")或字符串(如"1.19.31")。无论是哪种,请务必和MineBBS资源帖中输入的版本一致!这是版本比较的对象。如图,如果插件的版本是"1.0.4"或者[1,0,4]则代表最新版本。 - 若不输入则自动调用LLAPI获取数组类型的版本。
- (可选)messageList
string[]
输出的信息列表。messageList[0]应为版本最新时输出的信息,messageList[1]则为版本不匹配时输出的信息。默认的格式为:JavaScript:messageList = [`插件[${thisName}]已是最新版本!`, `插件[${thisName}]版本过时!当前版本:${thisVERS.join(`.`)} 最新版本:%latest_version% 前往%url%下载最新版本。`]
- thisName:
- 效果
- 原理
- 这个函数调用了MineBBS的资源信息API,通过将对应资源的版本号与传入的版本号进行比较,判断插件是否最新。因此,你必须确保传入的版本格式与MineBBS中填写的格式对应。
setPluginData(thisName, targetID)
- 参数
- thisName:
string
插件名称; - targetID:
number
MineBBS中的资源ID;
- thisName:
- 效果
- 创建/更新这个插件的数据(包含名称、资源ID、路径、是否输出更新提示)
- 一般情况下,
checkUpdate()
函数中嵌套执行了这个函数,因此无需手动调用。
完整的调用示例
JavaScript:
const NAME = `MElevator`;
const VERS = [1,0,4];
const THISID = 4724;
mc.listen(`onServerStarted`, () => {
if (!ll.hasExported(`cup`, `checkUpdate`)) {
logger.warn(`检查更新失败!辅助插件CheckUpdate未安装。>>前往免费下载:https://www.minebbs.com/resources/checkupdate.4792/`);
} else {
checkUpdate(NAME + `.js`, THISID, VERS);
}
});
Q:怎么让用户下载这个插件?
A:可以通过ll.hasExported()函数判断函数是否被导出,若没有则输出控制台信息,给予玩家下载方式。但是不要整合插件!
Q:我必须在MineBBS上发布插件吗?
A:是的,更新检测原理就是对比插件版本和论坛里发布的资源版本,不匹配则提示版本过时。
Q:我的插件版本和论坛中资源的版本一样,为什么提示需要更新?
A:请检查你的两个版本号是不是真的一样。比如"2.3.1"和"2,3,1"就会被判断为两个不同的版本。因此,为了方便,在填写插件版本时要按照x.y.x的格式走。
A:可以通过ll.hasExported()函数判断函数是否被导出,若没有则输出控制台信息,给予玩家下载方式。但是不要整合插件!
JavaScript:
if (!ll.hasExported(`cup`, `checkUpdate`)) {
logger.warn(`检查更新失败!辅助插件CheckUpdate未安装。>>前往免费下载: https://www.minebbs.com/resources/checkupdate.4792/`);
}
Q:我必须在MineBBS上发布插件吗?
A:是的,更新检测原理就是对比插件版本和论坛里发布的资源版本,不匹配则提示版本过时。
Q:我的插件版本和论坛中资源的版本一样,为什么提示需要更新?
A:请检查你的两个版本号是不是真的一样。比如"2.3.1"和"2,3,1"就会被判断为两个不同的版本。因此,为了方便,在填写插件版本时要按照x.y.x的格式走。
建议/问题反馈
如果你有任何疑问,或者发现了BUG,建议您移步GitHub反馈问题!
当然,直接回帖留言也可以。但是不要在评论中提问!
TO-DO待完成清单
- 新增函数:循环检测版本更新;
- 新增函数:在服务器内通过GUI表单通知OP插件更新;
- 新增功能:服主设置哪些插件显示更新提示;
- 新增功能:开发者调用函数一次性传插件数据,后续直接调用方便函数;
- 改进函数:添加版本最新是否输出提示的开关;
- *试图实现新版本覆盖。