服务端MOD的加载依赖于ModLoader模块,我们打开服务端源码目录/loaders/ModLoader.js,在load()方法下可以看到先后执行了两个方法importMods()和executeMods()。分别查看这两个方法内部的代码,根据注释可以得知MOD是如何加载和运行的。
在importMods()方法中,代码执行步骤如下:
① 利用方法VFS.exists()检测user文件夹中的mods文件夹是否存在,不存在则利用方法VFS.createDir()创建该文件夹
② 利用方法VFS.getDirs()获取MOD列表,并储存于mods这一常量对象中
③ 利用方法ModLoader.validMod()验证mods常量对象中每个MOD的有效性,该方法中会验证MOD的包文件package.json是否存在,然后会验证package.json文件中的name、author、version、license四个属性是否存在,最后会验证package.json中MOD的执行入口模块,即main属性所指向的.js是否存在且合法。
④ 如果所有MOD有效性都通过验证,则循环执行ModLoader.addMod()方法。该方法首先读取MOD文件夹中的package.json到内存,然后把数据转移到ModLoader模块的imported方法下。
executeMods()方法包含了调整或读取MOD加载顺序、导入MOD模块、加载MOD模块、后加载MOD模块和更新手册内容等,代码的具体内容可以自行研究理解。
本文转自:https://sns.oddba.cn/16676.html
© 版权声明
THE END
暂无评论内容