Skip to content

CA-reforged 命令库文件格式说明

INFO

由 南鸢晨星 根据代码进行的整理,可能存在错误

基本信息

  • name:拓展包名字,标识该命令库的主题或用途。
  • author:作者,制作该命令库的个人或团队。
  • description:描述,简要说明该命令库的内容和特点。
  • uuid:唯一标识符,用于区分不同的命令库。
  • version:版本号,表示该命令库的当前版本。
  • require:依赖项,列出该命令库依赖的其他资源或扩展。
  • minSupportVer:最小支持版本,表示该命令库支持的最低游戏版本。
  • targetSupportVer:目标支持版本,表示该命令库主要支持的游戏版本。

载荷

数据

  • commands:命令集合,包含该命令库定义的所有命令及其参数。

  • idlist:ID列表,列举了该命令库包含的各类ID类型及其对应的名称。

  • enums: ID枚举,与前面的ID列表配套

  • selectors: 选择器枚举

  • json:命令中会用到的json格式,例如 物品组件

  • help:wiki链接

版本包

  • versionPack:一样是包含 数据 的内容,但是进行版本控制
    • idtable:用于管理游戏中不同实体ID的结构
    • 版本号:用于控制不同版本的命令

大致框架:

json
{ // 基本信息
    "name": "拓展包名字 默认命令库",
    "author": "作者... CA制作组",
    "description": "描述... 该命令库基于Minecraft PE ... 的命令,大部分由CA制作组成员ProjectXero整理。",
    "uuid": "acf728c5-dd5d-4a38-b43d-7c4f18149fbd",
    "version": [
        1,
        0,
        0
    ],
    "require": [
        "acf728c5-dd5d-4a38-b43d-7c4f18149fbd"
    ],
    "minSupportVer": "0.7.4",
    "targetSupportVer": "1.18.0.23",
    // 数据
    "commands": {},
    "idlist": [
        {
            "name": "方块",
            "list": "block"
        }
    ],
    "enums": {
        "block": {
            "command_block": "命令方块"
        }
    },
    "selectors": {
        "m": {
            "type": "enum", //类型
            "name": "游戏模式", //名字
            "list": "gamemode", //id枚举
            "hasInverted": true //可反选?
        }
    },
    "rawtext": {
        "rawtext": {
            "type": "object",
            "children": {
                "text": {
                    "type": "array",
                    "name": "要发送的文本",
                    "children": {
                        "type": "string"
                    }
                },
                "score": {
                    "type": "array",
                    "name": "没有写完...",
                    "children": {
                        "type": "string"
                    }
                }
            }
        }
    },
    "json": {
        "block_selector": {
            "type": "object",
            "children": {
                "blocks": {
                    "type": "array",
                    "name": "方块列表",
                    "children": {
                        "type": "string",
                        "suggestion": "block"
                    }
                }
            }
        },
        "item_component": {
            "type": "object",
            "name": "物品组件",
            "children": {
                "minecraft:can_place_on": {
                    "name": "冒险模式下仅能放置于……方块上",
                    "extends": "block_selector" // 引用之前定义的block_selector
                }
            }
        }
    },
    "help": {
        "command": "https://zh.minecraft.wiki/%E5%91%BD%E4%BB%A4"
    },
    // 版本包
    "versionPack": {
        "idtable": {
            "mode": "overwrite",
            "maxSupportVer": "1.1.*",
            "enums": {
                "item": {},
                "block": {},
                "entity": {}
            }
        },
        "0.16.0": {
            "commands": {
                "say": {
                    "description": "向所有在线玩家广播信息",
                    "patterns": {
                        "default": {
                            "params": [
                                {
                                    "type": "text",
                                    "name": "信息"
                                }
                            ]
                        }
                    },
                    "help": "https://zh.minecraft.wiki/%E5%91%BD%E4%BB%A4/say"
                }
            }
        }
    }
}

命令部分

INFO

可能需要补充,欢迎大家来完善文档

绝对不是我现在在写命令部分才写这个的qwq
这里指的是 commands 部分

参数格式

这是一个命令的基础格式

json
"camera": {
    "description": "修改玩家的相机视角",
    "patterns": {
        // 这里是不同的参数格式

        "camera_clear": {
            "description": "修改玩家的相机视角", // 这里是说明
            "params": [
                // 这里是参数
            ]
            // ...
        },

        "camera_fade": {
             "description": "使玩家视角逐渐变为黑色,维持一段时间后逐渐恢复", // 这里是说明
            "params": [
                // 这里是参数
            ]
            // ...
        },
        // ...
        "help": "https://zh.minecraft.wiki/w/%E5%91%BD%E4%BB%A4/camera"
    }
}

alias - 重定向

可用于重定向命令,比如 /teleport 命令和 /tp 命令是同一个命令

json
"tp": {
    "alias": "teleport"
}

description - 命令说明

命令的说明,描述该命令的功能和用途
显示在命令列表中camera - 修改玩家的相机视角

json
"camera": {
    "description": "修改玩家的相机视角"
}

params - 命令参数

命令的参数列表,包含不同类型的参数
详情见语法参数部分


help - 命令帮助链接

命令的帮助链接,指向该命令的详细说明页面,比如wiki页面

json
"camera": {
    "help": "https://zh.minecraft.wiki/w/%E5%91%BD%E4%BB%A4/camera"
}

语法参数

下面是一个简单的参数示例
你会看到两个选项
第一个是玩家选择器
第二个是clear - 清除选项

