Wiki 9Minecraft Wiki 9Minecraft

Software and Preparation for Bedrock Add-on Development

Set up your tools, game folders, and logging environment before writing your first Bedrock add-on.

5Sections
2Code examples
3Known errors

Before you write a single component or draw a texture, you need a working development environment that catches syntax errors early and loads changes straight into Minecraft Bedrock Edition. Setting up the right code editor, locating the game's internal development folders, and turning on the in-game error log will save you hours of blind troubleshooting. Reach for this guide when preparing a new machine or when your packs refuse to appear inside the game.

Core Software Stack

At its core, a Bedrock add-on is a collection of plain text JSON files, PNG textures, OGG audio files, and optional JavaScript or TypeScript files. You do not need heavy game engines to build one, but using standard operating system tools like Windows Notepad or Paint will actively work against you. Notepad lacks syntax highlighting to warn you about missing commas, and standard Paint strips out the alpha channel transparency that Minecraft relies on for items, foliage, and entity layers.

Visual Studio Code is the industry standard editor for Bedrock development. On its own, it provides fast file search, bracket matching, and a built-in terminal. When paired with the Blockception's Minecraft Bedrock Development extension, it gains real-time schema validation, autocomplete for components, and inline warnings when you place an entity component inside a block file. If you prefer an environment that builds the file tree for you through menus and templates rather than raw code, Bridge. is a dedicated Bedrock IDE that handles UUID generation and pack linking automatically.

For 3D models and animations, Blockbench is mandatory. Unlike general-purpose 3D software such as Blender, Blockbench exports directly to the Bedrock geometry and animation JSON formats, lets you set up bone pivot points visually, and includes a built-in UV editor and texture brush. For 2D pixel art and UI textures, use a dedicated raster editor that respects indexed palettes and full alpha transparency, such as Aseprite, Libresprite, Paint.NET, or GIMP.

CategoryRecommended ToolWhy It Matters for Bedrock
Code EditorVisual Studio CodeHandles large JSON trees, integrates with TypeScript compilers, and supports Bedrock schema extensions.
Dedicated IDEBridge.Automates manifest creation, file structure, and custom syntax compilation for beginners and teams.
3D & AnimationBlockbenchNatively reads and writes Bedrock geometry, bone structures, attachables, and particle emitters.
2D Pixel ArtAseprite / Paint.NETPreserves clean pixel edges and supports true RGBA transparency without leaving white halos on items.
Audio EditingAudacityConverts WAV and MP3 audio into mono or stereo OGG Vorbis files, which is the only format Bedrock streams reliably.

Configuring Visual Studio Code for Bedrock JSON

When you install Visual Studio Code, you should configure a workspace settings file at the root of your project to prevent common formatting pitfalls. Minecraft Bedrock allows comments inside most JSON files, even though the strict JSON specification forbids them. By default, VS Code flags double-slash comments inside a .json file as critical syntax errors, filling your problem tab with false alarms.

You can fix this by mapping standard .json files to the JSON with Comments language mode inside a .vscode/settings.json file. This configuration also lets you exclude image and audio files from the quick-search bar when you are rapidly jumping between behavior definitions, and ensures your indentation stays consistent across every file in the pack.

.vscode/settings.json
{
  "files.associations": {
    "*.json": "jsonc",
    "*.material": "jsonc",
    "*.lang": "properties"
  },
  "editor.tabSize": 2,
  "editor.insertSpaces": true,
  "files.trimTrailingWhitespace": true,
  "search.exclude": {
    "**/*.png": true,
    "**/*.tga": true,
    "**/*.ogg": true,
    "**/*.fsb": true
  }
}

Locating the com.mojang Directory and Development Folders

Minecraft Bedrock stores all local worlds, cached Marketplace content, and loose add-on files inside a master folder named com.mojang. On Windows 10 and Windows 11, the location of this folder changed when the game migrated to the modern GDK architecture. On modern installations, it sits inside your user AppData Roaming directory under Minecraft Bedrock, nested inside a Users folder that contains a long numeric identifier folder or a Shared folder. On older UWP installations, it lived deep inside AppData Local Packages under the Microsoft.MinecraftUWP package folder.

Inside com.mojang, you will find two pairs of pack folders: behavior_packs and resource_packs alongside development_behavior_packs and development_resource_packs. You must always build your work inside the development_ folders. When you attach a pack from the development folders to a test world, the game links to it by reference rather than copying the files into the world folder. This means you can edit a JSON file, save it, and run the /reload command in-game (or exit and re-enter the world) to test your changes immediately.

