👌模组声明

介绍

NML与NCMS一样, 用mod.json文件来表示一个模组的信息. 但不同的是, NML用mod.json来定位模组, 如果一个文件夹中不存在一个有效的mod.json文件, 那么该文件夹就判定为不存在模组.

目前NML不支持在子文件夹下搜索mod.json, 如果是用于声明模组请直接放置在模组文件夹下. 额外的key并不会与NCMS冲突.

mod.json示例

解析

mod.json文件会按JSON格式等价解析成

public class ModDeclare
{
    public string name;                      // 模组名
    public string author;                    // 作者名
    public string version;                   // 版本
    public string description;               // 描述
    public string iconPath;                  // 图标路径(相对于mod.json所在文件夹)
    public string RepoUrl;                   // 仓库地址
    public string[] Dependencies;            // 硬依赖
    public string[] OptionalDependencies;    // 软依赖
    public string[] IncompatibleWith;        // 不兼容模组列表(未实现)
}

其中, 模组名和作者名尽量不要包含特殊符号

在运行时, 会使用"作者名_模组名"并取大写作为模组的ID, 其中属于ASCII码但不是数字或字母的字符会被替换为下划线. 如

作者名
模组名
ID

Nikon#7777

Example Mod

NIKON_7777_EXAMPLE_MOD

一米

中文名

一米_中文名

仓库地址

可以不填, 一般用于反馈bug或建议. 在模组列表中通过一个按钮访问(不知道怎么描述, 懂得都懂).

硬依赖

应当是模组ID的数组. 当所有硬依赖的模组均编译成功时, 该模组才会编译加载.

软依赖

应当是模组ID的数组. 其中的某个模组编译成功后, 该模组在编译时会加入编译成功的软依赖模组的ID作为宏(预定义常数)

不兼容模组列表

应当是模组ID的数组. 其功能未实现

图标路径

相对于模组文件夹, 可以为空, 为空时, 图标默认为NML的图标

访问

当一个模组能够访问到ModDeclare时, ModDeclare已经经过NML处理, 具体的定义如下

public class ModDeclare
{
    // 模组名
    [JsonProperty("name")] 
    public string Name { get; private set; }
    // 模组ID
    public string UID { get; private set; }
    // 作者
    [JsonProperty("author")] 
    public string Author { get; private set; }
    // 版本
    [JsonProperty("version")] 
    public string Version { get; private set; }
    // 描述
    [JsonProperty("description")] 
    public string Description { get; private set; }
    // 仓库地址
    [JsonProperty("RepoUrl")] 
    public string RepoUrl { get; private set; }
    // 硬依赖模组ID数组
    [JsonProperty("Dependencies")] 
    public string[] Dependencies { get; private set; }
    // 软依赖模组ID数组
    [JsonProperty("OptionalDependencies")] 
    public string[] OptionalDependencies { get; private set; }
    // 不兼容模组ID数组
    [JsonProperty("IncompatibleWith")] 
    public string[] IncompatibleWith { get; private set; }
    // mod.json所在文件夹路径
    public string FolderPath { get; private set; } = null!;
    // 图标路径(相对于mod.json所在文件夹)
    [JsonProperty("iconPath")] 
    public string IconPath { get; private set; }
}

其中JsonProperty特性中的字符串表示解析时对应的key

Last updated