TalexFrame 想做的事,一句话说,是把 MC 服务端那套"主程序加插件"的做法搬到 Spring Boot 上。README 里的原话是:「受到 Minecraft服务端 Bukkit及系列框架 启发,针对主体功能进行框架化完善,对从属功能使用 ModulePlugin 进行解耦化操作」。这句话我现在读着有点绕。

第一次提交是 2022 年 1 月 19 号晚上九点半,不到二十四个小时之后,提交说明里就写上了 6.0.0 BaseFunction Completed。README 说它最早是给一个 MC 服务器写的后端,第一个版本号就是 6.0.0,前面几版大概是那时候的东西。全部分支加起来 133 次提交,一月份占了 42 次,二月只剩 3 次。

搬了什么

字面意义上我也搬了一点:org.bukkit.configuration 整个包,二十一个文件,直接放进了源码,插件的 YAML 配置就跑在上面。这大概是最省事的一块。

麻烦的是卸载。README 里有一条三月加的规矩:不要用 SpringBoot 的东西,要用框架自己的,因为 SpringBoot 的东西在插件卸载后会残留,这是非常严重的问题。

想把 Bukkit 搬进 Spring Boot,写下的规矩却是别用 Spring Boot 的东西,说起来有点好笑。不过这条在代码里是认真做的:每个插件一个类加载器,命令、监听、配置这些一共七种东西可以由插件注册,每种配一个适配器,有注册就有注销,只要有一个注销失败,PluginScanner 就让整个框架崩掉。

两级

插件分两级。README 的说法是,Addon 是重量级拓展,Plugin 是轻量级拓展,两者互补。

代码里叫 Addon 的,主要是请求那一层的钩子:登录检查、限流、缓存、权限,还有七种参数校验,自带的有十几个类。每个都能在请求前后各插一手,优先级分七档。基类上的注释写的是"请求插件"。

重和轻到底划在哪,README 没写,代码里我也看不出一条线。Addon 和 Plugin 这两个词,在我自己手里大概就没分清过。

只在 README 里的

README 里还有一大块 INature,意思是"自然处理",说要用集成的 AI 分析用户的语言,还说将在后续通过 AI 模型训练提高效率和准确率。

这一块是 7 月 26 号加的,那次提交的说明是 Upd<README>: Update README, english version waiting。main、develop、master 三个分支里,除了 README,搜不到任何一个文件提到 INature,它底下的几个接口也一样。Checker 也是,README 说它管框架的活性和耗能,顶层的 checker 包里只有一个 package-info.java。倒是 README 顺带一提的底层 FrameCreator,有二十二个文件在用。

三月那条规矩,代码里能找到对应的东西。七月这一块,什么也没有。

804

7.0.1.804-Official 是 8 月 4 号 0 点 31 分发布的,最后三位是月和日。7 月 10 号的一次提交里写着 7.0.0-preview.710,也是这么编的。

发布前的四十来分钟,提交记录是这样的。8 月 3 号 23 点 52 分,一次修复,说明写的是 Fix<MaxValueValidate>: forget!!,加了七行,删了三行。一过零点,这次修复被回滚了,几分钟后回滚又被回滚了。再后来提交了一份 Java 的崩溃日志,开头一句是 Java 在说内存不够,运行不下去了,大概是不小心带进去的。最后 develop 合进 main,main 上那次合并提交里,代码加了八行、删了四行,README 加了二十三行,那份日志有八百一十行。

发布页上挂的四个包,文件名里写的还是 7.0.0-SNAPSHOT。中午 12 点 52 分,master 分支上的 pom.xml 才被改成 7.0.1.803-Official,和发布页差了一天。这两个数是什么意思,仓库里没写,我猜 803 是代码写完的那天,804 是点发布的那天,中间隔着零点。

最后

最后一次提交是 2023 年 4 月 9 号早上 7 点 07 分到 09 分,两分半钟里连着四次 Update README.md,改的是英文版,INature 那一节也翻了过去。7 月 26 号我写的是 english version waiting,那一节的英文版等了八个多月。英文版里现在有了 INature,代码里还是没有。