{
  "blockCustomComponent": {
    "description": "Starts a very basic block custom component",
    "prefix": ["mc"],
    "body": [
      "import { world, system, BlockCustomComponent, BlockComponentStepOnEvent, BlockPermutation } from '@minecraft/server';",
      "",
      "export default class ExampleNewComponent implements BlockCustomComponent {",
      "  constructor() {",
      "    this.onStepOn = this.onStepOn.bind(this);",
      "  }",
      "",
      "  onStepOn(e: BlockComponentStepOnEvent): void {",
      "    e.block.setPermutation(BlockPermutation.resolve('minecraft:air'));",
      "  }",
      "}",
      "",
      "export function initExampleNew() {",
      "  system.beforeEvents.startup.subscribe(initEvent => {",
      "      initEvent.blockComponentRegistry.registerCustomComponent('example:newComponentId', new ExampleNewComponent());",
      "  });",
      "}"
    ]
  },
  "itemCustomComponent": {
    "description": "Starts a very basic item custom component",
    "prefix": ["mc"],
    "body": [
      "import { world, system, ItemCustomComponent, ItemComponentUseEvent } from '@minecraft/server';",
      "",
      "export default class ExampleNewComponent implements ItemCustomComponent {",
      "  constructor() {",
      "    this.onUse = this.onUse.bind(this);",
      "  }",
      "",
      "  onUse(e: ItemComponentUseEvent): void {",
      "    world.sendMessage('Item ' + e.itemStack?.typeId + ' is being used.');",
      "  }",
      "}",
      "",
      "export function initExampleNew() {",
      "  system.beforeEvents.startup.subscribe(initEvent => {",
      "      initEvent.itemComponentRegistry.registerCustomComponent('example:newComponentId', new ExampleNewComponent());",
      "  });",
      "}"
    ]
  }
}
