Console platform limitations
Unlike Windows, iOS, and Android, home consoles do not expose the `com.mojang` application data folder to the user, nor do they register the `.mcpack`, `.mcaddon`, or `.mcworld` file associations with the operating system. Plugging a USB drive containing a `.mcaddon` into a PlayStation or Switch will not give you an option to import it into Minecraft. Because of this restriction, every reliable installation method for consoles relies on preparing the world or server on a PC or mobile device first, and then letting the console sync the world or download the packs over the network.
On Xbox, various third-party file manager workarounds have existed over the years to inject files directly into the internal `development_behavior_packs` or `behavior_packs` directories. However, system updates frequently break these file managers or alter permissions on the UWP storage containers. Relying on direct file injection is fragile; using the built-in Realms cloud sync or LAN pack-caching mechanics is the only officially supported and update-proof workflow for add-on developers testing on console hardware.
| Method | Supported Consoles | Requires Subscription | Saves Locally to Console |
|---|---|---|---|
| Realms World Transfer | Xbox, PlayStation, Switch | Realms + Console Online Sub | Yes (can download world copy) |
| LAN Host Join | Xbox, PlayStation, Switch | None (if strictly offline LAN) | No (cached while connected) |
| Dedicated Server (BDS) | Xbox, PlayStation, Switch | Console Online Sub | No (cached while connected) |
Preparing your manifest for console transfer
When a console joins a LAN game or downloads a world from a Realm, it does not give the player a clean way to manually browse and activate missing resource packs if something goes wrong. To ensure the console pulls both halves of your add-on together, you should declare explicit `dependencies` inside your Behavior Pack's `manifest.json` pointing to the Resource Pack's `uuid` and `version`. When linked this way, activating the Behavior Pack on a world on your PC automatically attaches the corresponding Resource Pack, keeping the world bundle intact when uploaded to a Realm.
Pay close attention to the `min_engine_version` array inside the `header` block. Consoles generally auto-update to the latest retail release of Bedrock, so your `min_engine_version` must not exceed the version currently deployed on console networks. If you are developing on a PC running a Minecraft Preview build and set `min_engine_version` to that preview number, retail consoles will reject the pack during the world sync or network handshake.
{
"format_version": 2,
"header": {
"name": "Console Test Behavior Pack",
"description": "Behavior pack linked to resource pack for Realm and LAN sync.",
"uuid": "a18b2362-5c9b-4236-8a8d-41871667629a",
"version": [1, 0, 0],
"min_engine_version": [1, 20, 80]
},
"modules": [
{
"type": "data",
"uuid": "792c2544-3e11-4527-9d61-2633015b2069",
"version": [1, 0, 0]
}
],
"dependencies": [
{
"uuid": "f45d8901-2b4a-4e92-b910-8392017465bc",
"version": [1, 0, 0]
}
]
}Method 1: The Realms world transfer
The Realms method is the only reliable way to get a custom add-on running locally on a console for offline solo play. You will need a PC or mobile device running Bedrock Edition, an active Realms subscription (even the 2-player tier works), and the same Microsoft account signed into both the PC/mobile client and the target console.
First, import your `.mcaddon` or `.mcpack` files into Minecraft on your PC or mobile device. Create a new world (or edit an existing one), apply both your Behavior Pack and Resource Pack, and turn on the toggle labeled 'Require players to accept resource packs to join' in the Multiplayer or Resource Packs tab. Next, go to your Realm settings, select an active world slot, click 'Replace World', and upload the world you just configured. Wait for the upload and pack verification to finish.
Once uploaded, boot up Minecraft on your Xbox, PlayStation, or Switch. At this point, you can simply join the Realm and play with the add-on directly on the cloud server. If you want the world stored locally on your console—or if you want to cancel your Realm after transferring—open the Realm slot settings on your console, scroll down, and select 'Download World'. The console will download the level data along with the embedded `world_behavior_packs.json`, `world_resource_packs.json`, and the pack folders themselves into its internal save storage.
Method 2: Joining a PC or mobile LAN host
If you are actively developing an add-on and need to test how custom geometries, textures, or UI files render on a television screen or perform on Nintendo Switch hardware, uploading to a Realm after every edit is far too slow. Instead, keep the world on your development PC and host it over your local network.
Load the world with your add-on active on your PC, ensuring that Multiplayer is enabled in the world settings and 'Require players to accept resource packs to join' is checked. Connect your console to the exact same local network (Wi-Fi or Ethernet subnet) as your PC. On the console, navigate to the Friends tab; the PC host should appear under 'LAN Games'. When the console joins the session, it will prompt to download the Resource Pack from your PC and cache it in temporary storage while theBehavior Pack logic executes entirely on the PC host.
Be aware that every time you change a texture, model, or sound on your PC while testing via LAN, you must increment the `version` array in your `RP/manifest.json` (for example, from `[1, 0, 0]` to `[1, 0, 1]`). If you leave the version number identical, the console will load the older cached copy of the Resource Pack it downloaded during the previous join rather than pulling your updated assets.
Method 3: Bedrock Dedicated Server and DNS routing
For larger projects or persistent multiplayer testing, you can load your add-on onto an official Bedrock Dedicated Server (BDS) instance running on Windows or Linux. To install the add-on on BDS, extract your pack folders into the server's `development_behavior_packs` and `development_resource_packs` (or standard `behavior_packs` and `resource_packs`) directories, and then register their UUIDs and versions inside the world's `world_behavior_packs.json` and `world_resource_packs.json` files.
also open `server.properties` in the root of your BDS directory and set `texturepack-required=true`. This forces connecting console clients to download and apply the resource packs loaded on the server world.
Because Xbox, PlayStation, and Switch do not include an 'Add External Server' button by default due to platform holder restrictions, a console on your local network can only see the BDS instance if it appears under the LAN tab (which works automatically if the server and console share a LAN subnet and IPv4 broadcast traffic is permitted). If the server is remote, testers typically use a LAN broadcast relay application on a phone or PC on the same network, or configure custom DNS settings on the console to redirect one of the featured server entries to the custom server IP.
[
{
"pack_id": "a18b2362-5c9b-4236-8a8d-41871667629a",
"version": [1, 0, 0]
}
]Hardware and memory constraints on consoles
Getting an add-on onto a console is only half the problem; keeping it from crashing the client is the other. Consoles—especially the Nintendo Switch and base Xbox One or PlayStation 4 hardware—operate under much tighter video memory (VRAM) and system RAM ceilings than a typical development PC. A resource pack containing dozens of 512x512 or 1024x1024 entity textures, high-poly `minecraft:geometry` models, or uncompressed `.wav` audio files may load instantly on Windows but cause a console to crash to the dashboard during the 'Generating World' or 'Downloading Resource Packs' screen.
Furthermore, consoles enforce strict local storage quotas for Minecraft save data and cached marketplace/server packs. On Nintendo Switch, the total space allocated for cached resource packs and world downloads is small. If your `.mcaddon` exceeds a few dozen megabytes, or contains thousands of tiny loose JSON files, the Realms upload/download parser on console is notorious for timing out. Keep textures at 16x16 or 32x32 where possible, use `.ogg` for all custom sound files, and remove unused template files before packaging your add-on for console testing.
Which versions this applies to
Applies to all modern retail Bedrock Edition versions on Xbox One, Xbox Series X|S, PlayStation 4, PlayStation 5, and Nintendo Switch. If your add-on uses experimental features (such as Beta APIs in `@minecraft/server`), those experimental toggles must be enabled on the world on PC or mobile before uploading to a Realm or hosting over LAN.
When it does not work
| What you see | Why | The fix |
|---|---|---|
| Console player joins the Realm or LAN world, custom behaviors work, but custom blocks and entities render as missing textures (magenta and black checkerboards) or invisible models. | The Resource Pack was not forced by the world settings, or the console cached an older broken build of the pack with the same version number. | Check 'Require players to accept resource packs to join' in the world's Resource Packs settings on the host/PC, bump the version array (e.g., to [1, 0, 1]) in both RP/manifest.json and the BP dependency block, and re-upload or re-host the world. |
| When uploading the modded world to a Realm on PC, the game shows 'An error occurred' or stalls indefinitely at 'Verifying your world'. | Realms rejects worlds containing packs with malformed JSON files, missing manifest dependencies, or an excessive number of individual files inside the behavior or resource pack. | Validate all JSON files in your BP and RP for syntax errors (such as trailing commas), ensure your manifest format_version is 2, and strip out any unused textures, sounds, or development files (.git, .bbmodel, .psd) before importing the pack. |
| Console shows 'Incompatible client' or 'Could not connect: Outdated server!' when trying to download the world or join the LAN test session. | Your development PC is running Minecraft Preview or a slightly newer hotfix, or the min_engine_version in your manifest.json is higher than the current retail version installed on the console. | Host and upload from the standard retail release of Minecraft Bedrock, and set min_engine_version in both manifests to match or sit slightly below the current retail version number. |
| On Nintendo Switch or older consoles, the download bar for the Resource Pack reaches 100% and then freezes, or the game closes with a system software error. | The Resource Pack exceeds the console's available memory or temporary cache storage limit during decompression and texture atlas stitching. | Downscale high-resolution textures (avoid 256x and above for blocks and items), convert any .wav audio files to compressed .ogg format, and clear old cached packs in the console's Minecraft Settings > Storage menu. |
Reference, straight from the game files
Read out of the game itself, so the ids match the version you are building for.