json
"params": [
    {
        "type": "selector",
        "name": "玩家"
    },
    {
        "type": "plain",
        "name": "clear",
        "prompt": "清除"
    }
]

通用参数

  • optional可选,表示该参数可以省略,通常以 [参数] 形式表示
    /give 命令中的 [数量:正整数] 参数可省略,默认值为 1
json
{
    "type": "uint",
    "name": "数量",
    "optional": true
}

  • suggestion可选,补全建议,用于提供参数的补全列表,与 enumlist 是一样的,均可传入 ID 或 对象
    /give 命令中的 <物品ID:文本> 参数(类型为 string)可补全物品 ID
json
{
    "type": "string",
    "name": "物品ID",
    "suggestion": "item"
}

selector - 选择器

实体选择器, 拥有两个参数:

  • name 显示在顶部提示 <玩家:实体>
  • target 限制选择器的补全列表,比如不能选择非玩家,在Reforged中废弃了
json
{
    "type": "selector",
    "name": "玩家",
    "target": "player" // 在Reforged中废弃了,可不写
}

uint - 非负整数(正整数)

我不到啊,@ProjectXero 写的是正整数,但是实际上是非负整数,比如0
拥有一个参数:

  • name 显示在顶部提示 <持续时间:正整数>
json
{
    "type": "uint",
    "name": "持续时间"
}

int - 整数

可含正负号的数,比如-1+11, 拥有一个参数:

  • name 显示在顶部提示 <物品特殊值:整数>
json
{
    "type": "int",
    "name": "物品特殊值"
}

float - 浮点数

可含正负号的整数或小数,比如-1+1.11.2, 拥有一个参数:

  • name 显示在顶部提示 <音量:数值>
json
{
    "type": "float",
    "name": "音量"
}

plain - 固定字符串

固定的选项,比如/scoreboard players中的players, 拥有两个参数:

  • name 显示顶部和选项 players
  • prompt 用于在列表提示 players - 管理对象的记分项分数
json
{
    "type": "plain",
    "name": "players",
    "prompt": "管理对象的记分项分数"
}

relative - 相对坐标

单个坐标值,比如~1,~-1.1,+1.2, 拥有一个参数:

  • name 显示在顶部提示 <水平旋转值:数值>
json
{
    "type": "relative",
    "name": "水平旋转值"
}

position - 三维坐标

三维坐标值,支持相对坐标和绝对坐标,如~1 ~2 ~3-1 +2 3~-1 ~2 3等, 拥有一个参数:

  • name 显示在顶部提示 <位置:x y z>
json
{
    "type": "position",
    "name": "位置"
}

string - 字符串文本

文本,优先按" "然后是空格匹配,
拥有一个参数:

  • name 显示在顶部提示 <名称:文本>
json
{
    "type": "string",
    "name": "名称"
}

enum - 预定义枚举值

预定义的枚举值,
拥有三个参数:

  • name 显示在顶部提示 <结构ID:列表>
  • list 指定枚举列表的 ID 或 对象
json
{
    "type": "enum",
    "name": "结构ID",
    "list": "structure"
}

或者

json
{
    "type": "enum",
    "name": "维度",
    "list": {
        "overworld": "主世界",
        "nether": "下界",
        "the_end": "末地"
    }
}

custom - 自定义类型

自定义类型,使用正则表达式判断,
拥有四个参数:

  • name 显示在顶部提示 <等级:数值>
  • vtype 显示在顶部提示类型 <等级:数值>
  • input 用于判断匹配的正则表达式
  • finish 用于匹配完成的正则表达式
json
{
    "type": "custom",
    "name": "等级",
    "vtype": "数值",
    "input": "^(\\+|-)?(\\d+([Ll])?)?",
    "finish": "^(\\+|-)?\\d+[Ll]"
}
---

command - 命令

命令,直接补全命令,
拥有一个参数:

  • name 显示在顶部提示 <命令>
json
{
    "type": "command",
    "name": "命令"
}

subcommand - 子命令

带前缀的命令,例如 execute 中的子命令,如asatrun等, 拥有两个参数:

  • name 显示在顶部提示 <子命令>
  • mainCommand 指定的命令前置
json
{
    "type": "subcommand",
    "name": "子命令",
    "mainCommand": "execute"
}

text - 文本

文本,匹配剩余所有部分,不带有任何补全机制,
拥有一个参数:

  • name 显示在顶部提示 <内容:文本>
json
{
    "type": "text",
    "name": "内容"
}

rawjson - 原始 JSON 文本

最后的文本,匹配剩余全部输入,不带有任何补全机制,
拥有一个参数:

  • name 显示在顶部提示 <标题:文本 JSON>
json
{
    "type": "rawjson",
    "name": "标题"
}

nbt - NBT 数据

NBT 数据,匹配剩余全部输入,提供 "插入JSON" 菜单按钮(与json类型一致,只是提示不同),
拥有一个参数:

  • name 显示在顶部提示 <数据:数据标签>
  • component 可选,指定 JSON 组件的 ID,这里省略
json
{
    "type": "nbt",
    "name": "数据",
    "component": "..."
}

json - JSON 数据

JSON 数据,匹配剩余全部输入,提供 "插入JSON" 菜单按钮, 拥有两个参数:

  • name 显示在顶部提示 <数据:JSON>
  • component 可选,指定 JSON 组件的 ID,例如这里是 item_component 物品组件
json
{
    "type": "json",
    "name": "数据标签",
    "component": "item_component"
}