跳转至

自定义命令

署名信息

概述

bridge.允许你定义新命令,以便更轻松地编写长且复杂的函数。它们可以在.mcfunction文件和支持命令的JSON文件中使用。要开始使用,请导航到预设窗口中的“自定义命令”选项卡,并填写选项,包括你希望使用TypeScript还是JavaScript编写命令以及文件名。如果你在bridge.外部或在扩展中创建命令,则需要在BP/commands<扩展名称>/commands文件夹中创建一个js或ts文件。

执行范围

defineCommand

自定义命令可以访问defineCommand函数,其格式如下:

defineCommand({ name: (name: string) => void, schema: (schema: any) => void, template: (templateFunction: (commandArgs: string[]) => string[] | string) => void }): void

参数:

  • name(name: string): void 自定义命令的名称,将显示在自动补全中。

  • schema(schema: any): void 命令的架构。用于为自定义命令参数创建自动补全,应该按照bridge.的命令架构arguments属性的形式编写,以定义命令的参数。你还可以通过additionalData > schemaReference属性访问bridge.的内置自动补全。它们可以在这里找到,并应从data文件夹根目录引用,例如additionalData: { schemaReference: '/data/packages/minecraftBedrock/schema/general/slotType.json' }将访问槽位类型的自动补全。

示例:

schema({
  arguments: [
    { type: 'string', additionalData: { values: ['1', '2', '3'] } },
    { type: 'string', additionalData: { values: ['4', '5', '6'] } },
  ],
})
  • template(templateFunction: (componentArgs: string[]) => string[] | string): void templateFunction接收一个字符串,表示用户在命令后输入的参数。它应返回一个命令或命令列表,表示在编译时替换自定义命令的命令。

扩展清单

在扩展中创建自定义命令时,你需要在扩展清单中使用contributeFiles字段指定它应安装的位置。

示例

export default defineCommand(({ name, template, schema }) => {
  name('helloWorld')
  schema({
    arguments: [
      { type: 'string', additionalData: { values: ['1', '2', '3'] } },
    ],
  })

  template((names) => {
    return ['say Hello World!', ...names.map((name) => `say Hello ${name}`)]
  })
})