Skip to content

自定义指令 ​

开发者可以通过在行为包中配置 JSON 来添加自定义指令。添加的自定义指令支持在聊天栏预览和 Tab 补全,支持与指令相关的所有事件及接口。通过 ModSDK 脚本监听指令触发事件,可以实现自定义的指令逻辑。

Demo

参考官方示例 CustomCommandDemo 了解自定义指令的完整实现。

概述 ​

自定义指令系统提供以下功能:

  • 通过 JSON 注册新指令并定义参数
  • 支持多种参数类型(浮点数、整数、布尔值、字符串、目标选择器、坐标等)
  • 支持在聊天栏输入时的 Tab 自动补全
  • 支持参数默认值
  • 支持参数变体(最多 10 套参数组合)
  • 通过脚本事件回调处理指令执行逻辑

待补充:自定义指令与原版指令系统的交互说明。

指令 JSON 配置(netease_commands/) ​

在行为包的 behavior 目录下新建 netease_commands/ 目录,创建指令定义的 JSON 文件。

文件命名

JSON 文件命名推荐格式为 团队名_模组命名空间_指令名称,例如 myTeam_myMod_explode.json。文件名应使用英文、数字和下划线,不可含有中文和特殊字符。

基本格式 ​

json
{
  "format_version": "0.0.1",
  "name": "mycommand",
  "description": "我的自定义指令",
  "permission_level": "game_directors",
  "args": [
    {"name": "目标", "type": "target"},
    {"name": "数量", "type": "int", "default": 1}
  ]
}

顶层字段说明 ​

字段类型默认值说明
format_versionstring—格式版本,请填写 0.0.1
namestring—指令名称
descriptionstring—指令描述,支持在 zh_CN.lang 中定义
permission_levelstringgame_directors权限等级

待补充:指令名称的命名规范与限制。

指令参数类型 ​

args 数组中每个对象定义一个参数,参数的输入顺序由数组顺序决定。

参数类型type 值说明
浮点数float浮点数值
整数int整数值
布尔值booltrue 或 false
字符串str文本字符串
目标选择器target如 @s、@a、@p
坐标pos三维坐标 [x, y, z]
实体类型entity实体标识符
物品类型item物品标识符

注意

含有 default 的参数必须排在参数列表的尾部,且在游戏中可以不传。default 值不必和 type 的类型符合。

待补充:各参数类型的详细输入格式与验证规则。

Tab 补全 ​

自定义指令在聊天栏中输入 / 后会自动出现在指令提示列表中,输入指令名后参数会按照 args 中定义的顺序依次提示。

待补充:Tab 补全的行为细节与自定义提示文本。

脚本回调处理 ​

开发者需要监听 CustomCommandTriggerServerEvent 事件来为自定义指令编写执行逻辑。

python
# 监听自定义指令事件
self.ListenForEvent(serverApi.Engine, serverApi.Engine,
    'CustomCommandTriggerServerEvent', self, self.OnCustomCommand)

def OnCustomCommand(self, args):
    command_name = args.get("command")
    # 处理指令逻辑

相关接口与事件 ​

名称类型说明
CustomCommandTriggerServerEvent事件自定义指令触发时回调
SetCommand接口通过脚本触发指令
GlobalCommandServerEvent事件监听所有指令(含自定义)

待补充:事件参数详细说明、variant 字段用法。

权限控制 ​

通过 permission_level 字段控制指令的使用权限:

值说明
game_directors任何操作员可运行(含命令方块)
admin任何操作员可运行(不含命令方块)
host仅服务器主机可运行
owner仅专用服务器可运行
any任何人可运行

待补充:权限等级与游戏模式的关系说明。

配置变体 ​

通过 args1、args2 ... args9 可以额外配置多套参数组合,加上原来的 args,最多支持 10 套参数变体。玩家发送指令时,系统会自动匹配参数并通过 variant 字段标识使用了哪一套参数。

待补充:参数变体配置示例与 variant 值对应关系。

完整示例 ​

待补充:一个包含多参数类型和参数变体的完整自定义指令示例。

下一步 ​