Config Schema

Every command except init, version, and manifest loads config.json. Lookup order is --config, then ./config.json, then ./bedrock.config.json. Unknown extra keys are ignored.

{
  "type": "minecraftBedrock",
  "name": "my-addon",
  "targetVersion": "1.21.0",
  "namespace": "my_addon",
  "packs": { "behaviorPack": "packs/BP", "resourcePack": "packs/RP" },
  "worlds": [],
  "bb": {
    "version": "1.0.0",
    "entry": "src/main.ts",
    "out": "dist",
    "deploy": { "target": "retail", "customPath": null },
    "extensions": []
  },
  "minecraft": { "serverVersion": "2.0.0" }
}

Top level keys

Key Description
name Project name. Non-empty string. Also the deploy folder name.
targetVersion Minecraft target version. Maps to the server API version.
packs.behaviorPack BP source dir. Default is packs/BP.
packs.resourcePack RP source dir. Default is packs/RP.
namespace Identifier prefix per the standard Bedrock format. bb.namespace stays as fallback. Derived from name when both are omitted.
worlds Glob list of world folders per the standard. Default is empty. Read but not written by bb.

bb keys

Key Description
bb.namespace Legacy identifier prefix. Top-level namespace wins when both exist.
bb.version Project version. Falls back to package.json version. Must be semver.
bb.entry Script entry. Defaults to src/main.ts, then src/main.js when the ts file is missing.
bb.out Output dir. Default is dist.
bb.deploy.target retail or custom. Default is retail.
bb.deploy.customPath Data dir for custom target. Required when target is custom.
bb.extensions Array of non-empty extension names or paths. Optional.
bb.extensions[].settings Optional JSON object passed to that extension. String entries use an empty object.

Validation

Version must be semver. Both pack dirs must exist with a manifest.json each. The entry file must exist. Custom deploy needs a non-empty customPath. Failures exit with code 2 and name the missing piece.