Before touching your workspace, open Windows File Explorer, click the View menu, and enable File Name Extensions. Without this setting turned on, creating a new text document and naming it manifest.json actually creates a file named manifest.json.txt. Minecraft completely ignores files with the .txt extension, which is the single most common reason a brand-new creator's pack fails to show up in the game menu.

Creating a Baseline Verification Pack

Once you have located your development_behavior_packs folder and installed your editor, you should verify that your setup works by dropping in a minimal manifest. Create a new folder inside development_behavior_packs named setup_test_bp, and create a manifest.json file inside it.

Every manifest requires two completely unique Version 4 UUIDs (Universally Unique Identifiers): one inside the header block to identify the pack itself, and another inside the modules block to identify the data module. Never copy UUIDs from tutorials or reuse them between different packs. In VS Code, extensions can generate a fresh UUID with a keyboard shortcut, or you can generate them through an offline tool. If the game parses this file and shows your test pack in the Create New World menu under Behavior Packs, your folder path and file extensions are set up properly.

BP/manifest.json
{
  "format_version": 2,
  "header": {
    "name": "Workspace Verification Pack",
    "description": "Confirms that the development folder and Content Log are working.",
    "uuid": "d8a14c22-7b9e-4c1a-9e32-11a2b3c4d5e6",
    "version": [1, 0, 0],
    "min_engine_version": [1, 20, 80]
  },
  "modules": [
    {
      "type": "data",
      "uuid": "f4e3d2c1-b0a9-4876-8543-21fedcba9876",
      "version": [1, 0, 0]
    }
  ]
}

Enabling the Content Log for Debugging

Minecraft Bedrock does not crash when you write a broken block component or misspell an identifier; instead, it silently drops the broken component or skips the file entirely. If you do not turn on the internal error reporting system before you start working, you will have no idea why your custom entity is invisible or why your block refuses to drop loot.

Before loading into a test world, open the main Minecraft Settings menu from the title screen and scroll down to the Creator tab on the left sidebar. Turn on both Enable Content Log File and Enable Content Log GUI. When Content Log GUI is active, any syntax error, missing texture reference, or invalid Molang expression will immediately print a color-coded warning or error banner at the top of your screen the moment the pack loads or the asset is triggered.

During active gameplay, you can press Ctrl + H (or look in the Creator settings menu) to open the Content Log History panel. This screen lets you search through every log line emitted during your session and copy the exact file path and line number where a JSON failure occurred. Getting into the habit of checking this screen first whenever something behaves unexpectedly is the fastest way to debug an add-on.

Which versions this applies to

Applies to Minecraft Bedrock Edition 1.20.0 and newer. No experimental toggles are required to configure the workspace, load standard data manifests, or enable the Content Log.

When it does not work

What you seeWhyThe fix
The pack is inside development_behavior_packs, has a valid manifest.json, and has no errors, but it never appears in the in-game Behavior Packs list.Either Windows hid the true file extension and your file is actually named manifest.json.txt, or you placed your files inside the old UWP AppData Local folder while running a newer GDK installation of Minecraft that reads from AppData Roaming.Enable 'File name extensions' in Windows File Explorer and remove any trailing .txt extension. Verify which com.mojang directory your game actually uses by creating a new world in-game and checking the modification timestamps inside your minecraftWorlds folders.
The Content Log displays: [Json][error] Failed to parse manifest.json, or complains about duplicate UUIDs.You either copied the exact same UUID into both the header and modules sections of your manifest, or you duplicated an existing pack folder to start a new project without generating fresh UUIDs.Generate two brand-new Version 4 UUIDs and replace the strings in both header.uuid and modules.uuid. Every pack folder and every module within a pack must have its own distinct UUID.
You save changes to a block or entity file inside your workspace, run /reload in-game, and nothing changes.First, the /reload command only reloads functions and scripts; structural JSON files like blocks, items, and entities require leaving to the main menu and reloading the world. Second, if you originally imported your pack as a .mcpack file, the game copied it into the standard behavior_packs folder and is ignoring your development_behavior_packs edits.Save and quit to the title screen, then re-enter the world to apply JSON component changes. If changes still do not appear, check the world's active behavior packs list, remove any cached copy of the pack from the standard behavior_packs folder, and re-apply the version from your development folder.

Reference, straight from the game files

Read out of the game itself, so the ids match the version you are building for.