The com.mojang folder structure
Regardless of which device you use, once you locate the root com.mojang directory, the internal folder tree is identical. Understanding which subfolder to use determines how Minecraft caches your files and whether your changes show up when you reload a world.
During active creation, you should always place your unzipped work inside the development folders rather than the standard pack folders. Packs placed in the standard folders are cached more aggressively and copied into world folders when applied, whereas development packs are referenced in place so you can leave your code editor open and test changes by simply exiting and re-entering the world.
When you apply a non-development pack to a world, or when you export and re-import a world template, Minecraft copies or links those packs inside the specific world folder under minecraftWorlds. Each world has its own gibberish folder name (a base64-like string); inside it, you can verify which packs are actually bound to that save by checking the world manifest registries.
| Subfolder | What goes here | When to use it |
|---|---|---|
| development_behavior_packs | Unzipped behavior pack folders under active editing | Everyday add-on development; reloads cleanly on world exit and re-entry |
| development_resource_packs | Unzipped resource pack folders under active editing | Everyday texture, model, UI, and sound work; reloads with /reload or world re-entry |
| development_skin_packs | Unzipped skin pack folders | Testing custom skin geometry and manifests before packaging |
| behavior_packs | Installed behavior packs imported via .mcpack or .mcaddon | Managed automatically by the game when importing finished packs |
| resource_packs | Installed resource packs imported via .mcpack or .mcaddon | Managed automatically by the game; used for Global Resources |
| minecraftWorlds/<world_id>/behavior_packs | Behavior packs copied directly into a specific world save | Checking which version of a pack is embedded in a world or server upload |
| minecraftWorlds/<world_id>/resource_packs | Resource packs copied directly into a specific world save | Inspecting or removing a pack stuck inside an exported world |
Windows 10 and Windows 11 paths (GDK and legacy UWP)
Windows is the primary platform for add-on authoring, and it currently has two possible locations for com.mojang depending on your game version. Historically, Minecraft for Windows ran as a Universal Windows Platform (UWP) app, which stored all user data deep inside the hidden AppData\Local\Packages folder. Starting in late 2024 and rolling out through 2025, Minecraft on Windows migrated to the Microsoft Game Development Kit (GDK), which moved the user data directory into AppData\Roaming.
When the game updates from a UWP build to a GDK build, it automatically migrates your worlds and packs to the new Roaming directory, but it often leaves the old UWP folder behind on your disk. A very common pitfall is editing files in a pinned Quick Access shortcut that still points to the old UWP directory while the game is actually reading from the new GDK directory. Always check both locations if your edits suddenly stop appearing in-game.
You can open either location quickly by pressing Win + R to open the Run dialog, pasting the environment-variable path from the table below, and pressing Enter. If you also test against Minecraft Preview, note that Preview maintains a completely separate installation folder alongside the main game.
| Windows Edition | Exact Run / Explorer Path | Notes |
|---|---|---|
| Retail (New GDK build) | %APPDATA%\Minecraft Bedrock\Users\Shared\games\com.mojang | Default location for updated Windows installations. Sometimes sits under a numeric Xbox user ID folder alongside Shared. |
| Preview (New GDK build) | %APPDATA%\Minecraft Bedrock Preview\Users\Shared\games\com.mojang | Used by Minecraft Preview on GDK builds. |
| Retail (Legacy UWP build) | %LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang | Older installations prior to the GDK transition. Check here if Roaming does not exist. |
| Preview (Legacy UWP build) | %LOCALAPPDATA%\Packages\Microsoft.MinecraftWindowsBeta_8wekyb3d8bbwe\LocalState\games\com.mojang | Older Preview builds prior to the GDK transition. |
Android and iOS / iPadOS paths
On mobile devices, the first thing you must check inside Minecraft is Settings > Storage > File Storage Location. If this dropdown is set to Application, the game stores all worlds and packs inside an internal root-only sandbox that you cannot reach without a rooted or jailbroken device. To access com.mojang with a file manager or USB cable, you must switch File Storage Location to External.
On Android 11 and newer, Google introduced Scoped Storage, which moved the External folder out of the old top-level /games/com.mojang path and into the app-specific Android/data directory. Built-in Android file apps usually block access to Android/data. To edit files directly on modern Android, either connect the phone to a PC via USB in File Transfer mode, or use a third-party file manager that supports Android's Storage Access Framework or Shizuku.
On iOS and iPadOS, setting storage to External exposes the game directory inside the built-in Apple Files app. Open the Files app, navigate to On My iPhone (or On My iPad), open the Minecraft folder, and follow games > com.mojang. You can drag and drop unzipped folders into development_behavior_packs and development_resource_packs directly through the Files app or via Finder / iTunes File Sharing when plugged into a computer.
| Mobile Platform | External Storage Path | Access Method |
|---|---|---|
| Android 10 and newer | /storage/emulated/0/Android/data/com.mojang.minecraftpe/files/games/com.mojang | USB cable to PC, or a file manager capable of reading Android/data. |
| Android 9 and older | /storage/emulated/0/games/com.mojang | Any standard Android file manager. |
| iOS / iPadOS | On My iPhone (or iPad) / Minecraft / games / com.mojang | Built-in Apple Files app, or Finder / iTunes File Sharing over USB. |
Bedrock Dedicated Server (BDS) and Consoles
If you are testing an add-on on the official Bedrock Dedicated Server (BDS) for Windows or Linux, there is no com.mojang folder. Instead, the server executable reads directly from the folder where you extracted the server zip. You will find behavior_packs, resource_packs, and development_behavior_packs sitting right next to bedrock_server.exe (or bedrock_server on Linux), and your world saves sit inside the worlds/ directory.
Consoles (Xbox, PlayStation, and Nintendo Switch) lock down their file systems and do not provide user access to a com.mojang directory for manual file editing. Even file explorer workarounds on consoles have been restricted by platform updates. To test an unreleased add-on on a console, place the pack in your development folders on a Windows PC or mobile device, host a world with the pack enabled, and join that world over LAN or Xbox Live from the console. Alternatively, upload the world with the pack applied to a Realm from PC or mobile, then download or join the Realm on the console.
How worlds link to installed and development packs
Simply dropping a folder into development_behavior_packs makes the pack appear in the Create New World or Edit World menu, but a world will not actually load the pack until it is registered in that world's configuration files. Inside minecraftWorlds/<world_id>/, Minecraft maintains two JSON files at the root of the world save: world_behavior_packs.json and world_resource_packs.json.
When you activate a pack in the world settings UI, Minecraft writes the pack's header UUID and version array into the corresponding JSON file. If the pack came from development_behavior_packs, the game leaves the files inside development_behavior_packs and resolves them by UUID every time the world starts. If the pack was imported as a normal .mcpack into behavior_packs, the game often copies the entire pack folder into minecraftWorlds/<world_id>/behavior_packs/ so the world remains self-contained.
Knowing this structure is essential both for Bedrock Dedicated Server setup (where you have no UI and must write world_behavior_packs.json by hand) and for debugging when a world refuses to load the latest version of your manifest. Below is a valid manifest and the matching world_behavior_packs.json entry that links it to a world.
{
"format_version": 2,
"header": {
"name": "Example Dev Behavior Pack",
"description": "Placed in development_behavior_packs for live editing",
"uuid": "d8f1a4c0-5b2e-4f9a-8c1d-3e7b6a2f1c90",
"version": [1, 0, 0],
"min_engine_version": [1, 21, 0]
},
"modules": [
{
"type": "data",
"uuid": "a3c9e1b2-7d4f-4a8e-9b2c-1f5d8e3a7b41",
"version": [1, 0, 0]
}
]
}Registering the pack inside the world folder
When the behavior pack above is active on a world, the world folder's world_behavior_packs.json file contains an array of objects pairing each pack_id (which must match header.uuid in BP/manifest.json, never the module UUID) with its exact version array. If you bump the version in your development manifest from [1, 0, 0] to [1, 0, 1] without updating or re-applying the pack in the world, the world will either complain that the pack is missing or silently load an older cached copy.
[
{
"pack_id": "d8f1a4c0-5b2e-4f9a-8c1d-3e7b6a2f1c90",
"version": [1, 0, 0]
}
]Which versions this applies to
Folder layout inside com.mojang applies to all Bedrock Edition versions (1.16 through 1.21+). The Windows GDK path under %APPDATA%\Minecraft Bedrock applies to Windows builds migrated from late 2024 onward. No experimental toggles are needed.
When it does not work
| What you see | Why | The fix |
|---|---|---|
| You place a pack in development_behavior_packs on Windows, or edit an existing file, and the pack does not show up in the game at all. | Your Windows installation has migrated from the legacy UWP build to the GDK build, so the game is now reading from %APPDATA%\Minecraft Bedrock\Users\Shared\games\com.mojang while you are still editing files in the leftover %LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe folder. | Open %APPDATA%\Minecraft Bedrock\Users\Shared\games\com.mojang in File Explorer, move your development packs there, and update any editor workspaces or Quick Access shortcuts. |
| The pack is inside development_behavior_packs in the correct com.mojang directory, but it does not appear in the Available Behavior Packs list. | Either you zipped the folder or created an extra wrapper folder so the path is development_behavior_packs/my_pack/my_pack/manifest.json, or manifest.json contains a JSON syntax error such as a trailing comma. | Ensure manifest.json sits directly inside your pack folder (development_behavior_packs/my_pack/manifest.json) and enable Content Log File or Content Log GUI in Settings > Creator to read the exact manifest parse error. |
| You edit a file inside development_behavior_packs, reload the world, and the world still runs the old version of your pack. | You previously imported the same pack (with the same UUID) via a .mcpack file, which placed a copy inside the main behavior_packs folder or directly inside minecraftWorlds/<world_id>/behavior_packs. Minecraft gives precedence to the world-embedded or installed copy over the development folder. | Delete the duplicate copy from com.mojang/behavior_packs and from minecraftWorlds/<world_id>/behavior_packs so only the copy in development_behavior_packs remains. |
| On Android or iOS, the com.mojang folder is completely empty or missing when browsing from a file manager. | Inside Minecraft Settings > Storage, the File Storage Location option is still set to Application, which hides all game data inside the private app sandbox. | Change File Storage Location to External in Settings > Storage, then create a dummy world or restart the game so Minecraft initializes the external directory tree. |
Reference, straight from the game files
Read out of the game itself, so the ids match the version you are building for.
