This describes the files and directories that blr create emits by default, plus optional files that blr understands later.
blr create currently defaults to a combined behavior-pack and resource-pack project. Pack folders are omitted when the corresponding feature is not selected.
my-project/
behavior_packs/
my-project/
manifest.json
resource_packs/
my-project/
manifest.json
.env.local # optional, user-created, ignored
src/ # only when scripting is enabled
main.ts | main.js
.gitignore
AGENTS.md
AGENTS.project.md
blr.config.json
package.json
README.md
tsconfig.json # TypeScript scripting projects only
Holds:
- package identity
- dependency versions
- generated package scripts
- package manager hint
Generated scripts:
devbuildpackageminecraftsystemworldcleanupgrade
Feature note:
- the generated dependency set depends on project features
scriptingadds Bedrock script dependenciesbebeadds@blurengine/bebefor the default scripting scaffold, unless that option is disabled explicitly- data-only pack projects keep
package.jsonleaner
Holds project-level blr state.
Default generated content:
$schemaschemaVersionprojectVersionnamespaceminecraft.channelminecraft.targetVersion
Default version note:
- generated projects default
minecraft.channeltostable minecraft.targetVersionis resolved from the latest stable Bedrock dedicated-server version available duringblr create- if that lookup fails,
blr createfalls back to its built-in default targetVersion instead of aborting scaffold generation
Optional later additions may include:
package.defaultTargetwhen the project wants bareblr packageto resolve to a specific targetworldbackend configuration when the project wants remote world storage
Managed bootstrap file written by blr.
Purpose:
- acts as the root agent entrypoint for generated projects
- contains the managed BlurEngine instructions compiled into one file
- tells agents to read
AGENTS.project.mdafter this file when it exists
blr upgrade refreshes this file.
Committed project-specific agent instructions.
Purpose:
- holds user-owned project rules
- is read after
AGENTS.md - is not overwritten by
blr upgrade
Minimal script entrypoint.
Notes:
- generated when scripting is enabled
- projects without scripting can add
src/main.tsorsrc/main.jslater andblrwill detect it automatically - scripting is only offered when a behavior pack is present
- when
bebeuses its default scripting scaffold, the generated entrypoint imports and initializes@blurengine/bebe - when
bebeis disabled, the generated entrypoint stays minimal and does not depend on@blurengine/bebe
Build note:
blr buildstages canonical output intodist/stage/- when a runtime entry exists, the bundled runtime still writes to
runtime.outFilefirst and is then synced intodist/stage/behavior_packs/<packName>/scripts/ blr dev,blr build --local-deploy, andblr packageall consume the staged outputblrdoes not rewritebehavior_packs/<packName>/scripts/main.jsinside the project by default
Behavior pack manifest generated with:
- header UUID
- data module UUID
- default pack version
- default min engine version
- script module UUID when scripting is enabled
- Bedrock script module dependencies when scripting is enabled
Generated only when the project includes the behavior-pack feature.
Resource pack manifest generated with:
- header UUID
- resource module UUID
- default pack version
- default min engine version
Generated only when the project includes the resource-pack feature.
Project-owned raw Bedrock world source.
Usage:
- used as the project-owned source world for BDS bootstrap/reset
- generated projects ignore
worlds/by default so local world materialization does not get committed accidentally - this nudges teams toward
blr world pull,blr world capture, andblr world pushinstead of treating raw world state as normal source-controlled content - projects that intentionally keep world sources in git can remove or narrow that ignore rule
- if
watch-worldandrestartOnWorldChangeare enabled, changes here trigger a BDS restart/reset - if
watch-worldis enabled,blr devcaptures the runtime BDS world back into this folder on shutdown blr world capturecan seed or refresh this folder from the current runtime BDS worldblr world use <worldName>can switch the active configured world and create the matching local folder when neededblr package world-templateuses this as the source world payloadblr world pullcan materialize this folder from a remote S3-compatible backendblr world pushcan publish this folder back to the configured remote backendblr createdoes not generate this folder by default because an empty folder looks like a valid world when it is not- world-aware commands require a real Bedrock world with a
db/directory
Optional project state file.
If present, blr applies it to BDS allowlist state.
If watch-allowlist is enabled, runtime BDS allowlist changes are copied back into this file during blr dev.
Optional project state file.
If present, blr applies it to BDS permissions state.
Optional project state file for Windows local-server runs.
If present, blr copies it into the resolved runtime BDS server directory and uses it as the local-server executable override.
Notes:
- this overrides the provisioned
bedrock_server.exein the runtime BDS folder - if the runtime BDS server is already provisioned,
blrreuses that server and applies the override without re-downloading the stock archive blr devprints a notice when the override is active
Generated defaults:
- managed
blrignore block with:node_modules/dist/.blr/worlds/.env.local.DS_Store
.blr/ is where the CLI keeps project-local runtime workspace such as cached/provisioned BDS state by default.
User note:
blrmanages its own ignore block inside this file- user-owned ignore entries can live outside that block
Optional machine-local environment file.
Purpose:
- stores secrets and machine-local overrides that should not live in
blr.config.json - common examples:
- AWS credentials for
blr world pull/blr world push BLR_MACHINE_LOCALSERVER_BDSVERSIONBLR_MACHINE_LOCALDEPLOY_MINECRAFTPRODUCTBLR_WORLD_ACTOR
- AWS credentials for
Behavior:
blrloads the closest.env.localautomatically for project-aware commands- values from the shell or CI environment still win because
.env.localdoes not override existing variables
Project-local quickstart and usage summary.
Generated README content is intentionally concise:
- actual generated directory structure for the selected project features
- the commands most likely to be used in day-to-day workflow
- a small notes section for config,
.env.local, and optional world state
Generated only for TypeScript scripting projects.
This is not created by create as committed source, but it is the default runtime workspace used by blr.
Typical contents may include:
- BDS zip cache
- provisioned BDS server files
- cached remote world archives and extracted world sources under
.blr/cache/worlds/ - CLI-owned transient state under
.blr/state/, such as prompt-silence state in.blr/state/cli.json - other CLI-owned runtime state
This belongs to the CLI runtime, not to blr.config.json.
During local-server runs, blr may also manage runtime world hook files such as:
world_behavior_packs.jsonworld_resource_packs.json
Those files are only written when the corresponding pack automation is enabled for the current project and current run.
Canonical staged build output.
Typical contents:
behavior_packs/<packName>/resource_packs/<packName>/
This is the source that local-deploy, local-server, and packaging targets consume.
Packaged distributable artifacts.
Current target:
<packName>.mctemplatefromblr package