MP:InnerCore/模组结构

来自Minecraft基岩版开发Wiki

模组结构 [编辑] InnerCore下的模组是一个带有名为build.config的构筑文件的目录,其中也有一些附加的文件,比如有一个描述文件和一个标准配置文件(最后一个会自动被创建)。

如果你不想详细地构筑模组,你可以使用模组的标准模板,它将在下面展示。


配置和描述 [编辑]

配置文件 - config.json - 是JSON格式的,并且会自动生成或修复。enabled的值会一直存在,它决定了启用还是关闭整个模组。这个文件的内容会在模组菜单被可视化,模组菜单是通过InnerCore菜单打开的。编辑这个文件将会影响整个模组。

信息文件 - mod.info - 是JSON格式的,并且可能不会出现,但是如果这样的话就不会有关于这个模组的任何信息在InnerCore菜单中显示,并且模组的名字那里将会显示目录的名字等等。 mod.info文件的格式:

{

   "name": "模组的名字",
   "author": "模组的作者",
   "version": "模组的版本(任何格式皆可)",
   "description": "模组的简介"

} 同样的,模组的根目录下可以包含mod_icon.png文件,它将显示为InnerCore菜单中此模组的图标。唯有它的格式 - png - 是必要的,它的大小可以随便。


基本参数 [编辑] 构筑文件[译者按:是build.config]也是JSON格式的,并且它有几个部分组成,它们描述了模组的各种设定和元素。 第一个部分 - defaultConfig - 是必需的,并且它描述了构筑这个模组的主要参数。在它的参与下,构筑文件的内容应该看起来像这样(带有#号的注释不是必要的):

{

   "defaultConfig": {
       "api": "CoreEngine", #API,它会被所有所执行的文件默认使用,API选项将在下面被列出
       "buildType": "develop", #这个参数在开发时必须为develop,然后在使用InnerCore时可进行更改
       "libraryDir": "lib/", #一个可选的参数,用来指定库将从哪里被加载的默认目录
   }

} API指定了能被用在可执行模组文件中的几乎大部分的方法。然而,有一组基本方法是可用于特定类型的可执行文[译者按:可执行文件在本Wiki中专指js文件]的。

API的种类:

CoreEngine - 一个主要的和大部分的用以开发模组的广泛API。基本上你都需要使用它,其他的选择是情境性的并且大部分时候你都用不到。 AdaptedScript - 能实现基本的特性,但并不拥有能大大简化开发的内容,如方块实体。

可执行文件 [编辑] 可执行文件包含了这个模组的资源代码,它为所需的JavaScript API版本编写,根据它们的类型,它们将在不同的时间执行。你也可以从各个目录构筑它们,并在InnerCore菜单中编译成字节码,以便更快更好地调试(该模组的公开发布的版本)。

可执行文件以以下数组形式的compile部分被描述。这个编译部分可以有很多:

{

   "defaultConfig": {
       ...
   },
   ...
   "compile": [
       {
           "path": "文件的本地路径,例如main.js、source/logger.js",
           "sourceType": "可执行文件的类型,它们将在下面被列出",
           "sourceName": "名字,可选参数,在显示错误时会被调用",
           "api": "API种类,如果你想选择在defaultConfig中指定的错误类型的话,否则这个参数不是必须的"
       },
       ...
   ]

} 可执行文件种类:

mod - 这种文件包含了定义模组内容的主要源码。 launcher - 整个模组中只能有一个文件是这种类型的。它会在一个特定的时间开启这个模组(例如,如果你的模组使用了另一个模组的API,那么它会在那个模组加载后才会加载,等等)。如果无需什么额外的条件来运行,它就只需简单地包含一个Launch();命令。 library - 库。它能使用一些只有这种类型的文件才能访问的特殊方法,来注册一个模组可以使用的新API模块,如果这些库被导入的话。如果库文件位于libraryDir参数中指定的目录中,则不需要对其进行描述。 preloader - 一个特定的文件类型,它会在MCPE加载之前但资源加载之后执行,并且需要用它创建和修改它们。在编写这个文件时,使用了一种单独类型但仍然执行不力的API。 custom - 只有在一个特殊的方法 - runCustomSource() - 的帮助下它才能执行,并得从其他可执行文件中调用。它可以带一些参数。 更多关于每种可执行文件的信息和它们的特殊方法和值将在以后独立的章节中展开。


构筑可执行文件 [编辑] 可执行文件可以在不同独立的目录中编写,最后把构筑文件中描述的多个可执行文件整合在一起。这种方法允许你把代码分离到不同的文件中,而不是单独写一个庞大的文件。这不仅增加了可读性,而且允许你在编写时更好地编译模组并调试它。

构筑目录由buildDirs部分所规定,它也是一个数组:

{

   "defaultConfig": {
       ...
   },
   ...
   "buildDirs": [
       {
           "dir": "dir/to/build/", #构筑目录必须以/结尾
           "targetSource": "dir/to/source/file", #构筑的目标文件所在目录。注意:目标文件的内容在每次构筑中都会被完全重写,所以不要在这个文件中进行你的更改。
       },
       ...
   ]

} 构筑目录有以下规定:

它必须包含含有你想合并到一个可执行文件中去的代码的文件,它们可以在这个目录的子目录中,并且可以有各种各样的名字。 它必须包含.includes文件。这个文件按一定的顺序包含了所有本地的参与构筑文件的路径,它里面也可以有注释(用//或#)和空行。 .includes文件内容的实例: //假定这个.includes在dev/目录下

//这个文件必须位于dev/header.js header.js

//这些文件必须在dev/source/目录中 source/blocks.js source/items.js 明白这里每一个文件必须是一小段完整的代码是非常重要的,因为它们的每一个文件都是分开编译的。因此,你不能在其中一个文件中写一个开头,然后在另一个中写结尾。


资源 [编辑] 模组的资源分为两组 - 界面材质(GUI)和其他(方块、物品、模型的材质等等)。资源的种类将在一个单独的章节中展开。

资源目录在resources部分中描述,它的内容可以有很多很多:

{

   "defaultConfig": {
       ...
   },
   ...
   "resources": [
       {
           "path": "resource/dir/", #资源目录必须以/结尾
           "resourceType": "resource|gui", #资源加载的种类:resource - 游戏中的资源,gui - 界面材质
       },
       ...
   ]

} 关于资源及其应用的具体细节将在单独的章节中讨论。